From d64cb321f542323b9ecd41ceff3424ea6f388fc2 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 21 Aug 2025 00:27:54 -0500 Subject: [PATCH 1/3] Add comprehensive GitHub Copilot instructions for node-switchbot repository (#300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR adds a comprehensive `.github/copilot-instructions.md` file that provides GitHub Copilot coding agents with detailed instructions on how to work effectively in the node-switchbot codebase. ## Key Features **Validated Commands and Timing**: Every command has been tested from a clean environment with actual timing measurements: - `npm install`: ~5-25 seconds (varies by cache) - `npm run build`: ~5 seconds (TypeScript compilation) - `npm run test`: ~1 second (12 tests) - `npm run lint`: ~3 seconds (ESLint validation) **Platform-Specific Requirements**: Clear documentation of constraints: - BLE functionality requires Linux-based OS only (Raspbian, Ubuntu, etc.) - Windows and macOS are NOT supported for BLE operations - Node.js versions: ^20, ^22, or ^24 required - ES Modules: Project uses `"type": "module"` **Development Workflow**: Step-by-step instructions for common tasks: - Bootstrap and setup procedures - Build, test, and lint validation cycles - Adding new device support - Working with both BLE and OpenAPI interfaces **Manual Validation Scenarios**: Specific tests to run after making changes: ```javascript // Basic functionality validation const { SwitchBotBLE, SwitchBotOpenAPI } = require('./dist/index.js'); const ble = new SwitchBotBLE(); // Should not throw const api = new SwitchBotOpenAPI('test', 'test'); // Should not throw ``` **Timeout Warnings**: Explicit "NEVER CANCEL" warnings with timeout recommendations for all build operations to prevent premature cancellation of long-running commands. ## Project Structure Documentation The instructions include comprehensive information about: - Source code organization (`src/switchbot-ble.ts`, `src/switchbot-openapi.ts`, device classes) - Configuration files (TypeScript, ESLint, package.json) - Build output structure (`dist/` directory) - Documentation generation (TypeDoc) ## Validation Completed All instructions have been thoroughly validated by: - Following step-by-step procedures from a clean environment - Testing basic functionality scenarios - Verifying ES module imports work correctly - Confirming full development workflow chain - Measuring actual timing for all operations The instructions follow the required imperative tone ("Run [this command]", "Do not do [this]") and provide exhaustive guidance for GitHub Copilot agents to work effectively in this TypeScript Node.js library for controlling SwitchBot devices via Bluetooth Low Energy and OpenAPI. Fixes #299. --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: donavanbecker <9875439+donavanbecker@users.noreply.github.com> --- .github/copilot-instructions.md | 165 ++++++++++++++++++ docs/classes/Advertising.html | 8 +- docs/classes/SwitchBotBLE.html | 16 +- docs/classes/SwitchBotOpenAPI.html | 14 +- docs/classes/SwitchbotDevice.html | 24 +-- docs/classes/WoBlindTilt.html | 42 ++--- docs/classes/WoBulb.html | 38 ++-- docs/classes/WoCeilingLight.html | 44 ++--- docs/classes/WoContact.html | 26 +-- docs/classes/WoCurtain.html | 36 ++-- docs/classes/WoHand.html | 36 ++-- docs/classes/WoHub2.html | 26 +-- docs/classes/WoHumi.html | 40 ++--- docs/classes/WoHumi2.html | 40 ++--- docs/classes/WoIOSensorTH.html | 26 +-- docs/classes/WoKeypad.html | 26 +-- docs/classes/WoLeak.html | 26 +-- docs/classes/WoPlugMiniJP.html | 36 ++-- docs/classes/WoPlugMiniUS.html | 36 ++-- docs/classes/WoPresence.html | 26 +-- docs/classes/WoRelaySwitch1.html | 30 ++-- docs/classes/WoRelaySwitch1PM.html | 30 ++-- docs/classes/WoRemote.html | 26 +-- docs/classes/WoSensorTH.html | 24 +-- docs/classes/WoSensorTHPlus.html | 24 +-- docs/classes/WoSensorTHPro.html | 24 +-- docs/classes/WoSensorTHProCO2.html | 24 +-- docs/classes/WoSmartLock.html | 46 ++--- docs/classes/WoSmartLockPro.html | 46 ++--- docs/classes/WoStrip.html | 40 ++--- docs/enums/LogLevel.html | 4 +- docs/enums/SwitchBotBLEModel.html | 4 +- docs/enums/SwitchBotBLEModelFriendlyName.html | 4 +- docs/enums/SwitchBotBLEModelName.html | 4 +- docs/enums/SwitchBotModel.html | 4 +- docs/interfaces/AdvertisementData.html | 4 +- docs/interfaces/Chars.html | 4 +- docs/interfaces/ErrorObject.html | 4 +- docs/interfaces/NobleTypes.html | 4 +- docs/interfaces/Params.html | 4 +- docs/interfaces/Rule.html | 4 +- docs/interfaces/ServiceData.html | 4 +- docs/interfaces/SwitchBotBLEDevice.html | 4 +- docs/interfaces/WebhookDetail.html | 4 +- docs/interfaces/ad.html | 4 +- docs/interfaces/body.html | 4 +- docs/interfaces/bodyChange.html | 4 +- docs/interfaces/deleteWebhookResponse.html | 4 +- docs/interfaces/device.html | 4 +- docs/interfaces/deviceList.html | 4 +- docs/interfaces/deviceStatus.html | 4 +- docs/interfaces/deviceStatusRequest.html | 4 +- docs/interfaces/deviceWebhook.html | 4 +- docs/interfaces/deviceWebhookContext.html | 4 +- docs/interfaces/devices.html | 4 +- docs/interfaces/infraredRemoteList.html | 4 +- docs/interfaces/irdevice.html | 4 +- docs/interfaces/pushResponse.html | 4 +- docs/interfaces/queryWebhookResponse.html | 4 +- docs/interfaces/setupWebhookResponse.html | 4 +- docs/interfaces/switchbot.html | 4 +- docs/interfaces/updateWebhookResponse.html | 4 +- docs/interfaces/webhookRequest.html | 4 +- docs/types/MacAddress.html | 2 +- docs/types/batteryCirculatorFan.html | 2 +- .../batteryCirculatorFanServiceData.html | 2 +- docs/types/batteryCirculatorFanStatus.html | 2 +- .../batteryCirculatorFanWebhookContext.html | 2 +- docs/types/blindTilt.html | 2 +- docs/types/blindTiltServiceData.html | 2 +- docs/types/blindTiltStatus.html | 2 +- docs/types/blindTiltWebhookContext.html | 2 +- docs/types/bot.html | 2 +- docs/types/botServiceData.html | 2 +- docs/types/botStatus.html | 2 +- docs/types/botWebhookContext.html | 2 +- docs/types/ceilingLight.html | 2 +- docs/types/ceilingLightPro.html | 2 +- docs/types/ceilingLightProServiceData.html | 2 +- docs/types/ceilingLightProStatus.html | 2 +- docs/types/ceilingLightProWebhookContext.html | 2 +- docs/types/ceilingLightServiceData.html | 2 +- docs/types/ceilingLightStatus.html | 2 +- docs/types/ceilingLightWebhookContext.html | 2 +- docs/types/circulatorFanStatus.html | 2 +- docs/types/circulatorFanWebhookContext.html | 2 +- docs/types/colorBulb.html | 2 +- docs/types/colorBulbServiceData.html | 2 +- docs/types/colorBulbStatus.html | 2 +- docs/types/colorBulbWebhookContext.html | 2 +- docs/types/contactSensor.html | 2 +- docs/types/contactSensorServiceData.html | 2 +- docs/types/contactSensorStatus.html | 2 +- docs/types/contactSensorWebhookContext.html | 2 +- docs/types/curtain.html | 2 +- docs/types/curtain3.html | 2 +- docs/types/curtain3ServiceData.html | 2 +- docs/types/curtain3WebhookContext.html | 2 +- docs/types/curtainServiceData.html | 2 +- docs/types/curtainStatus.html | 2 +- docs/types/curtainWebhookContext.html | 2 +- docs/types/floorCleaningRobotS10.html | 2 +- docs/types/floorCleaningRobotS10Status.html | 2 +- .../floorCleaningRobotS10WebhookContext.html | 2 +- docs/types/hub2.html | 2 +- docs/types/hub2ServiceData.html | 2 +- docs/types/hub2Status.html | 2 +- docs/types/hub2WebhookContext.html | 2 +- docs/types/humidifier.html | 2 +- docs/types/humidifier2ServiceData.html | 2 +- docs/types/humidifier2Status.html | 2 +- docs/types/humidifier2WebhookContext.html | 2 +- docs/types/humidifierServiceData.html | 2 +- docs/types/humidifierStatus.html | 2 +- docs/types/humidifierWebhookContext.html | 2 +- docs/types/indoorCam.html | 2 +- docs/types/indoorCameraWebhookContext.html | 2 +- docs/types/keypad.html | 2 +- docs/types/keypadDetectorServiceData.html | 2 +- docs/types/keypadTouch.html | 2 +- docs/types/keypadTouchWebhookContext.html | 2 +- docs/types/keypadWebhookContext.html | 2 +- docs/types/lock.html | 2 +- docs/types/lockPro.html | 2 +- docs/types/lockProServiceData.html | 2 +- docs/types/lockProStatus.html | 2 +- docs/types/lockProWebhookContext.html | 2 +- docs/types/lockServiceData.html | 2 +- docs/types/lockStatus.html | 2 +- docs/types/lockWebhookContext.html | 2 +- docs/types/meter.html | 2 +- docs/types/meterPlus.html | 2 +- docs/types/meterPlusServiceData.html | 2 +- docs/types/meterPlusStatus.html | 2 +- docs/types/meterPlusWebhookContext.html | 2 +- docs/types/meterPro.html | 2 +- docs/types/meterProCO2ServiceData.html | 2 +- docs/types/meterProCO2Status.html | 2 +- docs/types/meterProCO2WebhookContext.html | 2 +- docs/types/meterProServiceData.html | 2 +- docs/types/meterProStatus.html | 2 +- docs/types/meterProWebhookContext.html | 2 +- docs/types/meterServiceData.html | 2 +- docs/types/meterStatus.html | 2 +- docs/types/meterWebhookContext.html | 2 +- docs/types/motionSensor.html | 2 +- docs/types/motionSensorServiceData.html | 2 +- docs/types/motionSensorStatus.html | 2 +- docs/types/motionSensorWebhookContext.html | 2 +- docs/types/onadvertisement.html | 2 +- docs/types/ondiscover.html | 2 +- docs/types/outdoorMeter.html | 2 +- docs/types/outdoorMeterServiceData.html | 2 +- docs/types/outdoorMeterStatus.html | 2 +- docs/types/outdoorMeterWebhookContext.html | 2 +- docs/types/panTiltCamWebhookContext.html | 2 +- docs/types/pantiltCam.html | 2 +- docs/types/pantiltCam2k.html | 2 +- docs/types/plug.html | 2 +- docs/types/plugMini.html | 2 +- docs/types/plugMiniJPServiceData.html | 2 +- docs/types/plugMiniJPWebhookContext.html | 2 +- docs/types/plugMiniStatus.html | 2 +- docs/types/plugMiniUSServiceData.html | 2 +- docs/types/plugMiniUSWebhookContext.html | 2 +- docs/types/plugStatus.html | 2 +- docs/types/plugWebhookContext.html | 2 +- docs/types/relaySwitch1Context.html | 2 +- docs/types/relaySwitch1PMContext.html | 2 +- docs/types/relaySwitch1PMServiceData.html | 2 +- docs/types/relaySwitch1PMStatus.html | 2 +- docs/types/relaySwitch1ServiceData.html | 2 +- docs/types/relaySwitch1Status.html | 2 +- docs/types/remote.html | 2 +- docs/types/remoteServiceData.html | 2 +- docs/types/robotVacuumCleanerS1.html | 2 +- docs/types/robotVacuumCleanerS1Plus.html | 2 +- .../types/robotVacuumCleanerS1PlusStatus.html | 2 +- ...obotVacuumCleanerS1PlusWebhookContext.html | 2 +- docs/types/robotVacuumCleanerS1Status.html | 2 +- .../robotVacuumCleanerS1WebhookContext.html | 2 +- docs/types/robotVacuumCleanerServiceData.html | 2 +- docs/types/stripLight.html | 2 +- docs/types/stripLightServiceData.html | 2 +- docs/types/stripLightStatus.html | 2 +- docs/types/stripLightWebhookContext.html | 2 +- docs/types/waterLeakDetector.html | 2 +- docs/types/waterLeakDetectorServiceData.html | 2 +- docs/types/waterLeakDetectorStatus.html | 2 +- .../waterLeakDetectorWebhookContext.html | 2 +- 190 files changed, 798 insertions(+), 633 deletions(-) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..67e1454c --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,165 @@ +# Node-SwitchBot Development Instructions + +Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. + +## Working Effectively + +### Bootstrap and Setup +- Install Node.js (^20 || ^22 || ^24): Use the existing version if available +- Install dependencies: `npm install` -- takes ~5-25 seconds (varies by cache). **NEVER CANCEL** +- Build the project: `npm run build` -- takes ~5 seconds. **NEVER CANCEL** +- Run tests: `npm run test` -- takes ~1 second with 12 tests. **NEVER CANCEL** + +### Development Workflow +- **ALWAYS run these commands in order when starting work:** + 1. `npm install` + 2. `npm run build` + 3. `npm run test` + 4. `npm run lint` +- **Build and validate EVERY change**: After any code modification, always run `npm run build && npm run test && npm run lint` +- **NEVER skip linting**: Run `npm run lint` before committing or the CI (.github/workflows/build.yml) will fail +- **Use lint:fix for automatic fixes**: `npm run lint:fix` to automatically fix ESLint issues + +### Platform Requirements and Constraints +- **BLE functionality requires Linux-based OS only** (Raspbian, Ubuntu, etc.) +- **Windows and macOS are NOT supported** for BLE operations (use OpenAPI instead) +- **Node.js versions**: Must use ^20, ^22, or ^24 (currently using v20.19.4) +- **ES Modules**: This project uses `"type": "module"` - always use ES import/export syntax + +### Testing and Validation +- **Basic functionality test**: After any changes to core classes, run this validation: + ```javascript + const { SwitchBotBLE, SwitchBotOpenAPI } = require('./dist/index.js'); + const ble = new SwitchBotBLE(); // Should not throw + const api = new SwitchBotOpenAPI('test', 'test'); // Should not throw + ``` +- **Complete test suite**: `npm run test` (12 tests) -- should always pass before committing +- **Test coverage**: `npm run test-coverage` to see coverage report (~15% coverage is normal) +- **Documentation generation**: `npm run docs` generates TypeDoc documentation in ./docs/ + +### Build and Timing Expectations +- **npm install**: ~5-25 seconds (varies by cache) -- **NEVER CANCEL**. Set timeout to 5+ minutes for safety +- **npm run build**: ~5 seconds -- **NEVER CANCEL**. Set timeout to 2+ minutes for safety +- **npm run test**: ~1 second (12 tests) -- **NEVER CANCEL**. Set timeout to 2+ minutes for safety +- **npm run lint**: ~3 seconds -- **NEVER CANCEL**. Set timeout to 2+ minutes for safety +- **npm run docs**: ~2 seconds -- **NEVER CANCEL**. Set timeout to 2+ minutes for safety + +## Project Structure and Key Files + +### Source Code Organization +- **src/index.ts**: Main export file - exports SwitchBotBLE, SwitchBotOpenAPI, and device classes +- **src/switchbot-ble.ts**: Bluetooth Low Energy interface for direct device control +- **src/switchbot-openapi.ts**: HTTP API interface for cloud-based SwitchBot control +- **src/device.ts**: Individual device classes (WoHand, WoCurtain, WoSmartLock, etc.) +- **src/types/**: TypeScript type definitions for all device interfaces +- **src/settings.ts**: Configuration constants and API URLs +- **dist/**: Compiled JavaScript output (generated by `npm run build`) + +### Configuration Files +- **package.json**: Main project config - scripts, dependencies, ES module config +- **tsconfig.json**: TypeScript compilation settings (target: ES2022, module: ES2022) +- **eslint.config.js**: ESLint configuration using @antfu/eslint-config +- **jest.config.js**: Test configuration (uses Vitest, not Jest) +- **.gitignore**: Excludes dist/, node_modules/, coverage/, and build artifacts + +### Documentation +- **README.md**: Main project documentation and installation instructions +- **BLE.md**: Comprehensive BLE usage documentation and device examples +- **OpenAPI.md**: OpenAPI usage documentation and authentication setup +- **CHANGELOG.md**: Version history and release notes +- **docs/**: Generated TypeDoc API documentation (HTML format) + +## Common Development Tasks + +### Adding New Device Support +- **Add device class**: Create new class in src/device.ts extending SwitchbotDevice +- **Update exports**: Add export to src/index.ts +- **Add type definitions**: Create types in src/types/ if needed +- **Test basic instantiation**: Ensure the device class can be imported and instantiated +- **Always run full build and test cycle**: `npm run build && npm run test && npm run lint` + +### API Changes and Extensions +- **OpenAPI changes**: Modify src/switchbot-openapi.ts +- **BLE changes**: Modify src/switchbot-ble.ts +- **Update type definitions**: Modify corresponding files in src/types/ +- **Always verify exports**: Check that new functionality is exported in src/index.ts +- **Test import functionality**: Verify new exports can be imported correctly + +### Working with Dependencies +- **Noble (BLE)**: @stoprocent/noble for Bluetooth functionality - Linux only +- **HTTP requests**: Uses undici for HTTP calls (not axios or fetch) +- **Async operations**: Uses async-mutex for concurrency control +- **Adding dependencies**: Use `npm install --save` for runtime deps, `--save-dev` for dev deps + +## Validation and Quality Assurance + +### Pre-commit Checklist +1. **Build succeeds**: `npm run build` completes without errors +2. **All tests pass**: `npm run test` shows all 12 tests passing +3. **Linting passes**: `npm run lint` shows no errors +4. **Documentation builds**: `npm run docs` generates without warnings +5. **Basic import works**: Can import and instantiate main classes + +### Manual Testing Scenarios +- **SwitchBotBLE instantiation**: `new SwitchBotBLE()` should not throw errors +- **SwitchBotOpenAPI instantiation**: `new SwitchBotOpenAPI('token', 'secret')` should not throw +- **Module exports**: All exported classes should be importable from main package +- **TypeScript compilation**: No TypeScript errors in dist/ output +- **Documentation completeness**: Check that new public APIs appear in generated docs + +### CI/CD Integration +- **GitHub Actions**: Build runs on push to 'latest' branch and PRs +- **External workflows**: Uses OpenWonderLabs/.github/.github/workflows/nodejs-build-and-test.yml +- **Required checks**: Build, test, and lint must all pass +- **Coverage reporting**: Test coverage is tracked and reported + +## Troubleshooting Common Issues + +### BLE Not Working +- **Check OS**: BLE only works on Linux-based systems +- **Install noble prerequisites**: May need additional system libraries for @stoprocent/noble +- **Use OpenAPI instead**: For Windows/macOS development, use SwitchBotOpenAPI class + +### Build Failures +- **Check Node.js version**: Must be ^20, ^22, or ^24 +- **Clean and rebuild**: `npm run clean && npm install && npm run build` +- **TypeScript errors**: Check tsconfig.json settings and type definitions + +### Test Failures +- **Run individual tests**: Use `npm run test:watch` for interactive testing +- **Check imports**: Ensure all imports use correct ES module syntax +- **Verify exports**: Check that src/index.ts exports all necessary components + +### Linting Errors +- **Auto-fix**: Use `npm run lint:fix` to automatically fix many issues +- **ESLint config**: Review eslint.config.js for current rules +- **Import sorting**: ESLint enforces specific import order - use lint:fix + +## Frequently Referenced Information + +### Package Scripts (from package.json) +```bash +npm run build # Clean and compile TypeScript +npm run test # Run test suite with Vitest +npm run lint # Run ESLint on src/**/*.ts +npm run lint:fix # Auto-fix ESLint issues +npm run docs # Generate TypeDoc documentation +npm run clean # Remove dist/ directory +npm run watch # Build and link for development +``` + +### Main Exports (from src/index.ts) +- **SwitchBotBLE**: Bluetooth interface class +- **SwitchBotOpenAPI**: HTTP API interface class +- **SwitchbotDevice**: Base device class +- **Device classes**: WoHand, WoCurtain, WoSmartLock, etc. +- **Type definitions**: All device status and response types + +### Dependencies Summary +- **@stoprocent/noble**: BLE functionality (Linux only) +- **undici**: HTTP client for API requests +- **async-mutex**: Concurrency control +- **TypeScript**: Language and compilation +- **Vitest**: Testing framework +- **ESLint**: Code linting with @antfu/eslint-config +- **TypeDoc**: API documentation generation \ No newline at end of file diff --git a/docs/classes/Advertising.html b/docs/classes/Advertising.html index 8e7c0ec6..b028ea19 100644 --- a/docs/classes/Advertising.html +++ b/docs/classes/Advertising.html @@ -1,8 +1,8 @@ Advertising | node-switchbot

Class Advertising

Represents the advertising data parser for SwitchBot devices.

-

Constructors

Constructors

Methods

Constructors

Methods

  • Parses the advertisement data coming from SwitchBot device.

    +

Constructors

Methods

  • Parses the advertisement data coming from SwitchBot device.

    This function processes advertising packets received from SwitchBot devices and extracts relevant information based on the device type.

    Parameters

    • peripheral: Peripheral

      The peripheral device object from noble.

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

    Returns Promise<null | ad>

    • An object containing parsed data specific to the SwitchBot device type, or null if the device is not recognized.
    -
  • Parses the service data based on the device model.

    +
  • Parses the service data based on the device model.

    Parameters

    • model: string

      The device model.

    • serviceData: Buffer

      The service data buffer.

    • manufacturerData: Buffer

      The manufacturer data buffer.

      @@ -18,4 +18,4 @@

    Returns Promise<any>

    • The parsed service data.
    -
+
diff --git a/docs/classes/SwitchBotBLE.html b/docs/classes/SwitchBotBLE.html index 340f36b4..6f40f042 100644 --- a/docs/classes/SwitchBotBLE.html +++ b/docs/classes/SwitchBotBLE.html @@ -1,5 +1,5 @@ SwitchBotBLE | node-switchbot

Class SwitchBotBLE

SwitchBotBLE class to interact with SwitchBot devices.

-

Hierarchy

  • EventEmitter
    • SwitchBotBLE

Constructors

Hierarchy

  • EventEmitter
    • SwitchBotBLE

Constructors

Properties

noble onadvertisement? ondiscover? @@ -12,30 +12,30 @@ wait

Constructors

Properties

noble: any
onadvertisement?: onadvertisement
ondiscover?: ondiscover
ready: Promise<void>

Methods

Returns SwitchBotBLE

Properties

noble: any
onadvertisement?: onadvertisement
ondiscover?: ondiscover
ready: Promise<void>

Methods

  • Emits a log event with the specified log level and message.

    +
  • Emits a log event with the specified log level and message.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Starts scanning for SwitchBot devices.

    +

Returns Promise<void>

+
diff --git a/docs/classes/SwitchBotOpenAPI.html b/docs/classes/SwitchBotOpenAPI.html index 74770b36..aae2d239 100644 --- a/docs/classes/SwitchBotOpenAPI.html +++ b/docs/classes/SwitchBotOpenAPI.html @@ -5,7 +5,7 @@

The API token used for authentication.

The secret key used for signing requests.

-

Hierarchy

Constructors

Hierarchy

Constructors

Properties

Methods

controlDevice deleteWebhook @@ -15,7 +15,7 @@

Constructors

  • Creates an instance of the SwitchBot OpenAPI client.

    Parameters

    • token: string

      The API token used for authentication.

    • secret: string

      The secret key used for signing requests.

      -
    • Optionalhostname: string

    Returns SwitchBotOpenAPI

Properties

webhookEventListener?:
    | null
    | Server<typeof IncomingMessage, typeof ServerResponse> = null

Methods

  • Controls a device by sending a command to the SwitchBot API.

    +
  • Optionalhostname: string

Returns SwitchBotOpenAPI

Properties

webhookEventListener?:
    | null
    | Server<typeof IncomingMessage, typeof ServerResponse> = null

Methods

  • Controls a device by sending a command to the SwitchBot API.

    Parameters

    • deviceId: string

      The ID of the device to control.

    • command: string

      The command to send to the device.

    • parameter: string

      The parameter for the command.

      @@ -24,24 +24,24 @@
    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<{ response: { commandId: string }; statusCode: number }>

    A promise that resolves to an object containing the response body and status code.

    An error if the device control fails.

    -
  • Deletes a webhook by sending a request to the specified URL.

    +
  • Deletes a webhook by sending a request to the specified URL.

    Parameters

    • url: string

      The URL of the webhook to be deleted.

    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<void>

    A promise that resolves when the webhook is successfully deleted.

    Will log an error if the deletion fails.

    -
  • Retrieves the list of devices from the SwitchBot OpenAPI.

    +
  • Retrieves the list of devices from the SwitchBot OpenAPI.

    Parameters

    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<{ response: devices; statusCode: number }>

    A promise that resolves to an object containing the API response.

    Throws an error if the request to get devices fails.

    -
  • Retrieves the status of a specific device.

    +
  • Retrieves the status of a specific device.

    Parameters

    • deviceId: string

      The unique identifier of the device.

    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<{ response: deviceStatus; statusCode: number }>

    A promise that resolves to an object containing the device status and the status code of the request.

    An error if the request fails.

    -
  • Sets up a webhook listener and configures the webhook on the server.

    +
  • Sets up a webhook listener and configures the webhook on the server.

    This method performs the following steps:

    1. Creates a local server to listen for incoming webhook events.
    2. @@ -54,4 +54,4 @@
  • Optionalsecret: string

    (Optional) The secret used for authentication. If not provided, the instance secret will be used.

Returns Promise<void>

A promise that resolves when the webhook setup is complete.

Will log an error if any step in the webhook setup process fails.

-
+
diff --git a/docs/classes/SwitchbotDevice.html b/docs/classes/SwitchbotDevice.html index e4f19dcf..b172adf9 100644 --- a/docs/classes/SwitchbotDevice.html +++ b/docs/classes/SwitchbotDevice.html @@ -1,5 +1,5 @@ SwitchbotDevice | node-switchbot

Class SwitchbotDevice

Represents a Switchbot Device.

-

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

address connectionState friendlyName @@ -21,27 +21,27 @@

Constructors

  • Initializes a new instance of the SwitchbotDevice class.

    Parameters

    • peripheral: Peripheral

      The peripheral object from noble.

    • noble: __module

      The Noble object.

      -

    Returns SwitchbotDevice

Accessors

  • get connectionState(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Returns SwitchbotDevice

Accessors

  • get connectionState(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    +
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    +
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Discovers the device services.

    +
  • Discovers the device services.

    Returns Promise<Service[]>

    A Promise that resolves with the list of services.

    -
  • Retrieves the device characteristics.

    +
  • Retrieves the device characteristics.

    Returns Promise<Chars>

    A Promise that resolves with the device characteristics.

    -
  • Retrieves the device name.

    +
  • Retrieves the device name.

    Returns Promise<string>

    A Promise that resolves with the device name.

    -
  • Internal method to handle the connection process.

    +
  • Internal method to handle the connection process.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Logs a message with the specified log level.

    +
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sets the device name.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoBlindTilt.html b/docs/classes/WoBlindTilt.html index c9b4ded1..c78eb235 100644 --- a/docs/classes/WoBlindTilt.html +++ b/docs/classes/WoBlindTilt.html @@ -1,6 +1,6 @@ WoBlindTilt | node-switchbot

Class WoBlindTilt

Class representing a WoBlindTilt device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Closes the blind tilt to the nearest endpoint.

    -

    Returns Promise<void>

  • Closes the blind tilt down to the nearest endpoint.

    -

    Returns Promise<void>

  • Closes the blind tilt up to the nearest endpoint.

    -

    Returns Promise<void>

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Closes the blind tilt to the nearest endpoint.

    +

    Returns Promise<void>

  • Closes the blind tilt down to the nearest endpoint.

    +

    Returns Promise<void>

  • Closes the blind tilt up to the nearest endpoint.

    +

    Returns Promise<void>

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Retrieves the basic information of the blind tilt.

    Returns Promise<null | object>

    • A promise that resolves to an object containing the basic information of the blind tilt.
    -
  • Retrieves the device characteristics.

    +
  • Retrieves the current position of the blind tilt.

    Returns Promise<number>

    • The current position of the blind tilt (0-100).
    -
  • Internal method to handle the connection process.

    +
  • Internal method to handle the connection process.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Opens the blind tilt to the fully open position.

    -

    Returns Promise<void>

  • Pauses the blind tilt operation.

    -

    Returns Promise<void>

  • Runs the blind tilt to the specified position.

    +

Returns Promise<void>

Returns Promise<void>

+
diff --git a/docs/classes/WoBulb.html b/docs/classes/WoBulb.html index 46dbc4af..604a314f 100644 --- a/docs/classes/WoBulb.html +++ b/docs/classes/WoBulb.html @@ -1,6 +1,6 @@ WoBulb | node-switchbot

Class representing a WoBulb device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Internal method to handle the connection process.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Reads the state of the bulb.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoCeilingLight.html b/docs/classes/WoCeilingLight.html index c1e58d0c..8b28748b 100644 --- a/docs/classes/WoCeilingLight.html +++ b/docs/classes/WoCeilingLight.html @@ -1,6 +1,6 @@ WoCeilingLight | node-switchbot

Class WoCeilingLight

Class representing a WoCeilingLight device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Internal method to handle the connection process.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sends a command to the ceiling light.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoContact.html b/docs/classes/WoContact.html index 58684c4b..ac676b87 100644 --- a/docs/classes/WoContact.html +++ b/docs/classes/WoContact.html @@ -1,6 +1,6 @@ WoContact | node-switchbot

Class representing a WoContact device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string

    Returns string

  • get connectionState(): string

    Returns string

  • get id(): string

    Returns string

  • get onConnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>

    Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void

    Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Internal method to handle the connection process.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sets the device name.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoCurtain.html b/docs/classes/WoCurtain.html index 35b620e1..e51160bd 100644 --- a/docs/classes/WoCurtain.html +++ b/docs/classes/WoCurtain.html @@ -3,7 +3,7 @@
  • https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/curtain.md
  • https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/curtain3.md
  • -

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Closes the curtain.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Closes the curtain.

      Parameters

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sends a command to the device and awaits a response.

      +

    Returns Promise<void>

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Opens the curtain.

      +

    Returns Promise<void>

    • Opens the curtain.

      Parameters

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sends a command to the curtain.

      +

    Returns Promise<void>

    • Sends a command to the curtain.

      Parameters

      • bytes: number[]

        The command bytes.

        -

      Returns Promise<void>

    • Pauses the curtain.

      -

      Returns Promise<void>

    • Runs the curtain to the target position.

      +

    Returns Promise<void>

    • Pauses the curtain.

      +

      Returns Promise<void>

    • Runs the curtain to the target position.

      Parameters

      • percent: number

        The percentage of the target position.

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    • Sets the device name.

      Parameters

      • name: string

        The new device name.

      Returns Promise<void>

      A Promise that resolves when the name is set.

      -
    • Parses the service data for WoCurtain.

      Parameters

      • serviceData: Buffer

        The service data buffer.

      • manufacturerData: Buffer

        The manufacturer data buffer.

      • emitLog: (level: string, message: string) => void

        The function to emit log messages.

        @@ -69,4 +69,4 @@

      Returns Promise<null | curtainServiceData | curtain3ServiceData>

      • Parsed service data or null if invalid.
      -
    +
    diff --git a/docs/classes/WoHand.html b/docs/classes/WoHand.html index 467ba27c..45319242 100644 --- a/docs/classes/WoHand.html +++ b/docs/classes/WoHand.html @@ -1,6 +1,6 @@ WoHand | node-switchbot

    Class representing a WoHand device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Moves the bot down.

      -

      Returns Promise<void>

    • Moves the bot down.

      +

      Returns Promise<void>

    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Presses the bot.

      -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoHub2.html b/docs/classes/WoHub2.html index ee7100f4..b09245db 100644 --- a/docs/classes/WoHub2.html +++ b/docs/classes/WoHub2.html @@ -1,6 +1,6 @@ WoHub2 | node-switchbot

    Class representing a WoHub2 device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoHumi.html b/docs/classes/WoHumi.html index bda304cb..b094054a 100644 --- a/docs/classes/WoHumi.html +++ b/docs/classes/WoHumi.html @@ -1,6 +1,6 @@ WoHumi | node-switchbot

    Class representing a WoHumi device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decreases the humidifier setting.

      -

      Returns Promise<void>

    • Decreases the humidifier setting.

      +

      Returns Promise<void>

    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Increases the humidifier setting.

      -

      Returns Promise<void>

    • Increases the humidifier setting.

      +

      Returns Promise<void>

    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the humidifier level.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoHumi2.html b/docs/classes/WoHumi2.html index b70ebf43..cc8baa87 100644 --- a/docs/classes/WoHumi2.html +++ b/docs/classes/WoHumi2.html @@ -1,6 +1,6 @@ WoHumi2 | node-switchbot

    Class representing a WoHumi device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decreases the humidifier setting.

      -

      Returns Promise<void>

    • Decreases the humidifier setting.

      +

      Returns Promise<void>

    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Increases the humidifier setting.

      -

      Returns Promise<void>

    • Increases the humidifier setting.

      +

      Returns Promise<void>

    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the humidifier level.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoIOSensorTH.html b/docs/classes/WoIOSensorTH.html index e3a3dfc7..9d5f3109 100644 --- a/docs/classes/WoIOSensorTH.html +++ b/docs/classes/WoIOSensorTH.html @@ -1,6 +1,6 @@ WoIOSensorTH | node-switchbot

    Class WoIOSensorTH

    Class representing a WoIOSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoKeypad.html b/docs/classes/WoKeypad.html index e12b4bbc..f515e677 100644 --- a/docs/classes/WoKeypad.html +++ b/docs/classes/WoKeypad.html @@ -1,5 +1,5 @@ WoKeypad | node-switchbot

    Class representing a WoKeypad device.

    -

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoLeak.html b/docs/classes/WoLeak.html index de4aa539..6f56a61d 100644 --- a/docs/classes/WoLeak.html +++ b/docs/classes/WoLeak.html @@ -1,6 +1,6 @@ WoLeak | node-switchbot

    Class representing a WoLeak device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoPlugMiniJP.html b/docs/classes/WoPlugMiniJP.html index 033d61c2..e4dad5c4 100644 --- a/docs/classes/WoPlugMiniJP.html +++ b/docs/classes/WoPlugMiniJP.html @@ -1,6 +1,6 @@ WoPlugMiniJP | node-switchbot

    Class WoPlugMiniJP

    Class representing a WoPlugMini device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the plug with the given bytes.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoPlugMiniUS.html b/docs/classes/WoPlugMiniUS.html index 3b8ebca5..299e0d74 100644 --- a/docs/classes/WoPlugMiniUS.html +++ b/docs/classes/WoPlugMiniUS.html @@ -1,6 +1,6 @@ WoPlugMiniUS | node-switchbot

    Class WoPlugMiniUS

    Class representing a WoPlugMini device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the plug with the given bytes.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoPresence.html b/docs/classes/WoPresence.html index de0330a5..34cdcfa3 100644 --- a/docs/classes/WoPresence.html +++ b/docs/classes/WoPresence.html @@ -1,6 +1,6 @@ WoPresence | node-switchbot

    Class WoPresence

    Class representing a WoPresence device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoRelaySwitch1.html b/docs/classes/WoRelaySwitch1.html index 4a420fa5..c893db2c 100644 --- a/docs/classes/WoRelaySwitch1.html +++ b/docs/classes/WoRelaySwitch1.html @@ -1,6 +1,6 @@ WoRelaySwitch1 | node-switchbot

    Class WoRelaySwitch1

    Class representing a WoRelaySwitch1 device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoRelaySwitch1PM.html b/docs/classes/WoRelaySwitch1PM.html index e05ef790..50b5585c 100644 --- a/docs/classes/WoRelaySwitch1PM.html +++ b/docs/classes/WoRelaySwitch1PM.html @@ -1,6 +1,6 @@ WoRelaySwitch1PM | node-switchbot

    Class WoRelaySwitch1PM

    Class representing a WoRelaySwitch1PM device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoRemote.html b/docs/classes/WoRemote.html index caeda51a..f506924e 100644 --- a/docs/classes/WoRemote.html +++ b/docs/classes/WoRemote.html @@ -1,6 +1,6 @@ WoRemote | node-switchbot

    Class representing a WoRemote device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSensorTH.html b/docs/classes/WoSensorTH.html index b3c8c676..ffa9a4c2 100644 --- a/docs/classes/WoSensorTH.html +++ b/docs/classes/WoSensorTH.html @@ -1,6 +1,6 @@ WoSensorTH | node-switchbot

    Class WoSensorTH

    Class representing a WoSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSensorTHPlus.html b/docs/classes/WoSensorTHPlus.html index 8af535cd..eac3ec60 100644 --- a/docs/classes/WoSensorTHPlus.html +++ b/docs/classes/WoSensorTHPlus.html @@ -1,6 +1,6 @@ WoSensorTHPlus | node-switchbot

    Class WoSensorTHPlus

    Class representing a WoSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSensorTHPro.html b/docs/classes/WoSensorTHPro.html index 7c6504f0..caa06dd6 100644 --- a/docs/classes/WoSensorTHPro.html +++ b/docs/classes/WoSensorTHPro.html @@ -1,6 +1,6 @@ WoSensorTHPro | node-switchbot

    Class WoSensorTHPro

    Class representing a WoSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSensorTHProCO2.html b/docs/classes/WoSensorTHProCO2.html index 07daec64..9534d65b 100644 --- a/docs/classes/WoSensorTHProCO2.html +++ b/docs/classes/WoSensorTHProCO2.html @@ -1,6 +1,6 @@ WoSensorTHProCO2 | node-switchbot

    Class WoSensorTHProCO2

    Class representing a WoSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSmartLock.html b/docs/classes/WoSmartLock.html index b31ca4c0..92f0d210 100644 --- a/docs/classes/WoSmartLock.html +++ b/docs/classes/WoSmartLock.html @@ -1,6 +1,6 @@ WoSmartLock | node-switchbot

    Class WoSmartLock

    Class representing a WoSmartLock device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decrypts a buffer using AES-128-CTR.

      Parameters

      • data: Buffer

        The data to decrypt.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The decrypted data.
      -
    • Disconnects from the device.

      +
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Encrypts a string using AES-128-CTR.

      Parameters

      • str: string

        The string to encrypt.

      Returns Promise<string>

      • The encrypted string in hex format.
      -
    • Sends an encrypted command to the device.

      +
    • Sends an encrypted command to the device.

      Parameters

      • key: string

        The command key.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The response buffer.
      -
    • Retrieves the device characteristics.

      +
    • Retrieves the IV from the device.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The IV buffer.
      -
    • Gets general state info from the Smart Lock.

      +
    • Gets general state info from the Smart Lock.

      Returns Promise<null | object>

      • The state object or null if an error occurred.
      -
    • Internal method to handle the connection process.

      +
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Locks the Smart Lock.

      Returns Promise<number>

      • The result of the lock operation.
      -
    • Logs a message with the specified log level.

      +
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the lock with the given command.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSmartLockPro.html b/docs/classes/WoSmartLockPro.html index e810d700..7f9c9782 100644 --- a/docs/classes/WoSmartLockPro.html +++ b/docs/classes/WoSmartLockPro.html @@ -1,6 +1,6 @@ WoSmartLockPro | node-switchbot

    Class WoSmartLockPro

    Class representing a WoSmartLockPro device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decrypts a buffer using AES-128-CTR.

      Parameters

      • data: Buffer

        The data to decrypt.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The decrypted data.
      -
    • Disconnects from the device.

      +
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Encrypts a string using AES-128-CTR.

      Parameters

      • str: string

        The string to encrypt.

      Returns Promise<string>

      • The encrypted string in hex format.
      -
    • Sends an encrypted command to the device.

      +
    • Sends an encrypted command to the device.

      Parameters

      • key: string

        The command key.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The response buffer.
      -
    • Retrieves the device characteristics.

      +
    • Retrieves the IV from the device.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The IV buffer.
      -
    • Gets general state info from the Smart Lock.

      +
    • Gets general state info from the Smart Lock.

      Returns Promise<null | object>

      • The state object or null if an error occurred.
      -
    • Internal method to handle the connection process.

      +
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Locks the Smart Lock.

      Returns Promise<number>

      • The result of the lock operation.
      -
    • Logs a message with the specified log level.

      +
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the lock with the given command.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoStrip.html b/docs/classes/WoStrip.html index 59b3d772..0ca70a05 100644 --- a/docs/classes/WoStrip.html +++ b/docs/classes/WoStrip.html @@ -1,6 +1,6 @@ WoStrip | node-switchbot

    Class representing a WoStrip device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string

      Returns string

    • get connectionState(): string

      Returns string

    • get id(): string

      Returns string

    • get onConnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>

      Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void

      Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Internal method to handle the connection process.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the strip light with the given byte array.

      +

    Returns Promise<void>

    +
    diff --git a/docs/enums/LogLevel.html b/docs/enums/LogLevel.html index f58cbac7..df8df730 100644 --- a/docs/enums/LogLevel.html +++ b/docs/enums/LogLevel.html @@ -1,5 +1,5 @@ LogLevel | node-switchbot

    Enumeration LogLevel

    Enum for log levels.

    -

    Enumeration Members

    Enumeration Members

    Enumeration Members

    DEBUG: "debug"
    DEBUGERROR: "debugerror"
    DEBUGSUCCESS: "debugsuccess"
    DEBUGWARN: "debugwarn"
    ERROR: "error"
    INFO: "info"
    SUCCESS: "success"
    WARN: "warn"
    +

    Enumeration Members

    DEBUG: "debug"
    DEBUGERROR: "debugerror"
    DEBUGSUCCESS: "debugsuccess"
    DEBUGWARN: "debugwarn"
    ERROR: "error"
    INFO: "info"
    SUCCESS: "success"
    WARN: "warn"
    diff --git a/docs/enums/SwitchBotBLEModel.html b/docs/enums/SwitchBotBLEModel.html index 2e6e04ce..4a108bb4 100644 --- a/docs/enums/SwitchBotBLEModel.html +++ b/docs/enums/SwitchBotBLEModel.html @@ -1,4 +1,4 @@ -SwitchBotBLEModel | node-switchbot

    Enumeration SwitchBotBLEModel

    Enumeration Members

    BlindTilt +SwitchBotBLEModel | node-switchbot

    Enumeration SwitchBotBLEModel

    Enumeration Members

    Enumeration Members

    BlindTilt: "x"
    Bot: "H"
    CeilingLight: "q"
    CeilingLightPro: "n"
    ColorBulb: "u"
    ContactSensor: "d"
    Curtain: "c"
    Curtain3: "{"
    Hub2: "v"
    Humidifier: "e"
    Humidifier2: "#"
    Keypad: "y"
    Leak: "&"
    Lock: "o"
    LockPro: "$"
    Meter: "T"
    MeterPlus: "i"
    MeterPro: "4"
    MeterProCO2: "5"
    MotionSensor: "s"
    OutdoorMeter: "w"
    PlugMiniJP: "j"
    PlugMiniUS: "g"
    RelaySwitch1: ";"
    RelaySwitch1PM: "<"
    Remote: "b"
    StripLight: "r"
    Unknown: "Unknown"
    +

    Enumeration Members

    BlindTilt: "x"
    Bot: "H"
    CeilingLight: "q"
    CeilingLightPro: "n"
    ColorBulb: "u"
    ContactSensor: "d"
    Curtain: "c"
    Curtain3: "{"
    Hub2: "v"
    Humidifier: "e"
    Humidifier2: "#"
    Keypad: "y"
    Leak: "&"
    Lock: "o"
    LockPro: "$"
    Meter: "T"
    MeterPlus: "i"
    MeterPro: "4"
    MeterProCO2: "5"
    MotionSensor: "s"
    OutdoorMeter: "w"
    PlugMiniJP: "j"
    PlugMiniUS: "g"
    RelaySwitch1: ";"
    RelaySwitch1PM: "<"
    Remote: "b"
    StripLight: "r"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotBLEModelFriendlyName.html b/docs/enums/SwitchBotBLEModelFriendlyName.html index c0243412..9e805c40 100644 --- a/docs/enums/SwitchBotBLEModelFriendlyName.html +++ b/docs/enums/SwitchBotBLEModelFriendlyName.html @@ -1,4 +1,4 @@ -SwitchBotBLEModelFriendlyName | node-switchbot

    Enumeration SwitchBotBLEModelFriendlyName

    Enumeration Members

    BatteryCirculatorFan +SwitchBotBLEModelFriendlyName | node-switchbot

    Enumeration SwitchBotBLEModelFriendlyName

    Enumeration Members

    Enumeration Members

    BatteryCirculatorFan: "Battery Circulator Fan"
    BlindTilt: "Blind Tilt"
    Bot: "Bot"
    CeilingLight: "Ceiling Light"
    CeilingLightPro: "Ceiling Light Pro"
    CirculatorFan: "Circulator Fan"
    ColorBulb: "Color Bulb"
    ContactSensor: "Contact Sensor"
    Curtain: "Curtain"
    Curtain3: "Curtain 3"
    Hub2: "Hub 2"
    Humidifier: "Humidifier"
    Humidifier2: "Humidifier2"
    Keypad: "Keypad"
    Leak: "Water Detector"
    Lock: "Lock"
    LockPro: "Lock Pro"
    Meter: "Meter"
    MeterPlus: "Meter Plus"
    MeterPro: "Meter Pro"
    MeterProCO2: "Meter Pro CO2"
    MotionSensor: "Motion Sensor"
    OutdoorMeter: "Outdoor Meter"
    PlugMini: "Plug Mini"
    RelaySwitch1: "Relay Switch 1"
    RelaySwitch1PM: "Relay Switch 1PM"
    Remote: "Remote"
    StripLight: "Strip Light"
    Unknown: "Unknown"
    +

    Enumeration Members

    BatteryCirculatorFan: "Battery Circulator Fan"
    BlindTilt: "Blind Tilt"
    Bot: "Bot"
    CeilingLight: "Ceiling Light"
    CeilingLightPro: "Ceiling Light Pro"
    CirculatorFan: "Circulator Fan"
    ColorBulb: "Color Bulb"
    ContactSensor: "Contact Sensor"
    Curtain: "Curtain"
    Curtain3: "Curtain 3"
    Hub2: "Hub 2"
    Humidifier: "Humidifier"
    Humidifier2: "Humidifier2"
    Keypad: "Keypad"
    Leak: "Water Detector"
    Lock: "Lock"
    LockPro: "Lock Pro"
    Meter: "Meter"
    MeterPlus: "Meter Plus"
    MeterPro: "Meter Pro"
    MeterProCO2: "Meter Pro CO2"
    MotionSensor: "Motion Sensor"
    OutdoorMeter: "Outdoor Meter"
    PlugMini: "Plug Mini"
    RelaySwitch1: "Relay Switch 1"
    RelaySwitch1PM: "Relay Switch 1PM"
    Remote: "Remote"
    StripLight: "Strip Light"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotBLEModelName.html b/docs/enums/SwitchBotBLEModelName.html index 79e37901..fef7ed11 100644 --- a/docs/enums/SwitchBotBLEModelName.html +++ b/docs/enums/SwitchBotBLEModelName.html @@ -1,4 +1,4 @@ -SwitchBotBLEModelName | node-switchbot

    Enumeration SwitchBotBLEModelName

    Enumeration Members

    BlindTilt +SwitchBotBLEModelName | node-switchbot

    Enumeration SwitchBotBLEModelName

    Enumeration Members

    Enumeration Members

    BlindTilt: "WoBlindTilt"
    Bot: "WoHand"
    CeilingLight: "WoCeilingLight"
    CeilingLightPro: "WoCeilingLightPro"
    ColorBulb: "WoBulb"
    ContactSensor: "WoContact"
    Curtain: "WoCurtain"
    Curtain3: "WoCurtain3"
    Hub2: "WoHub2"
    Humidifier: "WoHumi"
    Humidifier2: "WoHumi2"
    Keypad: "WoKeypad"
    Leak: "WoLeakDetector"
    Lock: "WoSmartLock"
    LockPro: "WoSmartLockPro"
    Meter: "WoSensorTH"
    MeterPlus: "WoSensorTHPlus"
    MeterPro: "WoSensorTHP"
    MeterProCO2: "WoSensorTHPc"
    MotionSensor: "WoMotion"
    OutdoorMeter: "WoIOSensorTH"
    PlugMini: "WoPlugMini"
    RelaySwitch1: "WoRelaySwitch1Plus"
    RelaySwitch1PM: "WoRelaySwitch1PM"
    Remote: "WoRemote"
    StripLight: "WoStrip"
    Unknown: "Unknown"
    +

    Enumeration Members

    BlindTilt: "WoBlindTilt"
    Bot: "WoHand"
    CeilingLight: "WoCeilingLight"
    CeilingLightPro: "WoCeilingLightPro"
    ColorBulb: "WoBulb"
    ContactSensor: "WoContact"
    Curtain: "WoCurtain"
    Curtain3: "WoCurtain3"
    Hub2: "WoHub2"
    Humidifier: "WoHumi"
    Humidifier2: "WoHumi2"
    Keypad: "WoKeypad"
    Leak: "WoLeakDetector"
    Lock: "WoSmartLock"
    LockPro: "WoSmartLockPro"
    Meter: "WoSensorTH"
    MeterPlus: "WoSensorTHPlus"
    MeterPro: "WoSensorTHP"
    MeterProCO2: "WoSensorTHPc"
    MotionSensor: "WoMotion"
    OutdoorMeter: "WoIOSensorTH"
    PlugMini: "WoPlugMini"
    RelaySwitch1: "WoRelaySwitch1Plus"
    RelaySwitch1PM: "WoRelaySwitch1PM"
    Remote: "WoRemote"
    StripLight: "WoStrip"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotModel.html b/docs/enums/SwitchBotModel.html index 31f67c71..07f3c0b8 100644 --- a/docs/enums/SwitchBotModel.html +++ b/docs/enums/SwitchBotModel.html @@ -1,4 +1,4 @@ -SwitchBotModel | node-switchbot

    Enumeration SwitchBotModel

    Enumeration Members

    BatteryCirculatorFan +SwitchBotModel | node-switchbot

    Enumeration SwitchBotModel

    Enumeration Members

    BatteryCirculatorFan: "W3800510"
    BlindTilt: "W2701600"
    Bot: "SwitchBot S1"
    CeilingLight: "W2612230/W2612240"
    CeilingLightPro: "W2612210/W2612220"
    CirculatorFan: "W3800511"
    ColorBulb: "W1401400"
    ContactSensor: "W1201500"
    Curtain: "W0701600"
    Curtain3: "W2400000"
    Hub2: "W3202100"
    HubMini: "W0202200"
    HubPlus: "SwitchBot Hub S1"
    Humidifier: "W0801800"
    Humidifier2: "WXXXXXXX"
    IndoorCam: "W1301200"
    K10: "K10+"
    K10Pro: "K10+ Pro"
    Keypad: "W2500010"
    KeypadTouch: "W2500020"
    Lock: "W1601700"
    LockPro: "W3500000"
    Meter: "SwitchBot MeterTH S1"
    MeterPlusJP: "W2201500"
    MeterPlusUS: "W2301500"
    MeterPro: "W4900000"
    MeterProCO2: "W4900010"
    MotionSensor: "W1101500"
    OutdoorMeter: "W3400010"
    PanTiltCam: "W1801200"
    PanTiltCam2K: "W3101100"
    Plug: "SP11"
    PlugMiniJP: "W2001400/W2001401"
    PlugMiniUS: "W1901400/W1901401"
    RelaySwitch1: "W5502300"
    RelaySwitch1PM: "W5502310"
    Remote: "Remote"
    RobotVacuumCleanerS1: "W3011000"
    RobotVacuumCleanerS10: "W3211800"
    RobotVacuumCleanerS1Plus: "W3011010"
    StripLight: "W1701100"
    UniversalRemote: "UniversalRemote"
    Unknown: "Unknown"
    WaterDetector: "W4402000"
    WoSweeper: "WoSweeper"
    WoSweeperMini: "WoSweeperMini"
    +

    Enumeration Members

    BatteryCirculatorFan: "W3800510"
    BlindTilt: "W2701600"
    Bot: "SwitchBot S1"
    CeilingLight: "W2612230/W2612240"
    CeilingLightPro: "W2612210/W2612220"
    CirculatorFan: "W3800511"
    ColorBulb: "W1401400"
    ContactSensor: "W1201500"
    Curtain: "W0701600"
    Curtain3: "W2400000"
    Hub2: "W3202100"
    HubMini: "W0202200"
    HubPlus: "SwitchBot Hub S1"
    Humidifier: "W0801800"
    Humidifier2: "WXXXXXXX"
    IndoorCam: "W1301200"
    K10: "K10+"
    K10Pro: "K10+ Pro"
    Keypad: "W2500010"
    KeypadTouch: "W2500020"
    Lock: "W1601700"
    LockPro: "W3500000"
    Meter: "SwitchBot MeterTH S1"
    MeterPlusJP: "W2201500"
    MeterPlusUS: "W2301500"
    MeterPro: "W4900000"
    MeterProCO2: "W4900010"
    MotionSensor: "W1101500"
    OutdoorMeter: "W3400010"
    PanTiltCam: "W1801200"
    PanTiltCam2K: "W3101100"
    Plug: "SP11"
    PlugMiniJP: "W2001400/W2001401"
    PlugMiniUS: "W1901400/W1901401"
    RelaySwitch1: "W5502300"
    RelaySwitch1PM: "W5502310"
    Remote: "Remote"
    RobotVacuumCleanerS1: "W3011000"
    RobotVacuumCleanerS10: "W3211800"
    RobotVacuumCleanerS1Plus: "W3011010"
    StripLight: "W1701100"
    UniversalRemote: "UniversalRemote"
    Unknown: "Unknown"
    WaterDetector: "W4402000"
    WoSweeper: "WoSweeper"
    WoSweeperMini: "WoSweeperMini"
    diff --git a/docs/interfaces/AdvertisementData.html b/docs/interfaces/AdvertisementData.html index 9a845eed..691a9949 100644 --- a/docs/interfaces/AdvertisementData.html +++ b/docs/interfaces/AdvertisementData.html @@ -1,3 +1,3 @@ -AdvertisementData | node-switchbot

    Interface AdvertisementData

    interface AdvertisementData {
        manufacturerData: null | Buffer<ArrayBufferLike>;
        serviceData: null | Buffer<ArrayBufferLike>;
    }

    Properties

    manufacturerData +AdvertisementData | node-switchbot

    Interface AdvertisementData

    interface AdvertisementData {
        manufacturerData: null | Buffer<ArrayBufferLike>;
        serviceData: null | Buffer<ArrayBufferLike>;
    }

    Properties

    manufacturerData: null | Buffer<ArrayBufferLike>
    serviceData: null | Buffer<ArrayBufferLike>
    +

    Properties

    manufacturerData: null | Buffer<ArrayBufferLike>
    serviceData: null | Buffer<ArrayBufferLike>
    diff --git a/docs/interfaces/Chars.html b/docs/interfaces/Chars.html index dc628704..08720e74 100644 --- a/docs/interfaces/Chars.html +++ b/docs/interfaces/Chars.html @@ -1,4 +1,4 @@ -Chars | node-switchbot

    Interface Chars

    interface Chars {
        device: null | Characteristic;
        notify: null | Characteristic;
        write: null | Characteristic;
    }

    Properties

    device +Chars | node-switchbot

    Interface Chars

    interface Chars {
        device: null | Characteristic;
        notify: null | Characteristic;
        write: null | Characteristic;
    }

    Properties

    Properties

    device: null | Characteristic
    notify: null | Characteristic
    write: null | Characteristic
    +

    Properties

    device: null | Characteristic
    notify: null | Characteristic
    write: null | Characteristic
    diff --git a/docs/interfaces/ErrorObject.html b/docs/interfaces/ErrorObject.html index 7af4eec7..f0ca5752 100644 --- a/docs/interfaces/ErrorObject.html +++ b/docs/interfaces/ErrorObject.html @@ -1,3 +1,3 @@ -ErrorObject | node-switchbot

    Interface ErrorObject

    interface ErrorObject {
        code: string;
        message: string;
    }

    Properties

    code +ErrorObject | node-switchbot

    Interface ErrorObject

    interface ErrorObject {
        code: string;
        message: string;
    }

    Properties

    Properties

    code: string
    message: string
    +

    Properties

    code: string
    message: string
    diff --git a/docs/interfaces/NobleTypes.html b/docs/interfaces/NobleTypes.html index 2a8cc173..221cc3c2 100644 --- a/docs/interfaces/NobleTypes.html +++ b/docs/interfaces/NobleTypes.html @@ -1,4 +1,4 @@ -NobleTypes | node-switchbot

    Interface NobleTypes

    interface NobleTypes {
        noble: __module;
        peripheral: Peripheral;
        state:
            | "unknown"
            | "resetting"
            | "unsupported"
            | "unauthorized"
            | "poweredOff"
            | "poweredOn";
    }

    Properties

    noble +NobleTypes | node-switchbot

    Interface NobleTypes

    interface NobleTypes {
        noble: __module;
        peripheral: Peripheral;
        state:
            | "unknown"
            | "resetting"
            | "unsupported"
            | "unauthorized"
            | "poweredOff"
            | "poweredOn";
    }

    Properties

    Properties

    noble: __module
    peripheral: Peripheral
    state:
        | "unknown"
        | "resetting"
        | "unsupported"
        | "unauthorized"
        | "poweredOff"
        | "poweredOn"
    +

    Properties

    noble: __module
    peripheral: Peripheral
    state:
        | "unknown"
        | "resetting"
        | "unsupported"
        | "unauthorized"
        | "poweredOff"
        | "poweredOn"
    diff --git a/docs/interfaces/Params.html b/docs/interfaces/Params.html index 819ea888..7059f46d 100644 --- a/docs/interfaces/Params.html +++ b/docs/interfaces/Params.html @@ -1,6 +1,6 @@ -Params | node-switchbot

    Interface Params

    interface Params {
        duration?: number;
        id?: string;
        model?: string;
        noble?: __module;
        quick?: boolean;
    }

    Properties

    duration? +Params | node-switchbot

    Interface Params

    interface Params {
        duration?: number;
        id?: string;
        model?: string;
        noble?: __module;
        quick?: boolean;
    }

    Properties

    duration?: number
    id?: string
    model?: string
    noble?: __module
    quick?: boolean
    +

    Properties

    duration?: number
    id?: string
    model?: string
    noble?: __module
    quick?: boolean
    diff --git a/docs/interfaces/Rule.html b/docs/interfaces/Rule.html index e8477323..97f1701e 100644 --- a/docs/interfaces/Rule.html +++ b/docs/interfaces/Rule.html @@ -1,4 +1,4 @@ -Rule | node-switchbot

    Interface Rule

    interface Rule {
        enum?: unknown[];
        max?: number;
        maxBytes?: number;
        min?: number;
        minBytes?: number;
        pattern?: RegExp;
        required?: boolean;
        type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
    }

    Properties

    enum? +Rule | node-switchbot

    Interface Rule

    interface Rule {
        enum?: unknown[];
        max?: number;
        maxBytes?: number;
        min?: number;
        minBytes?: number;
        pattern?: RegExp;
        required?: boolean;
        type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
    }

    Properties

    Properties

    enum?: unknown[]
    max?: number
    maxBytes?: number
    min?: number
    minBytes?: number
    pattern?: RegExp
    required?: boolean
    type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
    +

    Properties

    enum?: unknown[]
    max?: number
    maxBytes?: number
    min?: number
    minBytes?: number
    pattern?: RegExp
    required?: boolean
    type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
    diff --git a/docs/interfaces/ServiceData.html b/docs/interfaces/ServiceData.html index aa9e1847..01d5e307 100644 --- a/docs/interfaces/ServiceData.html +++ b/docs/interfaces/ServiceData.html @@ -1,2 +1,2 @@ -ServiceData | node-switchbot

    Interface ServiceData

    interface ServiceData {
        model: string;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    Properties

    model: string
    +ServiceData | node-switchbot

    Interface ServiceData

    interface ServiceData {
        model: string;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    Properties

    model: string
    diff --git a/docs/interfaces/SwitchBotBLEDevice.html b/docs/interfaces/SwitchBotBLEDevice.html index c69f2ef2..d1ecbd92 100644 --- a/docs/interfaces/SwitchBotBLEDevice.html +++ b/docs/interfaces/SwitchBotBLEDevice.html @@ -1,4 +1,4 @@ -SwitchBotBLEDevice | node-switchbot

    Interface SwitchBotBLEDevice

    interface SwitchBotBLEDevice {
        BlindTilt: DeviceInfo;
        Bot: DeviceInfo;
        CeilingLight: DeviceInfo;
        CeilingLightPro: DeviceInfo;
        ColorBulb: DeviceInfo;
        ContactSensor: DeviceInfo;
        Curtain: DeviceInfo;
        Curtain3: DeviceInfo;
        Hub2: DeviceInfo;
        Humidifier: DeviceInfo;
        Lock: DeviceInfo;
        LockPro: DeviceInfo;
        Meter: DeviceInfo;
        MeterPlus: DeviceInfo;
        MeterPro: DeviceInfo;
        MeterProCO2: DeviceInfo;
        MotionSensor: DeviceInfo;
        OutdoorMeter: DeviceInfo;
        PlugMiniJP: DeviceInfo;
        PlugMiniUS: DeviceInfo;
        StripLight: DeviceInfo;
        Unknown: DeviceInfo;
    }

    Properties

    BlindTilt +SwitchBotBLEDevice | node-switchbot

    Interface SwitchBotBLEDevice

    interface SwitchBotBLEDevice {
        BlindTilt: DeviceInfo;
        Bot: DeviceInfo;
        CeilingLight: DeviceInfo;
        CeilingLightPro: DeviceInfo;
        ColorBulb: DeviceInfo;
        ContactSensor: DeviceInfo;
        Curtain: DeviceInfo;
        Curtain3: DeviceInfo;
        Hub2: DeviceInfo;
        Humidifier: DeviceInfo;
        Lock: DeviceInfo;
        LockPro: DeviceInfo;
        Meter: DeviceInfo;
        MeterPlus: DeviceInfo;
        MeterPro: DeviceInfo;
        MeterProCO2: DeviceInfo;
        MotionSensor: DeviceInfo;
        OutdoorMeter: DeviceInfo;
        PlugMiniJP: DeviceInfo;
        PlugMiniUS: DeviceInfo;
        StripLight: DeviceInfo;
        Unknown: DeviceInfo;
    }

    Properties

    BlindTilt: DeviceInfo
    Bot: DeviceInfo
    CeilingLight: DeviceInfo
    CeilingLightPro: DeviceInfo
    ColorBulb: DeviceInfo
    ContactSensor: DeviceInfo
    Curtain: DeviceInfo
    Curtain3: DeviceInfo
    Hub2: DeviceInfo
    Humidifier: DeviceInfo
    Lock: DeviceInfo
    LockPro: DeviceInfo
    Meter: DeviceInfo
    MeterPlus: DeviceInfo
    MeterPro: DeviceInfo
    MeterProCO2: DeviceInfo
    MotionSensor: DeviceInfo
    OutdoorMeter: DeviceInfo
    PlugMiniJP: DeviceInfo
    PlugMiniUS: DeviceInfo
    StripLight: DeviceInfo
    Unknown: DeviceInfo
    +

    Properties

    BlindTilt: DeviceInfo
    Bot: DeviceInfo
    CeilingLight: DeviceInfo
    CeilingLightPro: DeviceInfo
    ColorBulb: DeviceInfo
    ContactSensor: DeviceInfo
    Curtain: DeviceInfo
    Curtain3: DeviceInfo
    Hub2: DeviceInfo
    Humidifier: DeviceInfo
    Lock: DeviceInfo
    LockPro: DeviceInfo
    Meter: DeviceInfo
    MeterPlus: DeviceInfo
    MeterPro: DeviceInfo
    MeterProCO2: DeviceInfo
    MotionSensor: DeviceInfo
    OutdoorMeter: DeviceInfo
    PlugMiniJP: DeviceInfo
    PlugMiniUS: DeviceInfo
    StripLight: DeviceInfo
    Unknown: DeviceInfo
    diff --git a/docs/interfaces/WebhookDetail.html b/docs/interfaces/WebhookDetail.html index 1ecbc8ea..aa841c6c 100644 --- a/docs/interfaces/WebhookDetail.html +++ b/docs/interfaces/WebhookDetail.html @@ -1,6 +1,6 @@ -WebhookDetail | node-switchbot

    Interface WebhookDetail

    interface WebhookDetail {
        createTime: number;
        deviceList: string;
        enable: boolean;
        lastUpdateTime: number;
        url: string;
    }

    Properties

    createTime +WebhookDetail | node-switchbot

    Interface WebhookDetail

    interface WebhookDetail {
        createTime: number;
        deviceList: string;
        enable: boolean;
        lastUpdateTime: number;
        url: string;
    }

    Properties

    createTime: number
    deviceList: string
    enable: boolean
    lastUpdateTime: number
    url: string
    +

    Properties

    createTime: number
    deviceList: string
    enable: boolean
    lastUpdateTime: number
    url: string
    diff --git a/docs/interfaces/ad.html b/docs/interfaces/ad.html index ec8cdbc2..22c3935b 100644 --- a/docs/interfaces/ad.html +++ b/docs/interfaces/ad.html @@ -1,5 +1,5 @@ -ad | node-switchbot

    Interface ad

    interface ad {
        address: string;
        id: string;
        rssi: number;
        serviceData:
            | botServiceData
            | colorBulbServiceData
            | contactSensorServiceData
            | curtainServiceData
            | curtain3ServiceData
            | stripLightServiceData
            | lockServiceData
            | lockProServiceData
            | meterServiceData
            | meterPlusServiceData
            | meterProServiceData
            | meterProCO2ServiceData
            | outdoorMeterServiceData
            | motionSensorServiceData
            | plugMiniUSServiceData
            | plugMiniJPServiceData
            | blindTiltServiceData
            | ceilingLightServiceData
            | ceilingLightProServiceData
            | hub2ServiceData
            | batteryCirculatorFanServiceData
            | waterLeakDetectorServiceData
            | humidifierServiceData
            | humidifier2ServiceData
            | robotVacuumCleanerServiceData
            | keypadDetectorServiceData
            | relaySwitch1ServiceData
            | relaySwitch1PMServiceData
            | remoteServiceData;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    address +ad | node-switchbot

    Interface ad

    interface ad {
        address: string;
        id: string;
        rssi: number;
        serviceData:
            | botServiceData
            | colorBulbServiceData
            | contactSensorServiceData
            | curtainServiceData
            | curtain3ServiceData
            | stripLightServiceData
            | lockServiceData
            | lockProServiceData
            | meterServiceData
            | meterPlusServiceData
            | meterProServiceData
            | meterProCO2ServiceData
            | outdoorMeterServiceData
            | motionSensorServiceData
            | plugMiniUSServiceData
            | plugMiniJPServiceData
            | blindTiltServiceData
            | ceilingLightServiceData
            | ceilingLightProServiceData
            | hub2ServiceData
            | batteryCirculatorFanServiceData
            | waterLeakDetectorServiceData
            | humidifierServiceData
            | humidifier2ServiceData
            | robotVacuumCleanerServiceData
            | keypadDetectorServiceData
            | relaySwitch1ServiceData
            | relaySwitch1PMServiceData
            | remoteServiceData;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    address: string
    id: string
    rssi: number
    serviceData:
        | botServiceData
        | colorBulbServiceData
        | contactSensorServiceData
        | curtainServiceData
        | curtain3ServiceData
        | stripLightServiceData
        | lockServiceData
        | lockProServiceData
        | meterServiceData
        | meterPlusServiceData
        | meterProServiceData
        | meterProCO2ServiceData
        | outdoorMeterServiceData
        | motionSensorServiceData
        | plugMiniUSServiceData
        | plugMiniJPServiceData
        | blindTiltServiceData
        | ceilingLightServiceData
        | ceilingLightProServiceData
        | hub2ServiceData
        | batteryCirculatorFanServiceData
        | waterLeakDetectorServiceData
        | humidifierServiceData
        | humidifier2ServiceData
        | robotVacuumCleanerServiceData
        | keypadDetectorServiceData
        | relaySwitch1ServiceData
        | relaySwitch1PMServiceData
        | remoteServiceData
    +

    Properties

    address: string
    id: string
    rssi: number
    serviceData:
        | botServiceData
        | colorBulbServiceData
        | contactSensorServiceData
        | curtainServiceData
        | curtain3ServiceData
        | stripLightServiceData
        | lockServiceData
        | lockProServiceData
        | meterServiceData
        | meterPlusServiceData
        | meterProServiceData
        | meterProCO2ServiceData
        | outdoorMeterServiceData
        | motionSensorServiceData
        | plugMiniUSServiceData
        | plugMiniJPServiceData
        | blindTiltServiceData
        | ceilingLightServiceData
        | ceilingLightProServiceData
        | hub2ServiceData
        | batteryCirculatorFanServiceData
        | waterLeakDetectorServiceData
        | humidifierServiceData
        | humidifier2ServiceData
        | robotVacuumCleanerServiceData
        | keypadDetectorServiceData
        | relaySwitch1ServiceData
        | relaySwitch1PMServiceData
        | remoteServiceData
    diff --git a/docs/interfaces/body.html b/docs/interfaces/body.html index 7b127afb..4d76fa6e 100644 --- a/docs/interfaces/body.html +++ b/docs/interfaces/body.html @@ -1,3 +1,3 @@ -body | node-switchbot

    Interface body

    interface body {
        deviceList: deviceList;
        infraredRemoteList: infraredRemoteList;
    }

    Properties

    deviceList +body | node-switchbot

    Interface body

    interface body {
        deviceList: deviceList;
        infraredRemoteList: infraredRemoteList;
    }

    Properties

    deviceList: deviceList
    infraredRemoteList: infraredRemoteList
    +

    Properties

    deviceList: deviceList
    infraredRemoteList: infraredRemoteList
    diff --git a/docs/interfaces/bodyChange.html b/docs/interfaces/bodyChange.html index b98ebbc3..bce10983 100644 --- a/docs/interfaces/bodyChange.html +++ b/docs/interfaces/bodyChange.html @@ -1,4 +1,4 @@ -bodyChange | node-switchbot

    Interface bodyChange

    interface bodyChange {
        command: string;
        commandType: string;
        parameter: string;
    }

    Properties

    command +bodyChange | node-switchbot

    Interface bodyChange

    interface bodyChange {
        command: string;
        commandType: string;
        parameter: string;
    }

    Properties

    command: string
    commandType: string
    parameter: string
    +

    Properties

    command: string
    commandType: string
    parameter: string
    diff --git a/docs/interfaces/deleteWebhookResponse.html b/docs/interfaces/deleteWebhookResponse.html index c7593b91..1df44e35 100644 --- a/docs/interfaces/deleteWebhookResponse.html +++ b/docs/interfaces/deleteWebhookResponse.html @@ -1,4 +1,4 @@ -deleteWebhookResponse | node-switchbot

    Interface deleteWebhookResponse

    interface deleteWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +deleteWebhookResponse | node-switchbot

    Interface deleteWebhookResponse

    interface deleteWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/device.html b/docs/interfaces/device.html index f2dcf165..52d4f675 100644 --- a/docs/interfaces/device.html +++ b/docs/interfaces/device.html @@ -1,7 +1,7 @@ -device | node-switchbot

    Interface device

    interface device {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version?: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId +device | node-switchbot

    Interface device

    interface device {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version?: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version?: number
    +

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version?: number
    diff --git a/docs/interfaces/deviceList.html b/docs/interfaces/deviceList.html index 733f944c..c42854a7 100644 --- a/docs/interfaces/deviceList.html +++ b/docs/interfaces/deviceList.html @@ -1,2 +1,2 @@ -deviceList | node-switchbot

    Interface deviceList

    interface deviceList {
        device: device[];
    }

    Properties

    Properties

    device: device[]
    +deviceList | node-switchbot

    Interface deviceList

    interface deviceList {
        device: device[];
    }

    Properties

    Properties

    device: device[]
    diff --git a/docs/interfaces/deviceStatus.html b/docs/interfaces/deviceStatus.html index 3d09fb4b..09359e17 100644 --- a/docs/interfaces/deviceStatus.html +++ b/docs/interfaces/deviceStatus.html @@ -1,7 +1,7 @@ -deviceStatus | node-switchbot

    Interface deviceStatus

    interface deviceStatus {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId +deviceStatus | node-switchbot

    Interface deviceStatus

    interface deviceStatus {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version: number
    +

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version: number
    diff --git a/docs/interfaces/deviceStatusRequest.html b/docs/interfaces/deviceStatusRequest.html index 79bdc58f..826acae0 100644 --- a/docs/interfaces/deviceStatusRequest.html +++ b/docs/interfaces/deviceStatusRequest.html @@ -1,4 +1,4 @@ -deviceStatusRequest | node-switchbot

    Interface deviceStatusRequest

    interface deviceStatusRequest {
        body: deviceStatus;
        message: string;
        statusCode: number;
    }

    Properties

    body +deviceStatusRequest | node-switchbot

    Interface deviceStatusRequest

    interface deviceStatusRequest {
        body: deviceStatus;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    message: string
    statusCode: number
    +

    Properties

    message: string
    statusCode: number
    diff --git a/docs/interfaces/deviceWebhook.html b/docs/interfaces/deviceWebhook.html index 79e6d56e..a92f7225 100644 --- a/docs/interfaces/deviceWebhook.html +++ b/docs/interfaces/deviceWebhook.html @@ -1,4 +1,4 @@ -deviceWebhook | node-switchbot

    Interface deviceWebhook

    interface deviceWebhook {
        context: deviceWebhookContext;
        eventType: string;
        eventVersion: string;
    }

    Properties

    context +deviceWebhook | node-switchbot

    Interface deviceWebhook

    interface deviceWebhook {
        context: deviceWebhookContext;
        eventType: string;
        eventVersion: string;
    }

    Properties

    eventType: string
    eventVersion: string
    +

    Properties

    eventType: string
    eventVersion: string
    diff --git a/docs/interfaces/deviceWebhookContext.html b/docs/interfaces/deviceWebhookContext.html index bd4fce4f..4d459118 100644 --- a/docs/interfaces/deviceWebhookContext.html +++ b/docs/interfaces/deviceWebhookContext.html @@ -1,4 +1,4 @@ -deviceWebhookContext | node-switchbot

    Interface deviceWebhookContext

    interface deviceWebhookContext {
        deviceMac: string;
        deviceType: string;
        timeOfSample: number;
    }

    Properties

    deviceMac +deviceWebhookContext | node-switchbot

    Interface deviceWebhookContext

    interface deviceWebhookContext {
        deviceMac: string;
        deviceType: string;
        timeOfSample: number;
    }

    Properties

    deviceMac: string
    deviceType: string
    timeOfSample: number
    +

    Properties

    deviceMac: string
    deviceType: string
    timeOfSample: number
    diff --git a/docs/interfaces/devices.html b/docs/interfaces/devices.html index 56287811..57654d71 100644 --- a/docs/interfaces/devices.html +++ b/docs/interfaces/devices.html @@ -1,4 +1,4 @@ -devices | node-switchbot

    Interface devices

    interface devices {
        body: body;
        message: string;
        statusCode: number;
    }

    Properties

    body +devices | node-switchbot

    Interface devices

    interface devices {
        body: body;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: body
    message: string
    statusCode: number
    +

    Properties

    body: body
    message: string
    statusCode: number
    diff --git a/docs/interfaces/infraredRemoteList.html b/docs/interfaces/infraredRemoteList.html index 6d98950f..db55c87c 100644 --- a/docs/interfaces/infraredRemoteList.html +++ b/docs/interfaces/infraredRemoteList.html @@ -1,2 +1,2 @@ -infraredRemoteList | node-switchbot

    Interface infraredRemoteList

    interface infraredRemoteList {
        device: irdevice[];
    }

    Properties

    Properties

    device: irdevice[]
    +infraredRemoteList | node-switchbot

    Interface infraredRemoteList

    interface infraredRemoteList {
        device: irdevice[];
    }

    Properties

    Properties

    device: irdevice[]
    diff --git a/docs/interfaces/irdevice.html b/docs/interfaces/irdevice.html index 08dadb6d..c331cf6e 100644 --- a/docs/interfaces/irdevice.html +++ b/docs/interfaces/irdevice.html @@ -1,5 +1,5 @@ -irdevice | node-switchbot

    Interface irdevice

    interface irdevice {
        deviceId?: string;
        deviceName: string;
        hubDeviceId: string;
        remoteType: string;
    }

    Properties

    deviceId? +irdevice | node-switchbot

    Interface irdevice

    interface irdevice {
        deviceId?: string;
        deviceName: string;
        hubDeviceId: string;
        remoteType: string;
    }

    Properties

    deviceId?: string
    deviceName: string
    hubDeviceId: string
    remoteType: string
    +

    Properties

    deviceId?: string
    deviceName: string
    hubDeviceId: string
    remoteType: string
    diff --git a/docs/interfaces/pushResponse.html b/docs/interfaces/pushResponse.html index 2bf447bf..fb036ffb 100644 --- a/docs/interfaces/pushResponse.html +++ b/docs/interfaces/pushResponse.html @@ -1,4 +1,4 @@ -pushResponse | node-switchbot

    Interface pushResponse

    interface pushResponse {
        body: { commandId: string };
        message: string;
        statusCode: number;
    }

    Properties

    body +pushResponse | node-switchbot

    Interface pushResponse

    interface pushResponse {
        body: { commandId: string };
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: { commandId: string }
    message: string
    statusCode: number
    +

    Properties

    body: { commandId: string }
    message: string
    statusCode: number
    diff --git a/docs/interfaces/queryWebhookResponse.html b/docs/interfaces/queryWebhookResponse.html index d6b2d461..5e2d181c 100644 --- a/docs/interfaces/queryWebhookResponse.html +++ b/docs/interfaces/queryWebhookResponse.html @@ -1,4 +1,4 @@ -queryWebhookResponse | node-switchbot

    Interface queryWebhookResponse

    interface queryWebhookResponse {
        body: WebhookDetail[];
        message: string;
        statusCode: number;
    }

    Properties

    body +queryWebhookResponse | node-switchbot

    Interface queryWebhookResponse

    interface queryWebhookResponse {
        body: WebhookDetail[];
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    message: string
    statusCode: number
    +

    Properties

    message: string
    statusCode: number
    diff --git a/docs/interfaces/setupWebhookResponse.html b/docs/interfaces/setupWebhookResponse.html index 7a8c1dbc..7b660153 100644 --- a/docs/interfaces/setupWebhookResponse.html +++ b/docs/interfaces/setupWebhookResponse.html @@ -1,4 +1,4 @@ -setupWebhookResponse | node-switchbot

    Interface setupWebhookResponse

    interface setupWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +setupWebhookResponse | node-switchbot

    Interface setupWebhookResponse

    interface setupWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/switchbot.html b/docs/interfaces/switchbot.html index b8898935..1822ae26 100644 --- a/docs/interfaces/switchbot.html +++ b/docs/interfaces/switchbot.html @@ -1,3 +1,3 @@ -switchbot | node-switchbot

    Interface switchbot

    interface switchbot {
        discover: (
            arg0: { duration?: any; id?: string; model: string; quick: boolean },
        ) => Promise<any>;
        wait: (arg0: number) => any;
    }

    Properties

    discover +switchbot | node-switchbot

    Interface switchbot

    interface switchbot {
        discover: (
            arg0: { duration?: any; id?: string; model: string; quick: boolean },
        ) => Promise<any>;
        wait: (arg0: number) => any;
    }

    Properties

    Properties

    discover: (
        arg0: { duration?: any; id?: string; model: string; quick: boolean },
    ) => Promise<any>
    wait: (arg0: number) => any
    +

    Properties

    discover: (
        arg0: { duration?: any; id?: string; model: string; quick: boolean },
    ) => Promise<any>
    wait: (arg0: number) => any
    diff --git a/docs/interfaces/updateWebhookResponse.html b/docs/interfaces/updateWebhookResponse.html index 19ca9499..10802315 100644 --- a/docs/interfaces/updateWebhookResponse.html +++ b/docs/interfaces/updateWebhookResponse.html @@ -1,4 +1,4 @@ -updateWebhookResponse | node-switchbot

    Interface updateWebhookResponse

    interface updateWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +updateWebhookResponse | node-switchbot

    Interface updateWebhookResponse

    interface updateWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/webhookRequest.html b/docs/interfaces/webhookRequest.html index 66ea3ba7..41eeb76a 100644 --- a/docs/interfaces/webhookRequest.html +++ b/docs/interfaces/webhookRequest.html @@ -1,4 +1,4 @@ -webhookRequest | node-switchbot

    Interface webhookRequest

    interface webhookRequest {
        action: string;
        deviceList: string;
        url: string;
    }

    Properties

    action +webhookRequest | node-switchbot

    Interface webhookRequest

    interface webhookRequest {
        action: string;
        deviceList: string;
        url: string;
    }

    Properties

    Properties

    action: string
    deviceList: string
    url: string
    +

    Properties

    action: string
    deviceList: string
    url: string
    diff --git a/docs/types/MacAddress.html b/docs/types/MacAddress.html index a4aa0ac5..a24f0658 100644 --- a/docs/types/MacAddress.html +++ b/docs/types/MacAddress.html @@ -1 +1 @@ -MacAddress | node-switchbot

    Type Alias MacAddress

    MacAddress: string
    +MacAddress | node-switchbot

    Type Alias MacAddress

    MacAddress: string
    diff --git a/docs/types/batteryCirculatorFan.html b/docs/types/batteryCirculatorFan.html index 808a2a81..59dc8560 100644 --- a/docs/types/batteryCirculatorFan.html +++ b/docs/types/batteryCirculatorFan.html @@ -1 +1 @@ -batteryCirculatorFan | node-switchbot

    Type Alias batteryCirculatorFan

    batteryCirculatorFan: device & {}
    +batteryCirculatorFan | node-switchbot

    Type Alias batteryCirculatorFan

    batteryCirculatorFan: device & {}
    diff --git a/docs/types/batteryCirculatorFanServiceData.html b/docs/types/batteryCirculatorFanServiceData.html index 9e19bc6c..9c53c8c9 100644 --- a/docs/types/batteryCirculatorFanServiceData.html +++ b/docs/types/batteryCirculatorFanServiceData.html @@ -1 +1 @@ -batteryCirculatorFanServiceData | node-switchbot

    Type Alias batteryCirculatorFanServiceData

    batteryCirculatorFanServiceData: serviceData & {
        fanSpeed: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    +batteryCirculatorFanServiceData | node-switchbot

    Type Alias batteryCirculatorFanServiceData

    batteryCirculatorFanServiceData: serviceData & {
        fanSpeed: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    diff --git a/docs/types/batteryCirculatorFanStatus.html b/docs/types/batteryCirculatorFanStatus.html index 13a8da90..a68aaa8f 100644 --- a/docs/types/batteryCirculatorFanStatus.html +++ b/docs/types/batteryCirculatorFanStatus.html @@ -1 +1 @@ -batteryCirculatorFanStatus | node-switchbot

    Type Alias batteryCirculatorFanStatus

    batteryCirculatorFanStatus: deviceStatus & {
        battery: number;
        chargingStatus: string;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    +batteryCirculatorFanStatus | node-switchbot

    Type Alias batteryCirculatorFanStatus

    batteryCirculatorFanStatus: deviceStatus & {
        battery: number;
        chargingStatus: string;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    diff --git a/docs/types/batteryCirculatorFanWebhookContext.html b/docs/types/batteryCirculatorFanWebhookContext.html index b3ce83ad..9118b7e7 100644 --- a/docs/types/batteryCirculatorFanWebhookContext.html +++ b/docs/types/batteryCirculatorFanWebhookContext.html @@ -1 +1 @@ -batteryCirculatorFanWebhookContext | node-switchbot

    Type Alias batteryCirculatorFanWebhookContext

    batteryCirculatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        chargingStatus: "charging" | "uncharged";
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    +batteryCirculatorFanWebhookContext | node-switchbot

    Type Alias batteryCirculatorFanWebhookContext

    batteryCirculatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        chargingStatus: "charging" | "uncharged";
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    diff --git a/docs/types/blindTilt.html b/docs/types/blindTilt.html index 5b983b08..ecf0cbff 100644 --- a/docs/types/blindTilt.html +++ b/docs/types/blindTilt.html @@ -1 +1 @@ -blindTilt | node-switchbot

    Type Alias blindTilt

    blindTilt: device & {
        blindTiltDevicesIds: string[];
        calibrate: boolean;
        direction: string;
        group: boolean;
        master: boolean;
        slidePosition: number;
    }
    +blindTilt | node-switchbot

    Type Alias blindTilt

    blindTilt: device & {
        blindTiltDevicesIds: string[];
        calibrate: boolean;
        direction: string;
        group: boolean;
        master: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/blindTiltServiceData.html b/docs/types/blindTiltServiceData.html index d29b85b8..17bde8f4 100644 --- a/docs/types/blindTiltServiceData.html +++ b/docs/types/blindTiltServiceData.html @@ -1 +1 @@ -blindTiltServiceData | node-switchbot

    Type Alias blindTiltServiceData

    blindTiltServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        inMotion: boolean;
        lightLevel: number;
        model: BlindTilt;
        modelFriendlyName: BlindTilt;
        modelName: BlindTilt;
        sequenceNumber: number;
        tilt: number;
    }
    +blindTiltServiceData | node-switchbot

    Type Alias blindTiltServiceData

    blindTiltServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        inMotion: boolean;
        lightLevel: number;
        model: BlindTilt;
        modelFriendlyName: BlindTilt;
        modelName: BlindTilt;
        sequenceNumber: number;
        tilt: number;
    }
    diff --git a/docs/types/blindTiltStatus.html b/docs/types/blindTiltStatus.html index 92d03a66..7f576c26 100644 --- a/docs/types/blindTiltStatus.html +++ b/docs/types/blindTiltStatus.html @@ -1 +1 @@ -blindTiltStatus | node-switchbot

    Type Alias blindTiltStatus

    blindTiltStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        direction: string;
        lightLevel?: "bright" | "dim";
        slidePosition: string;
    }
    +blindTiltStatus | node-switchbot

    Type Alias blindTiltStatus

    blindTiltStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        direction: string;
        lightLevel?: "bright" | "dim";
        slidePosition: string;
    }
    diff --git a/docs/types/blindTiltWebhookContext.html b/docs/types/blindTiltWebhookContext.html index b84a5f3e..06e37dbf 100644 --- a/docs/types/blindTiltWebhookContext.html +++ b/docs/types/blindTiltWebhookContext.html @@ -1 +1 @@ -blindTiltWebhookContext | node-switchbot

    Type Alias blindTiltWebhookContext

    blindTiltWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        direction: string;
        group: boolean;
        slidePosition: number;
        version: string;
    }
    +blindTiltWebhookContext | node-switchbot

    Type Alias blindTiltWebhookContext

    blindTiltWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        direction: string;
        group: boolean;
        slidePosition: number;
        version: string;
    }
    diff --git a/docs/types/bot.html b/docs/types/bot.html index 3f10c685..467010e6 100644 --- a/docs/types/bot.html +++ b/docs/types/bot.html @@ -1 +1 @@ -bot | node-switchbot

    Type Alias bot

    bot: device & {}
    +bot | node-switchbot

    Type Alias bot

    bot: device & {}
    diff --git a/docs/types/botServiceData.html b/docs/types/botServiceData.html index 49025142..a196e311 100644 --- a/docs/types/botServiceData.html +++ b/docs/types/botServiceData.html @@ -1 +1 @@ -botServiceData | node-switchbot

    Type Alias botServiceData

    botServiceData: serviceData & {
        battery: number;
        mode: boolean;
        model: Bot;
        modelFriendlyName: Bot;
        modelName: Bot;
        state: boolean;
    }
    +botServiceData | node-switchbot

    Type Alias botServiceData

    botServiceData: serviceData & {
        battery: number;
        mode: boolean;
        model: Bot;
        modelFriendlyName: Bot;
        modelName: Bot;
        state: boolean;
    }
    diff --git a/docs/types/botStatus.html b/docs/types/botStatus.html index d027313d..914be20b 100644 --- a/docs/types/botStatus.html +++ b/docs/types/botStatus.html @@ -1 +1 @@ -botStatus | node-switchbot

    Type Alias botStatus

    botStatus: deviceStatus & {
        battery: number;
        mode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    +botStatus | node-switchbot

    Type Alias botStatus

    botStatus: deviceStatus & {
        battery: number;
        mode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    diff --git a/docs/types/botWebhookContext.html b/docs/types/botWebhookContext.html index a08ac08c..f537bac4 100644 --- a/docs/types/botWebhookContext.html +++ b/docs/types/botWebhookContext.html @@ -1 +1 @@ -botWebhookContext | node-switchbot

    Type Alias botWebhookContext

    botWebhookContext: deviceWebhookContext & {
        battery: number;
        deviceMode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    +botWebhookContext | node-switchbot

    Type Alias botWebhookContext

    botWebhookContext: deviceWebhookContext & {
        battery: number;
        deviceMode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    diff --git a/docs/types/ceilingLight.html b/docs/types/ceilingLight.html index 87da08a1..59b677db 100644 --- a/docs/types/ceilingLight.html +++ b/docs/types/ceilingLight.html @@ -1 +1 @@ -ceilingLight | node-switchbot

    Type Alias ceilingLight

    ceilingLight: device & {}
    +ceilingLight | node-switchbot

    Type Alias ceilingLight

    ceilingLight: device & {}
    diff --git a/docs/types/ceilingLightPro.html b/docs/types/ceilingLightPro.html index 518c2b09..af8b8ae2 100644 --- a/docs/types/ceilingLightPro.html +++ b/docs/types/ceilingLightPro.html @@ -1 +1 @@ -ceilingLightPro | node-switchbot

    Type Alias ceilingLightPro

    ceilingLightPro: device & {}
    +ceilingLightPro | node-switchbot

    Type Alias ceilingLightPro

    ceilingLightPro: device & {}
    diff --git a/docs/types/ceilingLightProServiceData.html b/docs/types/ceilingLightProServiceData.html index 4bd99054..546f567b 100644 --- a/docs/types/ceilingLightProServiceData.html +++ b/docs/types/ceilingLightProServiceData.html @@ -1 +1 @@ -ceilingLightProServiceData | node-switchbot

    Type Alias ceilingLightProServiceData

    ceilingLightProServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLightPro;
        modelFriendlyName: CeilingLightPro;
        modelName: CeilingLightPro;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +ceilingLightProServiceData | node-switchbot

    Type Alias ceilingLightProServiceData

    ceilingLightProServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLightPro;
        modelFriendlyName: CeilingLightPro;
        modelName: CeilingLightPro;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/ceilingLightProStatus.html b/docs/types/ceilingLightProStatus.html index 7c2d1cfe..80813737 100644 --- a/docs/types/ceilingLightProStatus.html +++ b/docs/types/ceilingLightProStatus.html @@ -1 +1 @@ -ceilingLightProStatus | node-switchbot

    Type Alias ceilingLightProStatus

    ceilingLightProStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    +ceilingLightProStatus | node-switchbot

    Type Alias ceilingLightProStatus

    ceilingLightProStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    diff --git a/docs/types/ceilingLightProWebhookContext.html b/docs/types/ceilingLightProWebhookContext.html index a7123a16..9bd2bb83 100644 --- a/docs/types/ceilingLightProWebhookContext.html +++ b/docs/types/ceilingLightProWebhookContext.html @@ -1 +1 @@ -ceilingLightProWebhookContext | node-switchbot

    Type Alias ceilingLightProWebhookContext

    ceilingLightProWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +ceilingLightProWebhookContext | node-switchbot

    Type Alias ceilingLightProWebhookContext

    ceilingLightProWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/ceilingLightServiceData.html b/docs/types/ceilingLightServiceData.html index ee710608..6e49987b 100644 --- a/docs/types/ceilingLightServiceData.html +++ b/docs/types/ceilingLightServiceData.html @@ -1 +1 @@ -ceilingLightServiceData | node-switchbot

    Type Alias ceilingLightServiceData

    ceilingLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLight;
        modelFriendlyName: CeilingLight;
        modelName: CeilingLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +ceilingLightServiceData | node-switchbot

    Type Alias ceilingLightServiceData

    ceilingLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLight;
        modelFriendlyName: CeilingLight;
        modelName: CeilingLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/ceilingLightStatus.html b/docs/types/ceilingLightStatus.html index 04af2ea2..6a549a73 100644 --- a/docs/types/ceilingLightStatus.html +++ b/docs/types/ceilingLightStatus.html @@ -1 +1 @@ -ceilingLightStatus | node-switchbot

    Type Alias ceilingLightStatus

    ceilingLightStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    +ceilingLightStatus | node-switchbot

    Type Alias ceilingLightStatus

    ceilingLightStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    diff --git a/docs/types/ceilingLightWebhookContext.html b/docs/types/ceilingLightWebhookContext.html index a7794522..3740b02a 100644 --- a/docs/types/ceilingLightWebhookContext.html +++ b/docs/types/ceilingLightWebhookContext.html @@ -1 +1 @@ -ceilingLightWebhookContext | node-switchbot

    Type Alias ceilingLightWebhookContext

    ceilingLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +ceilingLightWebhookContext | node-switchbot

    Type Alias ceilingLightWebhookContext

    ceilingLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/circulatorFanStatus.html b/docs/types/circulatorFanStatus.html index e8ae13f1..afa58eca 100644 --- a/docs/types/circulatorFanStatus.html +++ b/docs/types/circulatorFanStatus.html @@ -1 +1 @@ -circulatorFanStatus | node-switchbot

    Type Alias circulatorFanStatus

    circulatorFanStatus: deviceStatus & {
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    +circulatorFanStatus | node-switchbot

    Type Alias circulatorFanStatus

    circulatorFanStatus: deviceStatus & {
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    diff --git a/docs/types/circulatorFanWebhookContext.html b/docs/types/circulatorFanWebhookContext.html index d96085af..c48c0526 100644 --- a/docs/types/circulatorFanWebhookContext.html +++ b/docs/types/circulatorFanWebhookContext.html @@ -1 +1 @@ -circulatorFanWebhookContext | node-switchbot

    Type Alias circulatorFanWebhookContext

    circulatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    +circulatorFanWebhookContext | node-switchbot

    Type Alias circulatorFanWebhookContext

    circulatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    diff --git a/docs/types/colorBulb.html b/docs/types/colorBulb.html index a9011486..65266f88 100644 --- a/docs/types/colorBulb.html +++ b/docs/types/colorBulb.html @@ -1 +1 @@ -colorBulb | node-switchbot

    Type Alias colorBulb

    colorBulb: device & {}
    +colorBulb | node-switchbot

    Type Alias colorBulb

    colorBulb: device & {}
    diff --git a/docs/types/colorBulbServiceData.html b/docs/types/colorBulbServiceData.html index 4e3e88a0..6e25646b 100644 --- a/docs/types/colorBulbServiceData.html +++ b/docs/types/colorBulbServiceData.html @@ -1 +1 @@ -colorBulbServiceData | node-switchbot

    Type Alias colorBulbServiceData

    colorBulbServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: ColorBulb;
        modelFriendlyName: ColorBulb;
        modelName: ColorBulb;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +colorBulbServiceData | node-switchbot

    Type Alias colorBulbServiceData

    colorBulbServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: ColorBulb;
        modelFriendlyName: ColorBulb;
        modelName: ColorBulb;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/colorBulbStatus.html b/docs/types/colorBulbStatus.html index 0c364463..cf54b614 100644 --- a/docs/types/colorBulbStatus.html +++ b/docs/types/colorBulbStatus.html @@ -1 +1 @@ -colorBulbStatus | node-switchbot

    Type Alias colorBulbStatus

    colorBulbStatus: deviceStatus & {
        brightness: number;
        color: string;
        colorTemperature: number;
        power: string;
    }
    +colorBulbStatus | node-switchbot

    Type Alias colorBulbStatus

    colorBulbStatus: deviceStatus & {
        brightness: number;
        color: string;
        colorTemperature: number;
        power: string;
    }
    diff --git a/docs/types/colorBulbWebhookContext.html b/docs/types/colorBulbWebhookContext.html index 58d4854c..bed74f8f 100644 --- a/docs/types/colorBulbWebhookContext.html +++ b/docs/types/colorBulbWebhookContext.html @@ -1 +1 @@ -colorBulbWebhookContext | node-switchbot

    Type Alias colorBulbWebhookContext

    colorBulbWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +colorBulbWebhookContext | node-switchbot

    Type Alias colorBulbWebhookContext

    colorBulbWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/contactSensor.html b/docs/types/contactSensor.html index 6ffc5a31..45621b9f 100644 --- a/docs/types/contactSensor.html +++ b/docs/types/contactSensor.html @@ -1 +1 @@ -contactSensor | node-switchbot

    Type Alias contactSensor

    contactSensor: device & {}
    +contactSensor | node-switchbot

    Type Alias contactSensor

    contactSensor: device & {}
    diff --git a/docs/types/contactSensorServiceData.html b/docs/types/contactSensorServiceData.html index d4769f3b..5c277901 100644 --- a/docs/types/contactSensorServiceData.html +++ b/docs/types/contactSensorServiceData.html @@ -1 +1 @@ -contactSensorServiceData | node-switchbot

    Type Alias contactSensorServiceData

    contactSensorServiceData: serviceData & {
        battery: number;
        button_count: number;
        contact_open: boolean;
        contact_timeout: boolean;
        doorState: string;
        lightLevel: string;
        model: ContactSensor;
        modelFriendlyName: ContactSensor;
        modelName: ContactSensor;
        movement: boolean;
        tested: boolean;
    }
    +contactSensorServiceData | node-switchbot

    Type Alias contactSensorServiceData

    contactSensorServiceData: serviceData & {
        battery: number;
        button_count: number;
        contact_open: boolean;
        contact_timeout: boolean;
        doorState: string;
        lightLevel: string;
        model: ContactSensor;
        modelFriendlyName: ContactSensor;
        modelName: ContactSensor;
        movement: boolean;
        tested: boolean;
    }
    diff --git a/docs/types/contactSensorStatus.html b/docs/types/contactSensorStatus.html index edb58a11..1a772719 100644 --- a/docs/types/contactSensorStatus.html +++ b/docs/types/contactSensorStatus.html @@ -1 +1 @@ -contactSensorStatus | node-switchbot

    Type Alias contactSensorStatus

    contactSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
        openState: "open" | "close" | "timeOutNotClose";
    }
    +contactSensorStatus | node-switchbot

    Type Alias contactSensorStatus

    contactSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
        openState: "open" | "close" | "timeOutNotClose";
    }
    diff --git a/docs/types/contactSensorWebhookContext.html b/docs/types/contactSensorWebhookContext.html index af06dbef..eba4215f 100644 --- a/docs/types/contactSensorWebhookContext.html +++ b/docs/types/contactSensorWebhookContext.html @@ -1 +1 @@ -contactSensorWebhookContext | node-switchbot

    Type Alias contactSensorWebhookContext

    contactSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        brightness: "dim" | "bright";
        detectionState: "NOT_DETECTED" | "DETECTED";
        doorMode: "IN_DOOR" | "OUT_DOOR";
        openState: "open" | "close" | "timeOutNotClose";
    }
    +contactSensorWebhookContext | node-switchbot

    Type Alias contactSensorWebhookContext

    contactSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        brightness: "dim" | "bright";
        detectionState: "NOT_DETECTED" | "DETECTED";
        doorMode: "IN_DOOR" | "OUT_DOOR";
        openState: "open" | "close" | "timeOutNotClose";
    }
    diff --git a/docs/types/curtain.html b/docs/types/curtain.html index 50f27f0a..c2639afa 100644 --- a/docs/types/curtain.html +++ b/docs/types/curtain.html @@ -1 +1 @@ -curtain | node-switchbot

    Type Alias curtain

    curtain: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection: string;
    }
    +curtain | node-switchbot

    Type Alias curtain

    curtain: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection: string;
    }
    diff --git a/docs/types/curtain3.html b/docs/types/curtain3.html index 45abd19b..efba7553 100644 --- a/docs/types/curtain3.html +++ b/docs/types/curtain3.html @@ -1 +1 @@ -curtain3 | node-switchbot

    Type Alias curtain3

    curtain3: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection?: string;
    }
    +curtain3 | node-switchbot

    Type Alias curtain3

    curtain3: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection?: string;
    }
    diff --git a/docs/types/curtain3ServiceData.html b/docs/types/curtain3ServiceData.html index 0d7332da..0c344724 100644 --- a/docs/types/curtain3ServiceData.html +++ b/docs/types/curtain3ServiceData.html @@ -1 +1 @@ -curtain3ServiceData | node-switchbot

    Type Alias curtain3ServiceData

    curtain3ServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain3;
        modelFriendlyName: Curtain3;
        modelName: Curtain3;
        position: number;
    }
    +curtain3ServiceData | node-switchbot

    Type Alias curtain3ServiceData

    curtain3ServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain3;
        modelFriendlyName: Curtain3;
        modelName: Curtain3;
        position: number;
    }
    diff --git a/docs/types/curtain3WebhookContext.html b/docs/types/curtain3WebhookContext.html index 4b81ed99..73c9406f 100644 --- a/docs/types/curtain3WebhookContext.html +++ b/docs/types/curtain3WebhookContext.html @@ -1 +1 @@ -curtain3WebhookContext | node-switchbot

    Type Alias curtain3WebhookContext

    curtain3WebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    +curtain3WebhookContext | node-switchbot

    Type Alias curtain3WebhookContext

    curtain3WebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/curtainServiceData.html b/docs/types/curtainServiceData.html index 1244333a..df0e5b13 100644 --- a/docs/types/curtainServiceData.html +++ b/docs/types/curtainServiceData.html @@ -1 +1 @@ -curtainServiceData | node-switchbot

    Type Alias curtainServiceData

    curtainServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain;
        modelFriendlyName: Curtain;
        modelName: Curtain;
        position: number;
    }
    +curtainServiceData | node-switchbot

    Type Alias curtainServiceData

    curtainServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain;
        modelFriendlyName: Curtain;
        modelName: Curtain;
        position: number;
    }
    diff --git a/docs/types/curtainStatus.html b/docs/types/curtainStatus.html index 78b247a4..6f42acc6 100644 --- a/docs/types/curtainStatus.html +++ b/docs/types/curtainStatus.html @@ -1 +1 @@ -curtainStatus | node-switchbot

    Type Alias curtainStatus

    curtainStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        lightLevel?: "bright" | "dim";
        moving: boolean;
        slidePosition: number;
    }
    +curtainStatus | node-switchbot

    Type Alias curtainStatus

    curtainStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        lightLevel?: "bright" | "dim";
        moving: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/curtainWebhookContext.html b/docs/types/curtainWebhookContext.html index 0dcbf93d..a8214c90 100644 --- a/docs/types/curtainWebhookContext.html +++ b/docs/types/curtainWebhookContext.html @@ -1 +1 @@ -curtainWebhookContext | node-switchbot

    Type Alias curtainWebhookContext

    curtainWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    +curtainWebhookContext | node-switchbot

    Type Alias curtainWebhookContext

    curtainWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/floorCleaningRobotS10.html b/docs/types/floorCleaningRobotS10.html index c072533f..32d5c86a 100644 --- a/docs/types/floorCleaningRobotS10.html +++ b/docs/types/floorCleaningRobotS10.html @@ -1 +1 @@ -floorCleaningRobotS10 | node-switchbot

    Type Alias floorCleaningRobotS10

    floorCleaningRobotS10: device & {}
    +floorCleaningRobotS10 | node-switchbot

    Type Alias floorCleaningRobotS10

    floorCleaningRobotS10: device & {}
    diff --git a/docs/types/floorCleaningRobotS10Status.html b/docs/types/floorCleaningRobotS10Status.html index 5e3b9542..2e5f6563 100644 --- a/docs/types/floorCleaningRobotS10Status.html +++ b/docs/types/floorCleaningRobotS10Status.html @@ -1 +1 @@ -floorCleaningRobotS10Status | node-switchbot

    Type Alias floorCleaningRobotS10Status

    floorCleaningRobotS10Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        taskType: string;
        waterBaseBattery: number;
        workingStatus: string;
    }
    +floorCleaningRobotS10Status | node-switchbot

    Type Alias floorCleaningRobotS10Status

    floorCleaningRobotS10Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        taskType: string;
        waterBaseBattery: number;
        workingStatus: string;
    }
    diff --git a/docs/types/floorCleaningRobotS10WebhookContext.html b/docs/types/floorCleaningRobotS10WebhookContext.html index 2de4056f..1b1e7c75 100644 --- a/docs/types/floorCleaningRobotS10WebhookContext.html +++ b/docs/types/floorCleaningRobotS10WebhookContext.html @@ -1 +1 @@ -floorCleaningRobotS10WebhookContext | node-switchbot

    Type Alias floorCleaningRobotS10WebhookContext

    floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        taskType:
            | "standBy"
            | "explore"
            | "cleanAll"
            | "cleanArea"
            | "cleanRoom"
            | "fillWater"
            | "deepWashing"
            | "backToCharge"
            | "markingWaterBase"
            | "drying"
            | "collectDust"
            | "remoteControl"
            | "cleanWithExplorer"
            | "fillWaterForHumi"
            | "markingHumi";
        waterBaseBattery: number;
        workingStatus: | "Standby"
        | "Clearing"
        | "Paused"
        | "GotoChargeBase"
        | "Charging"
        | "ChargeDone"
        | "Dormant"
        | "InTrouble"
        | "InRemoteControl"
        | "InDustCollecting";
    }
    +floorCleaningRobotS10WebhookContext | node-switchbot

    Type Alias floorCleaningRobotS10WebhookContext

    floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        taskType:
            | "standBy"
            | "explore"
            | "cleanAll"
            | "cleanArea"
            | "cleanRoom"
            | "fillWater"
            | "deepWashing"
            | "backToCharge"
            | "markingWaterBase"
            | "drying"
            | "collectDust"
            | "remoteControl"
            | "cleanWithExplorer"
            | "fillWaterForHumi"
            | "markingHumi";
        waterBaseBattery: number;
        workingStatus: | "Standby"
        | "Clearing"
        | "Paused"
        | "GotoChargeBase"
        | "Charging"
        | "ChargeDone"
        | "Dormant"
        | "InTrouble"
        | "InRemoteControl"
        | "InDustCollecting";
    }
    diff --git a/docs/types/hub2.html b/docs/types/hub2.html index 58a3f264..9f0e6a88 100644 --- a/docs/types/hub2.html +++ b/docs/types/hub2.html @@ -1 +1 @@ -hub2 | node-switchbot

    Type Alias hub2

    hub2: device & {}
    +hub2 | node-switchbot

    Type Alias hub2

    hub2: device & {}
    diff --git a/docs/types/hub2ServiceData.html b/docs/types/hub2ServiceData.html index c9ffb2a7..c3c56591 100644 --- a/docs/types/hub2ServiceData.html +++ b/docs/types/hub2ServiceData.html @@ -1 +1 @@ -hub2ServiceData | node-switchbot

    Type Alias hub2ServiceData

    hub2ServiceData: serviceData & {
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        lightLevel: number;
        model: Hub2;
        modelFriendlyName: Hub2;
        modelName: Hub2;
    }
    +hub2ServiceData | node-switchbot

    Type Alias hub2ServiceData

    hub2ServiceData: serviceData & {
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        lightLevel: number;
        model: Hub2;
        modelFriendlyName: Hub2;
        modelName: Hub2;
    }
    diff --git a/docs/types/hub2Status.html b/docs/types/hub2Status.html index e6338d9c..1f95e6ff 100644 --- a/docs/types/hub2Status.html +++ b/docs/types/hub2Status.html @@ -1 +1 @@ -hub2Status | node-switchbot

    Type Alias hub2Status

    hub2Status: deviceStatus & {
        humidity: number;
        lightLevel: number;
        temperature: number;
    }
    +hub2Status | node-switchbot

    Type Alias hub2Status

    hub2Status: deviceStatus & {
        humidity: number;
        lightLevel: number;
        temperature: number;
    }
    diff --git a/docs/types/hub2WebhookContext.html b/docs/types/hub2WebhookContext.html index 743c18f7..8a2476c8 100644 --- a/docs/types/hub2WebhookContext.html +++ b/docs/types/hub2WebhookContext.html @@ -1 +1 @@ -hub2WebhookContext | node-switchbot

    Type Alias hub2WebhookContext

    hub2WebhookContext: deviceWebhookContext & {
        humidity: number;
        lightLevel: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +hub2WebhookContext | node-switchbot

    Type Alias hub2WebhookContext

    hub2WebhookContext: deviceWebhookContext & {
        humidity: number;
        lightLevel: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/humidifier.html b/docs/types/humidifier.html index 0569a115..339ee067 100644 --- a/docs/types/humidifier.html +++ b/docs/types/humidifier.html @@ -1 +1 @@ -humidifier | node-switchbot

    Type Alias humidifier

    humidifier: device & {}
    +humidifier | node-switchbot

    Type Alias humidifier

    humidifier: device & {}
    diff --git a/docs/types/humidifier2ServiceData.html b/docs/types/humidifier2ServiceData.html index 3bdbcfff..3ff3c5da 100644 --- a/docs/types/humidifier2ServiceData.html +++ b/docs/types/humidifier2ServiceData.html @@ -1 +1 @@ -humidifier2ServiceData | node-switchbot

    Type Alias humidifier2ServiceData

    humidifier2ServiceData: serviceData & {
        autoMode: boolean;
        childLock: boolean;
        filterAlert: boolean;
        filterMissing: boolean;
        filterRunTime: number;
        humidity: number;
        model: Humidifier2;
        modelFriendlyName: Humidifier2;
        modelName: Humidifier2;
        onState: boolean;
        overHumidifyProtection: boolean;
        percentage: number;
        tankRemoved: boolean;
        temperature: number;
        tiltedAlert: boolean;
        waterLevel: number;
    }
    +humidifier2ServiceData | node-switchbot

    Type Alias humidifier2ServiceData

    humidifier2ServiceData: serviceData & {
        autoMode: boolean;
        childLock: boolean;
        filterAlert: boolean;
        filterMissing: boolean;
        filterRunTime: number;
        humidity: number;
        model: Humidifier2;
        modelFriendlyName: Humidifier2;
        modelName: Humidifier2;
        onState: boolean;
        overHumidifyProtection: boolean;
        percentage: number;
        tankRemoved: boolean;
        temperature: number;
        tiltedAlert: boolean;
        waterLevel: number;
    }
    diff --git a/docs/types/humidifier2Status.html b/docs/types/humidifier2Status.html index 03dd5d2f..0c23323a 100644 --- a/docs/types/humidifier2Status.html +++ b/docs/types/humidifier2Status.html @@ -1 +1 @@ -humidifier2Status | node-switchbot

    Type Alias humidifier2Status

    humidifier2Status: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    +humidifier2Status | node-switchbot

    Type Alias humidifier2Status

    humidifier2Status: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    diff --git a/docs/types/humidifier2WebhookContext.html b/docs/types/humidifier2WebhookContext.html index 36d1637c..6e50b557 100644 --- a/docs/types/humidifier2WebhookContext.html +++ b/docs/types/humidifier2WebhookContext.html @@ -1 +1 @@ -humidifier2WebhookContext | node-switchbot

    Type Alias humidifier2WebhookContext

    humidifier2WebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +humidifier2WebhookContext | node-switchbot

    Type Alias humidifier2WebhookContext

    humidifier2WebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/humidifierServiceData.html b/docs/types/humidifierServiceData.html index 443e5290..cc2afa74 100644 --- a/docs/types/humidifierServiceData.html +++ b/docs/types/humidifierServiceData.html @@ -1 +1 @@ -humidifierServiceData | node-switchbot

    Type Alias humidifierServiceData

    humidifierServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier;
        modelFriendlyName: Humidifier;
        modelName: Humidifier;
        onState: boolean;
        percentage: number;
    }
    +humidifierServiceData | node-switchbot

    Type Alias humidifierServiceData

    humidifierServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier;
        modelFriendlyName: Humidifier;
        modelName: Humidifier;
        onState: boolean;
        percentage: number;
    }
    diff --git a/docs/types/humidifierStatus.html b/docs/types/humidifierStatus.html index e5f53d49..faeb673f 100644 --- a/docs/types/humidifierStatus.html +++ b/docs/types/humidifierStatus.html @@ -1 +1 @@ -humidifierStatus | node-switchbot

    Type Alias humidifierStatus

    humidifierStatus: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    +humidifierStatus | node-switchbot

    Type Alias humidifierStatus

    humidifierStatus: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    diff --git a/docs/types/humidifierWebhookContext.html b/docs/types/humidifierWebhookContext.html index 1e2dbfab..dd71481e 100644 --- a/docs/types/humidifierWebhookContext.html +++ b/docs/types/humidifierWebhookContext.html @@ -1 +1 @@ -humidifierWebhookContext | node-switchbot

    Type Alias humidifierWebhookContext

    humidifierWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +humidifierWebhookContext | node-switchbot

    Type Alias humidifierWebhookContext

    humidifierWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/indoorCam.html b/docs/types/indoorCam.html index 88198ac6..3a34af8b 100644 --- a/docs/types/indoorCam.html +++ b/docs/types/indoorCam.html @@ -1 +1 @@ -indoorCam | node-switchbot

    Type Alias indoorCam

    indoorCam: device & {}
    +indoorCam | node-switchbot

    Type Alias indoorCam

    indoorCam: device & {}
    diff --git a/docs/types/indoorCameraWebhookContext.html b/docs/types/indoorCameraWebhookContext.html index e4126712..c5b49c3b 100644 --- a/docs/types/indoorCameraWebhookContext.html +++ b/docs/types/indoorCameraWebhookContext.html @@ -1 +1 @@ -indoorCameraWebhookContext | node-switchbot

    Type Alias indoorCameraWebhookContext

    indoorCameraWebhookContext: deviceWebhookContext & {
        detectionState: "DETECTED";
    }
    +indoorCameraWebhookContext | node-switchbot

    Type Alias indoorCameraWebhookContext

    indoorCameraWebhookContext: deviceWebhookContext & {
        detectionState: "DETECTED";
    }
    diff --git a/docs/types/keypad.html b/docs/types/keypad.html index 53e760e2..e46c1a60 100644 --- a/docs/types/keypad.html +++ b/docs/types/keypad.html @@ -1 +1 @@ -keypad | node-switchbot

    Type Alias keypad

    keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
    +keypad | node-switchbot

    Type Alias keypad

    keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
    diff --git a/docs/types/keypadDetectorServiceData.html b/docs/types/keypadDetectorServiceData.html index 606d27b8..d77328bf 100644 --- a/docs/types/keypadDetectorServiceData.html +++ b/docs/types/keypadDetectorServiceData.html @@ -1 +1 @@ -keypadDetectorServiceData | node-switchbot

    Type Alias keypadDetectorServiceData

    keypadDetectorServiceData: serviceData & {
        battery: number;
        event: boolean;
        low_battery: boolean;
        model: Keypad;
        modelFriendlyName: Keypad;
        modelName: Keypad;
        tampered: boolean;
    }
    +keypadDetectorServiceData | node-switchbot

    Type Alias keypadDetectorServiceData

    keypadDetectorServiceData: serviceData & {
        battery: number;
        event: boolean;
        low_battery: boolean;
        model: Keypad;
        modelFriendlyName: Keypad;
        modelName: Keypad;
        tampered: boolean;
    }
    diff --git a/docs/types/keypadTouch.html b/docs/types/keypadTouch.html index 6adf96fd..b2d39879 100644 --- a/docs/types/keypadTouch.html +++ b/docs/types/keypadTouch.html @@ -1 +1 @@ -keypadTouch | node-switchbot

    Type Alias keypadTouch

    keypadTouch: device & {
        keyList: keyList;
        lockDeviceId: string;
        remoteType: string;
    }
    +keypadTouch | node-switchbot

    Type Alias keypadTouch

    keypadTouch: device & {
        keyList: keyList;
        lockDeviceId: string;
        remoteType: string;
    }
    diff --git a/docs/types/keypadTouchWebhookContext.html b/docs/types/keypadTouchWebhookContext.html index a3430fdc..106bf1fd 100644 --- a/docs/types/keypadTouchWebhookContext.html +++ b/docs/types/keypadTouchWebhookContext.html @@ -1 +1 @@ -keypadTouchWebhookContext | node-switchbot

    Type Alias keypadTouchWebhookContext

    keypadTouchWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    +keypadTouchWebhookContext | node-switchbot

    Type Alias keypadTouchWebhookContext

    keypadTouchWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    diff --git a/docs/types/keypadWebhookContext.html b/docs/types/keypadWebhookContext.html index 77de4b24..714cdb35 100644 --- a/docs/types/keypadWebhookContext.html +++ b/docs/types/keypadWebhookContext.html @@ -1 +1 @@ -keypadWebhookContext | node-switchbot

    Type Alias keypadWebhookContext

    keypadWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    +keypadWebhookContext | node-switchbot

    Type Alias keypadWebhookContext

    keypadWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    diff --git a/docs/types/lock.html b/docs/types/lock.html index 1d0df836..ce823e58 100644 --- a/docs/types/lock.html +++ b/docs/types/lock.html @@ -1 +1 @@ -lock | node-switchbot

    Type Alias lock

    lock: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    +lock | node-switchbot

    Type Alias lock

    lock: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    diff --git a/docs/types/lockPro.html b/docs/types/lockPro.html index 01d016fc..c7c53d19 100644 --- a/docs/types/lockPro.html +++ b/docs/types/lockPro.html @@ -1 +1 @@ -lockPro | node-switchbot

    Type Alias lockPro

    lockPro: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    +lockPro | node-switchbot

    Type Alias lockPro

    lockPro: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    diff --git a/docs/types/lockProServiceData.html b/docs/types/lockProServiceData.html index e06688ff..52186c1a 100644 --- a/docs/types/lockProServiceData.html +++ b/docs/types/lockProServiceData.html @@ -1 +1 @@ -lockProServiceData | node-switchbot

    Type Alias lockProServiceData

    lockProServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: LockPro;
        modelFriendlyName: LockPro;
        modelName: LockPro;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    +lockProServiceData | node-switchbot

    Type Alias lockProServiceData

    lockProServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: LockPro;
        modelFriendlyName: LockPro;
        modelName: LockPro;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    diff --git a/docs/types/lockProStatus.html b/docs/types/lockProStatus.html index 27ce3ac4..50d930bd 100644 --- a/docs/types/lockProStatus.html +++ b/docs/types/lockProStatus.html @@ -1 +1 @@ -lockProStatus | node-switchbot

    Type Alias lockProStatus

    lockProStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    +lockProStatus | node-switchbot

    Type Alias lockProStatus

    lockProStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    diff --git a/docs/types/lockProWebhookContext.html b/docs/types/lockProWebhookContext.html index fe4384cc..32981e85 100644 --- a/docs/types/lockProWebhookContext.html +++ b/docs/types/lockProWebhookContext.html @@ -1 +1 @@ -lockProWebhookContext | node-switchbot

    Type Alias lockProWebhookContext

    lockProWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    +lockProWebhookContext | node-switchbot

    Type Alias lockProWebhookContext

    lockProWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    diff --git a/docs/types/lockServiceData.html b/docs/types/lockServiceData.html index bfe47ebf..49564b89 100644 --- a/docs/types/lockServiceData.html +++ b/docs/types/lockServiceData.html @@ -1 +1 @@ -lockServiceData | node-switchbot

    Type Alias lockServiceData

    lockServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: Lock;
        modelFriendlyName: Lock;
        modelName: Lock;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    +lockServiceData | node-switchbot

    Type Alias lockServiceData

    lockServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: Lock;
        modelFriendlyName: Lock;
        modelName: Lock;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    diff --git a/docs/types/lockStatus.html b/docs/types/lockStatus.html index 738877a8..6213cfe0 100644 --- a/docs/types/lockStatus.html +++ b/docs/types/lockStatus.html @@ -1 +1 @@ -lockStatus | node-switchbot

    Type Alias lockStatus

    lockStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    +lockStatus | node-switchbot

    Type Alias lockStatus

    lockStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    diff --git a/docs/types/lockWebhookContext.html b/docs/types/lockWebhookContext.html index 0adff51f..88c98eb8 100644 --- a/docs/types/lockWebhookContext.html +++ b/docs/types/lockWebhookContext.html @@ -1 +1 @@ -lockWebhookContext | node-switchbot

    Type Alias lockWebhookContext

    lockWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    +lockWebhookContext | node-switchbot

    Type Alias lockWebhookContext

    lockWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    diff --git a/docs/types/meter.html b/docs/types/meter.html index 42b77ae2..f45aaf81 100644 --- a/docs/types/meter.html +++ b/docs/types/meter.html @@ -1 +1 @@ -meter | node-switchbot

    Type Alias meter

    meter: device & {}
    +meter | node-switchbot

    Type Alias meter

    meter: device & {}
    diff --git a/docs/types/meterPlus.html b/docs/types/meterPlus.html index 7d5cebe5..b9ea1a3d 100644 --- a/docs/types/meterPlus.html +++ b/docs/types/meterPlus.html @@ -1 +1 @@ -meterPlus | node-switchbot

    Type Alias meterPlus

    meterPlus: device & {}
    +meterPlus | node-switchbot

    Type Alias meterPlus

    meterPlus: device & {}
    diff --git a/docs/types/meterPlusServiceData.html b/docs/types/meterPlusServiceData.html index ada9ee4e..a40acf36 100644 --- a/docs/types/meterPlusServiceData.html +++ b/docs/types/meterPlusServiceData.html @@ -1 +1 @@ -meterPlusServiceData | node-switchbot

    Type Alias meterPlusServiceData

    meterPlusServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPlus;
        modelFriendlyName: MeterPlus;
        modelName: MeterPlus;
    }
    +meterPlusServiceData | node-switchbot

    Type Alias meterPlusServiceData

    meterPlusServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPlus;
        modelFriendlyName: MeterPlus;
        modelName: MeterPlus;
    }
    diff --git a/docs/types/meterPlusStatus.html b/docs/types/meterPlusStatus.html index e672fc6e..d7c18539 100644 --- a/docs/types/meterPlusStatus.html +++ b/docs/types/meterPlusStatus.html @@ -1 +1 @@ -meterPlusStatus | node-switchbot

    Type Alias meterPlusStatus

    meterPlusStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +meterPlusStatus | node-switchbot

    Type Alias meterPlusStatus

    meterPlusStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/meterPlusWebhookContext.html b/docs/types/meterPlusWebhookContext.html index 5dc18eb6..94e2d395 100644 --- a/docs/types/meterPlusWebhookContext.html +++ b/docs/types/meterPlusWebhookContext.html @@ -1 +1 @@ -meterPlusWebhookContext | node-switchbot

    Type Alias meterPlusWebhookContext

    meterPlusWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterPlusWebhookContext | node-switchbot

    Type Alias meterPlusWebhookContext

    meterPlusWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterPro.html b/docs/types/meterPro.html index 840f44d3..4426facd 100644 --- a/docs/types/meterPro.html +++ b/docs/types/meterPro.html @@ -1 +1 @@ -meterPro | node-switchbot

    Type Alias meterPro

    meterPro: device & {}
    +meterPro | node-switchbot

    Type Alias meterPro

    meterPro: device & {}
    diff --git a/docs/types/meterProCO2ServiceData.html b/docs/types/meterProCO2ServiceData.html index 060ca939..3cfafe10 100644 --- a/docs/types/meterProCO2ServiceData.html +++ b/docs/types/meterProCO2ServiceData.html @@ -1 +1 @@ -meterProCO2ServiceData | node-switchbot

    Type Alias meterProCO2ServiceData

    meterProCO2ServiceData: serviceData & {
        battery: number;
        celsius: number;
        co2: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterProCO2;
        modelFriendlyName: MeterProCO2;
        modelName: MeterProCO2;
    }
    +meterProCO2ServiceData | node-switchbot

    Type Alias meterProCO2ServiceData

    meterProCO2ServiceData: serviceData & {
        battery: number;
        celsius: number;
        co2: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterProCO2;
        modelFriendlyName: MeterProCO2;
        modelName: MeterProCO2;
    }
    diff --git a/docs/types/meterProCO2Status.html b/docs/types/meterProCO2Status.html index b03ed691..c597e912 100644 --- a/docs/types/meterProCO2Status.html +++ b/docs/types/meterProCO2Status.html @@ -1 +1 @@ -meterProCO2Status | node-switchbot

    Type Alias meterProCO2Status

    meterProCO2Status: deviceStatus & {
        battery: number;
        CO2: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    +meterProCO2Status | node-switchbot

    Type Alias meterProCO2Status

    meterProCO2Status: deviceStatus & {
        battery: number;
        CO2: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    diff --git a/docs/types/meterProCO2WebhookContext.html b/docs/types/meterProCO2WebhookContext.html index 723c597a..3bc38cae 100644 --- a/docs/types/meterProCO2WebhookContext.html +++ b/docs/types/meterProCO2WebhookContext.html @@ -1 +1 @@ -meterProCO2WebhookContext | node-switchbot

    Type Alias meterProCO2WebhookContext

    meterProCO2WebhookContext: deviceWebhookContext & {
        battery: number;
        CO2: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterProCO2WebhookContext | node-switchbot

    Type Alias meterProCO2WebhookContext

    meterProCO2WebhookContext: deviceWebhookContext & {
        battery: number;
        CO2: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterProServiceData.html b/docs/types/meterProServiceData.html index aabe3664..ff05e568 100644 --- a/docs/types/meterProServiceData.html +++ b/docs/types/meterProServiceData.html @@ -1 +1 @@ -meterProServiceData | node-switchbot

    Type Alias meterProServiceData

    meterProServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPro;
        modelFriendlyName: MeterPro;
        modelName: MeterPro;
    }
    +meterProServiceData | node-switchbot

    Type Alias meterProServiceData

    meterProServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPro;
        modelFriendlyName: MeterPro;
        modelName: MeterPro;
    }
    diff --git a/docs/types/meterProStatus.html b/docs/types/meterProStatus.html index 7816492a..b7e08b50 100644 --- a/docs/types/meterProStatus.html +++ b/docs/types/meterProStatus.html @@ -1 +1 @@ -meterProStatus | node-switchbot

    Type Alias meterProStatus

    meterProStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    +meterProStatus | node-switchbot

    Type Alias meterProStatus

    meterProStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    diff --git a/docs/types/meterProWebhookContext.html b/docs/types/meterProWebhookContext.html index 65d48373..170bdbc7 100644 --- a/docs/types/meterProWebhookContext.html +++ b/docs/types/meterProWebhookContext.html @@ -1 +1 @@ -meterProWebhookContext | node-switchbot

    Type Alias meterProWebhookContext

    meterProWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterProWebhookContext | node-switchbot

    Type Alias meterProWebhookContext

    meterProWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterServiceData.html b/docs/types/meterServiceData.html index 3c1d2ecd..16d6730e 100644 --- a/docs/types/meterServiceData.html +++ b/docs/types/meterServiceData.html @@ -1 +1 @@ -meterServiceData | node-switchbot

    Type Alias meterServiceData

    meterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: Meter;
        modelFriendlyName: Meter;
        modelName: Meter;
    }
    +meterServiceData | node-switchbot

    Type Alias meterServiceData

    meterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: Meter;
        modelFriendlyName: Meter;
        modelName: Meter;
    }
    diff --git a/docs/types/meterStatus.html b/docs/types/meterStatus.html index 8774c567..4979528f 100644 --- a/docs/types/meterStatus.html +++ b/docs/types/meterStatus.html @@ -1 +1 @@ -meterStatus | node-switchbot

    Type Alias meterStatus

    meterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +meterStatus | node-switchbot

    Type Alias meterStatus

    meterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/meterWebhookContext.html b/docs/types/meterWebhookContext.html index 2c2d722b..e0b9a57c 100644 --- a/docs/types/meterWebhookContext.html +++ b/docs/types/meterWebhookContext.html @@ -1 +1 @@ -meterWebhookContext | node-switchbot

    Type Alias meterWebhookContext

    meterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterWebhookContext | node-switchbot

    Type Alias meterWebhookContext

    meterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/motionSensor.html b/docs/types/motionSensor.html index 7059edd8..fa3b4efe 100644 --- a/docs/types/motionSensor.html +++ b/docs/types/motionSensor.html @@ -1 +1 @@ -motionSensor | node-switchbot

    Type Alias motionSensor

    motionSensor: device & {}
    +motionSensor | node-switchbot

    Type Alias motionSensor

    motionSensor: device & {}
    diff --git a/docs/types/motionSensorServiceData.html b/docs/types/motionSensorServiceData.html index 9563ad01..ef820690 100644 --- a/docs/types/motionSensorServiceData.html +++ b/docs/types/motionSensorServiceData.html @@ -1 +1 @@ -motionSensorServiceData | node-switchbot

    Type Alias motionSensorServiceData

    motionSensorServiceData: serviceData & {
        battery: number;
        iot: number;
        is_light: boolean;
        led: number;
        lightLevel: string;
        model: MotionSensor;
        modelFriendlyName: MotionSensor;
        modelName: MotionSensor;
        movement: boolean;
        sense_distance: number;
        tested: boolean;
    }
    +motionSensorServiceData | node-switchbot

    Type Alias motionSensorServiceData

    motionSensorServiceData: serviceData & {
        battery: number;
        iot: number;
        is_light: boolean;
        led: number;
        lightLevel: string;
        model: MotionSensor;
        modelFriendlyName: MotionSensor;
        modelName: MotionSensor;
        movement: boolean;
        sense_distance: number;
        tested: boolean;
    }
    diff --git a/docs/types/motionSensorStatus.html b/docs/types/motionSensorStatus.html index 255dc82a..9078cbdd 100644 --- a/docs/types/motionSensorStatus.html +++ b/docs/types/motionSensorStatus.html @@ -1 +1 @@ -motionSensorStatus | node-switchbot

    Type Alias motionSensorStatus

    motionSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
    }
    +motionSensorStatus | node-switchbot

    Type Alias motionSensorStatus

    motionSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
    }
    diff --git a/docs/types/motionSensorWebhookContext.html b/docs/types/motionSensorWebhookContext.html index 21badf8e..b08e2221 100644 --- a/docs/types/motionSensorWebhookContext.html +++ b/docs/types/motionSensorWebhookContext.html @@ -1 +1 @@ -motionSensorWebhookContext | node-switchbot

    Type Alias motionSensorWebhookContext

    motionSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: "NOT_DETECTED" | "DETECTED";
    }
    +motionSensorWebhookContext | node-switchbot

    Type Alias motionSensorWebhookContext

    motionSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: "NOT_DETECTED" | "DETECTED";
    }
    diff --git a/docs/types/onadvertisement.html b/docs/types/onadvertisement.html index 7c31d440..1414376d 100644 --- a/docs/types/onadvertisement.html +++ b/docs/types/onadvertisement.html @@ -1 +1 @@ -onadvertisement | node-switchbot

    Type Alias onadvertisement

    onadvertisement: (ad: ad) => Promise<void> | void

    Type declaration

      • (ad: ad): Promise<void> | void
      • Parameters

        Returns Promise<void> | void

    +onadvertisement | node-switchbot

    Type Alias onadvertisement

    onadvertisement: (ad: ad) => Promise<void> | void

    Type declaration

      • (ad: ad): Promise<void> | void
      • Parameters

        Returns Promise<void> | void

    diff --git a/docs/types/ondiscover.html b/docs/types/ondiscover.html index d03dca40..fb212b01 100644 --- a/docs/types/ondiscover.html +++ b/docs/types/ondiscover.html @@ -1 +1 @@ -ondiscover | node-switchbot

    Type Alias ondiscover

    ondiscover: (device: SwitchbotDevice) => Promise<void> | void

    Type declaration

    +ondiscover | node-switchbot

    Type Alias ondiscover

    ondiscover: (device: SwitchbotDevice) => Promise<void> | void

    Type declaration

    diff --git a/docs/types/outdoorMeter.html b/docs/types/outdoorMeter.html index 314d0f70..889304a9 100644 --- a/docs/types/outdoorMeter.html +++ b/docs/types/outdoorMeter.html @@ -1 +1 @@ -outdoorMeter | node-switchbot

    Type Alias outdoorMeter

    outdoorMeter: device & {}
    +outdoorMeter | node-switchbot

    Type Alias outdoorMeter

    outdoorMeter: device & {}
    diff --git a/docs/types/outdoorMeterServiceData.html b/docs/types/outdoorMeterServiceData.html index 19fbd9d4..46a36026 100644 --- a/docs/types/outdoorMeterServiceData.html +++ b/docs/types/outdoorMeterServiceData.html @@ -1 +1 @@ -outdoorMeterServiceData | node-switchbot

    Type Alias outdoorMeterServiceData

    outdoorMeterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: OutdoorMeter;
        modelFriendlyName: OutdoorMeter;
        modelName: OutdoorMeter;
    }
    +outdoorMeterServiceData | node-switchbot

    Type Alias outdoorMeterServiceData

    outdoorMeterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: OutdoorMeter;
        modelFriendlyName: OutdoorMeter;
        modelName: OutdoorMeter;
    }
    diff --git a/docs/types/outdoorMeterStatus.html b/docs/types/outdoorMeterStatus.html index e118951b..4cd8eb08 100644 --- a/docs/types/outdoorMeterStatus.html +++ b/docs/types/outdoorMeterStatus.html @@ -1 +1 @@ -outdoorMeterStatus | node-switchbot

    Type Alias outdoorMeterStatus

    outdoorMeterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +outdoorMeterStatus | node-switchbot

    Type Alias outdoorMeterStatus

    outdoorMeterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/outdoorMeterWebhookContext.html b/docs/types/outdoorMeterWebhookContext.html index 031b9253..5b4aaf23 100644 --- a/docs/types/outdoorMeterWebhookContext.html +++ b/docs/types/outdoorMeterWebhookContext.html @@ -1 +1 @@ -outdoorMeterWebhookContext | node-switchbot

    Type Alias outdoorMeterWebhookContext

    outdoorMeterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +outdoorMeterWebhookContext | node-switchbot

    Type Alias outdoorMeterWebhookContext

    outdoorMeterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/panTiltCamWebhookContext.html b/docs/types/panTiltCamWebhookContext.html index 63616e78..bbfe7801 100644 --- a/docs/types/panTiltCamWebhookContext.html +++ b/docs/types/panTiltCamWebhookContext.html @@ -1 +1 @@ -panTiltCamWebhookContext | node-switchbot

    Type Alias panTiltCamWebhookContext

    panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
    +panTiltCamWebhookContext | node-switchbot

    Type Alias panTiltCamWebhookContext

    panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
    diff --git a/docs/types/pantiltCam.html b/docs/types/pantiltCam.html index 43d6d07f..8c93ceff 100644 --- a/docs/types/pantiltCam.html +++ b/docs/types/pantiltCam.html @@ -1 +1 @@ -pantiltCam | node-switchbot

    Type Alias pantiltCam

    pantiltCam: device & {}
    +pantiltCam | node-switchbot

    Type Alias pantiltCam

    pantiltCam: device & {}
    diff --git a/docs/types/pantiltCam2k.html b/docs/types/pantiltCam2k.html index 9f38eae3..16857032 100644 --- a/docs/types/pantiltCam2k.html +++ b/docs/types/pantiltCam2k.html @@ -1 +1 @@ -pantiltCam2k | node-switchbot

    Type Alias pantiltCam2k

    pantiltCam2k: device & {}
    +pantiltCam2k | node-switchbot

    Type Alias pantiltCam2k

    pantiltCam2k: device & {}
    diff --git a/docs/types/plug.html b/docs/types/plug.html index 612f02aa..e5357782 100644 --- a/docs/types/plug.html +++ b/docs/types/plug.html @@ -1 +1 @@ -plug | node-switchbot

    Type Alias plug

    plug: device & {}
    +plug | node-switchbot

    Type Alias plug

    plug: device & {}
    diff --git a/docs/types/plugMini.html b/docs/types/plugMini.html index 86c00d83..5a79faea 100644 --- a/docs/types/plugMini.html +++ b/docs/types/plugMini.html @@ -1 +1 @@ -plugMini | node-switchbot

    Type Alias plugMini

    plugMini: device & {}
    +plugMini | node-switchbot

    Type Alias plugMini

    plugMini: device & {}
    diff --git a/docs/types/plugMiniJPServiceData.html b/docs/types/plugMiniJPServiceData.html index 20751e09..077fff3b 100644 --- a/docs/types/plugMiniJPServiceData.html +++ b/docs/types/plugMiniJPServiceData.html @@ -1 +1 @@ -plugMiniJPServiceData | node-switchbot

    Type Alias plugMiniJPServiceData

    plugMiniJPServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniJP;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    +plugMiniJPServiceData | node-switchbot

    Type Alias plugMiniJPServiceData

    plugMiniJPServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniJP;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    diff --git a/docs/types/plugMiniJPWebhookContext.html b/docs/types/plugMiniJPWebhookContext.html index cf296397..9a01f3e1 100644 --- a/docs/types/plugMiniJPWebhookContext.html +++ b/docs/types/plugMiniJPWebhookContext.html @@ -1 +1 @@ -plugMiniJPWebhookContext | node-switchbot

    Type Alias plugMiniJPWebhookContext

    plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugMiniJPWebhookContext | node-switchbot

    Type Alias plugMiniJPWebhookContext

    plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/plugMiniStatus.html b/docs/types/plugMiniStatus.html index 83b21e3f..113fa216 100644 --- a/docs/types/plugMiniStatus.html +++ b/docs/types/plugMiniStatus.html @@ -1 +1 @@ -plugMiniStatus | node-switchbot

    Type Alias plugMiniStatus

    plugMiniStatus: deviceStatus & {
        electricCurrent: Float64Array;
        electricityOfDay: number;
        power: string;
        voltage: Float64Array;
        weight: Float64Array;
    }
    +plugMiniStatus | node-switchbot

    Type Alias plugMiniStatus

    plugMiniStatus: deviceStatus & {
        electricCurrent: Float64Array;
        electricityOfDay: number;
        power: string;
        voltage: Float64Array;
        weight: Float64Array;
    }
    diff --git a/docs/types/plugMiniUSServiceData.html b/docs/types/plugMiniUSServiceData.html index 65312c32..1dcff841 100644 --- a/docs/types/plugMiniUSServiceData.html +++ b/docs/types/plugMiniUSServiceData.html @@ -1 +1 @@ -plugMiniUSServiceData | node-switchbot

    Type Alias plugMiniUSServiceData

    plugMiniUSServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniUS;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    +plugMiniUSServiceData | node-switchbot

    Type Alias plugMiniUSServiceData

    plugMiniUSServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniUS;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    diff --git a/docs/types/plugMiniUSWebhookContext.html b/docs/types/plugMiniUSWebhookContext.html index 18d3b7ae..6dbc645b 100644 --- a/docs/types/plugMiniUSWebhookContext.html +++ b/docs/types/plugMiniUSWebhookContext.html @@ -1 +1 @@ -plugMiniUSWebhookContext | node-switchbot

    Type Alias plugMiniUSWebhookContext

    plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugMiniUSWebhookContext | node-switchbot

    Type Alias plugMiniUSWebhookContext

    plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/plugStatus.html b/docs/types/plugStatus.html index 50d5b90c..7600a436 100644 --- a/docs/types/plugStatus.html +++ b/docs/types/plugStatus.html @@ -1 +1 @@ -plugStatus | node-switchbot

    Type Alias plugStatus

    plugStatus: deviceStatus & { power: string; version: string }
    +plugStatus | node-switchbot

    Type Alias plugStatus

    plugStatus: deviceStatus & { power: string; version: string }
    diff --git a/docs/types/plugWebhookContext.html b/docs/types/plugWebhookContext.html index 970b8f78..9695b36f 100644 --- a/docs/types/plugWebhookContext.html +++ b/docs/types/plugWebhookContext.html @@ -1 +1 @@ -plugWebhookContext | node-switchbot

    Type Alias plugWebhookContext

    plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugWebhookContext | node-switchbot

    Type Alias plugWebhookContext

    plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/relaySwitch1Context.html b/docs/types/relaySwitch1Context.html index d2c1f42c..169890fb 100644 --- a/docs/types/relaySwitch1Context.html +++ b/docs/types/relaySwitch1Context.html @@ -1 +1 @@ -relaySwitch1Context | node-switchbot

    Type Alias relaySwitch1Context

    relaySwitch1Context: deviceWebhookContext & {
        online: boolean;
        overTemperature: boolean;
        switchStatus: 0 | 1;
        version: string;
    }
    +relaySwitch1Context | node-switchbot

    Type Alias relaySwitch1Context

    relaySwitch1Context: deviceWebhookContext & {
        online: boolean;
        overTemperature: boolean;
        switchStatus: 0 | 1;
        version: string;
    }
    diff --git a/docs/types/relaySwitch1PMContext.html b/docs/types/relaySwitch1PMContext.html index 9260c5a5..053b5c96 100644 --- a/docs/types/relaySwitch1PMContext.html +++ b/docs/types/relaySwitch1PMContext.html @@ -1 +1 @@ -relaySwitch1PMContext | node-switchbot

    Type Alias relaySwitch1PMContext

    relaySwitch1PMContext: deviceWebhookContext & {
        online: boolean;
        overload: boolean;
        overTemperature: boolean;
        switchStatus: 0 | 1;
        version: string;
    }
    +relaySwitch1PMContext | node-switchbot

    Type Alias relaySwitch1PMContext

    relaySwitch1PMContext: deviceWebhookContext & {
        online: boolean;
        overload: boolean;
        overTemperature: boolean;
        switchStatus: 0 | 1;
        version: string;
    }
    diff --git a/docs/types/relaySwitch1PMServiceData.html b/docs/types/relaySwitch1PMServiceData.html index bf1e9987..902a2d8b 100644 --- a/docs/types/relaySwitch1PMServiceData.html +++ b/docs/types/relaySwitch1PMServiceData.html @@ -1 +1 @@ -relaySwitch1PMServiceData | node-switchbot

    Type Alias relaySwitch1PMServiceData

    relaySwitch1PMServiceData: serviceData & {
        current: number;
        mode: boolean;
        model: RelaySwitch1PM;
        modelFriendlyName: RelaySwitch1PM;
        modelName: RelaySwitch1PM;
        power: number;
        sequence_number: number;
        state: boolean;
        voltage: number;
    }
    +relaySwitch1PMServiceData | node-switchbot

    Type Alias relaySwitch1PMServiceData

    relaySwitch1PMServiceData: serviceData & {
        current: number;
        mode: boolean;
        model: RelaySwitch1PM;
        modelFriendlyName: RelaySwitch1PM;
        modelName: RelaySwitch1PM;
        power: number;
        sequence_number: number;
        state: boolean;
        voltage: number;
    }
    diff --git a/docs/types/relaySwitch1PMStatus.html b/docs/types/relaySwitch1PMStatus.html index 840e79b5..d32e7bc7 100644 --- a/docs/types/relaySwitch1PMStatus.html +++ b/docs/types/relaySwitch1PMStatus.html @@ -1 +1 @@ -relaySwitch1PMStatus | node-switchbot

    Type Alias relaySwitch1PMStatus

    relaySwitch1PMStatus: deviceStatus & {
        electricCurrent: number;
        power: number;
        switchStatus: 0 | 1;
        usedElectricity: number;
        version: string;
        voltage: number;
    }
    +relaySwitch1PMStatus | node-switchbot

    Type Alias relaySwitch1PMStatus

    relaySwitch1PMStatus: deviceStatus & {
        electricCurrent: number;
        power: number;
        switchStatus: 0 | 1;
        usedElectricity: number;
        version: string;
        voltage: number;
    }
    diff --git a/docs/types/relaySwitch1ServiceData.html b/docs/types/relaySwitch1ServiceData.html index aea68ac8..56724c8d 100644 --- a/docs/types/relaySwitch1ServiceData.html +++ b/docs/types/relaySwitch1ServiceData.html @@ -1 +1 @@ -relaySwitch1ServiceData | node-switchbot

    Type Alias relaySwitch1ServiceData

    relaySwitch1ServiceData: serviceData & {
        mode: boolean;
        model: RelaySwitch1;
        modelFriendlyName: RelaySwitch1;
        modelName: RelaySwitch1;
        sequence_number: number;
        state: boolean;
    }
    +relaySwitch1ServiceData | node-switchbot

    Type Alias relaySwitch1ServiceData

    relaySwitch1ServiceData: serviceData & {
        mode: boolean;
        model: RelaySwitch1;
        modelFriendlyName: RelaySwitch1;
        modelName: RelaySwitch1;
        sequence_number: number;
        state: boolean;
    }
    diff --git a/docs/types/relaySwitch1Status.html b/docs/types/relaySwitch1Status.html index b6e00606..6ae32679 100644 --- a/docs/types/relaySwitch1Status.html +++ b/docs/types/relaySwitch1Status.html @@ -1 +1 @@ -relaySwitch1Status | node-switchbot

    Type Alias relaySwitch1Status

    relaySwitch1Status: deviceStatus & { switchStatus: 0 | 1; version: string }
    +relaySwitch1Status | node-switchbot

    Type Alias relaySwitch1Status

    relaySwitch1Status: deviceStatus & { switchStatus: 0 | 1; version: string }
    diff --git a/docs/types/remote.html b/docs/types/remote.html index 2614deb1..aa0a23c3 100644 --- a/docs/types/remote.html +++ b/docs/types/remote.html @@ -1 +1 @@ -remote | node-switchbot

    Type Alias remote

    remote: device & {}
    +remote | node-switchbot

    Type Alias remote

    remote: device & {}
    diff --git a/docs/types/remoteServiceData.html b/docs/types/remoteServiceData.html index e1bfca29..763f1e6c 100644 --- a/docs/types/remoteServiceData.html +++ b/docs/types/remoteServiceData.html @@ -1 +1 @@ -remoteServiceData | node-switchbot

    Type Alias remoteServiceData

    remoteServiceData: serviceData & {
        battery: number;
        model: Remote;
        modelFriendlyName: Remote;
        modelName: Remote;
    }
    +remoteServiceData | node-switchbot

    Type Alias remoteServiceData

    remoteServiceData: serviceData & {
        battery: number;
        model: Remote;
        modelFriendlyName: Remote;
        modelName: Remote;
    }
    diff --git a/docs/types/robotVacuumCleanerS1.html b/docs/types/robotVacuumCleanerS1.html index 6b426a33..b675965f 100644 --- a/docs/types/robotVacuumCleanerS1.html +++ b/docs/types/robotVacuumCleanerS1.html @@ -1 +1 @@ -robotVacuumCleanerS1 | node-switchbot

    Type Alias robotVacuumCleanerS1

    robotVacuumCleanerS1: device & {}
    +robotVacuumCleanerS1 | node-switchbot

    Type Alias robotVacuumCleanerS1

    robotVacuumCleanerS1: device & {}
    diff --git a/docs/types/robotVacuumCleanerS1Plus.html b/docs/types/robotVacuumCleanerS1Plus.html index 062a4777..9f70f978 100644 --- a/docs/types/robotVacuumCleanerS1Plus.html +++ b/docs/types/robotVacuumCleanerS1Plus.html @@ -1 +1 @@ -robotVacuumCleanerS1Plus | node-switchbot

    Type Alias robotVacuumCleanerS1Plus

    robotVacuumCleanerS1Plus: device & {}
    +robotVacuumCleanerS1Plus | node-switchbot

    Type Alias robotVacuumCleanerS1Plus

    robotVacuumCleanerS1Plus: device & {}
    diff --git a/docs/types/robotVacuumCleanerS1PlusStatus.html b/docs/types/robotVacuumCleanerS1PlusStatus.html index 75b6602a..f4e599ce 100644 --- a/docs/types/robotVacuumCleanerS1PlusStatus.html +++ b/docs/types/robotVacuumCleanerS1PlusStatus.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusStatus | node-switchbot

    Type Alias robotVacuumCleanerS1PlusStatus

    robotVacuumCleanerS1PlusStatus: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    +robotVacuumCleanerS1PlusStatus | node-switchbot

    Type Alias robotVacuumCleanerS1PlusStatus

    robotVacuumCleanerS1PlusStatus: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    diff --git a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html index 39df9370..3c71e558 100644 --- a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +++ b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusWebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1PlusWebhookContext

    robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    +robotVacuumCleanerS1PlusWebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1PlusWebhookContext

    robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    diff --git a/docs/types/robotVacuumCleanerS1Status.html b/docs/types/robotVacuumCleanerS1Status.html index 0a4b9e56..1c365f5d 100644 --- a/docs/types/robotVacuumCleanerS1Status.html +++ b/docs/types/robotVacuumCleanerS1Status.html @@ -1 +1 @@ -robotVacuumCleanerS1Status | node-switchbot

    Type Alias robotVacuumCleanerS1Status

    robotVacuumCleanerS1Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    +robotVacuumCleanerS1Status | node-switchbot

    Type Alias robotVacuumCleanerS1Status

    robotVacuumCleanerS1Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    diff --git a/docs/types/robotVacuumCleanerS1WebhookContext.html b/docs/types/robotVacuumCleanerS1WebhookContext.html index 6054d296..4db18452 100644 --- a/docs/types/robotVacuumCleanerS1WebhookContext.html +++ b/docs/types/robotVacuumCleanerS1WebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1WebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1WebhookContext

    robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    +robotVacuumCleanerS1WebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1WebhookContext

    robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    diff --git a/docs/types/robotVacuumCleanerServiceData.html b/docs/types/robotVacuumCleanerServiceData.html index 6e4810c6..4edf2069 100644 --- a/docs/types/robotVacuumCleanerServiceData.html +++ b/docs/types/robotVacuumCleanerServiceData.html @@ -1 +1 @@ -robotVacuumCleanerServiceData | node-switchbot

    Type Alias robotVacuumCleanerServiceData

    robotVacuumCleanerServiceData: serviceData & {
        battery: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    +robotVacuumCleanerServiceData | node-switchbot

    Type Alias robotVacuumCleanerServiceData

    robotVacuumCleanerServiceData: serviceData & {
        battery: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    diff --git a/docs/types/stripLight.html b/docs/types/stripLight.html index 57f1d51b..d97012b3 100644 --- a/docs/types/stripLight.html +++ b/docs/types/stripLight.html @@ -1 +1 @@ -stripLight | node-switchbot

    Type Alias stripLight

    stripLight: device & {}
    +stripLight | node-switchbot

    Type Alias stripLight

    stripLight: device & {}
    diff --git a/docs/types/stripLightServiceData.html b/docs/types/stripLightServiceData.html index fcf393ce..4d27921c 100644 --- a/docs/types/stripLightServiceData.html +++ b/docs/types/stripLightServiceData.html @@ -1 +1 @@ -stripLightServiceData | node-switchbot

    Type Alias stripLightServiceData

    stripLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        delay: number;
        green: number;
        loop_index: number;
        model: StripLight;
        modelFriendlyName: StripLight;
        modelName: StripLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +stripLightServiceData | node-switchbot

    Type Alias stripLightServiceData

    stripLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        delay: number;
        green: number;
        loop_index: number;
        model: StripLight;
        modelFriendlyName: StripLight;
        modelName: StripLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/stripLightStatus.html b/docs/types/stripLightStatus.html index dbe29931..44c4ae7f 100644 --- a/docs/types/stripLightStatus.html +++ b/docs/types/stripLightStatus.html @@ -1 +1 @@ -stripLightStatus | node-switchbot

    Type Alias stripLightStatus

    stripLightStatus: deviceStatus & {
        brightness: number;
        color: string;
        power: string;
    }
    +stripLightStatus | node-switchbot

    Type Alias stripLightStatus

    stripLightStatus: deviceStatus & {
        brightness: number;
        color: string;
        power: string;
    }
    diff --git a/docs/types/stripLightWebhookContext.html b/docs/types/stripLightWebhookContext.html index 23c6209b..4d7602e9 100644 --- a/docs/types/stripLightWebhookContext.html +++ b/docs/types/stripLightWebhookContext.html @@ -1 +1 @@ -stripLightWebhookContext | node-switchbot

    Type Alias stripLightWebhookContext

    stripLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        powerState: "ON" | "OFF";
    }
    +stripLightWebhookContext | node-switchbot

    Type Alias stripLightWebhookContext

    stripLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/waterLeakDetector.html b/docs/types/waterLeakDetector.html index cdb26c35..70189b39 100644 --- a/docs/types/waterLeakDetector.html +++ b/docs/types/waterLeakDetector.html @@ -1 +1 @@ -waterLeakDetector | node-switchbot

    Type Alias waterLeakDetector

    waterLeakDetector: device & {}
    +waterLeakDetector | node-switchbot

    Type Alias waterLeakDetector

    waterLeakDetector: device & {}
    diff --git a/docs/types/waterLeakDetectorServiceData.html b/docs/types/waterLeakDetectorServiceData.html index 04075224..023b4b9b 100644 --- a/docs/types/waterLeakDetectorServiceData.html +++ b/docs/types/waterLeakDetectorServiceData.html @@ -1 +1 @@ -waterLeakDetectorServiceData | node-switchbot

    Type Alias waterLeakDetectorServiceData

    waterLeakDetectorServiceData: serviceData & {
        battery: number;
        leak: boolean;
        low_battery: boolean;
        model: Leak;
        modelFriendlyName: Leak;
        modelName: Leak;
        tampered: boolean;
    }
    +waterLeakDetectorServiceData | node-switchbot

    Type Alias waterLeakDetectorServiceData

    waterLeakDetectorServiceData: serviceData & {
        battery: number;
        leak: boolean;
        low_battery: boolean;
        model: Leak;
        modelFriendlyName: Leak;
        modelName: Leak;
        tampered: boolean;
    }
    diff --git a/docs/types/waterLeakDetectorStatus.html b/docs/types/waterLeakDetectorStatus.html index 3f92f65d..aa7002d9 100644 --- a/docs/types/waterLeakDetectorStatus.html +++ b/docs/types/waterLeakDetectorStatus.html @@ -1 +1 @@ -waterLeakDetectorStatus | node-switchbot

    Type Alias waterLeakDetectorStatus

    waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
    +waterLeakDetectorStatus | node-switchbot

    Type Alias waterLeakDetectorStatus

    waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
    diff --git a/docs/types/waterLeakDetectorWebhookContext.html b/docs/types/waterLeakDetectorWebhookContext.html index 0d381410..796ccbb2 100644 --- a/docs/types/waterLeakDetectorWebhookContext.html +++ b/docs/types/waterLeakDetectorWebhookContext.html @@ -1 +1 @@ -waterLeakDetectorWebhookContext | node-switchbot

    Type Alias waterLeakDetectorWebhookContext

    waterLeakDetectorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: 0 | 1;
    }
    +waterLeakDetectorWebhookContext | node-switchbot

    Type Alias waterLeakDetectorWebhookContext

    waterLeakDetectorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: 0 | 1;
    }
    From 118390d761da90837f7e291d5f62b743cd0c174b Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Wed, 27 Aug 2025 13:14:16 -0500 Subject: [PATCH 2/3] v3.6.0 (#298) ## [3.6.0](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.6.0) (2025-08-27) ### What's Changed - Housekeeping and update dependencies - **BREAKING**: Fixed compatibility with `@stoprocent/noble` v2.3.4 and `@stoprocent/bluetooth-hci-socket` v2.2.3 - **Enhancement**: Added comprehensive input validation utilities (`ValidationUtils` class) - **Enhancement**: Improved error handling with more descriptive error messages - **Enhancement**: Added command constants to replace magic numbers for better maintainability - **Enhancement**: Enhanced type safety with proper TypeScript assertions - **Enhancement**: Improved buffer validation with configurable minimum length - **Enhancement**: Better resource cleanup in error scenarios with try-catch-finally blocks - **Enhancement**: Removed deprecated parameter checker in favor of modern validation - **Fix**: Updated `noble._state` to `noble.state` for compatibility with newer noble versions - **Fix**: Enhanced NobleTypes interface to properly support newer noble version - **Code Quality**: Improved JSDoc documentation throughout device classes - **Code Quality**: Standardized validation across all device classes - **Docs**: Updated BLE.md and OpenAPI.md for new validation and error handling features - **Internal**: Refactored device instantiation logic for consistency - **Internal**: Improved test coverage for validation utilities and error scenarios - **Chore**: Synced package scripts and documentation with latest development workflow **Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.5.1...v3.6.0 --- .vscode/settings.json | 2 + CHANGELOG.md | 23 + docs/assets/hierarchy.js | 2 +- docs/assets/main.js | 10 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/assets/style.css | 480 +- docs/classes/Advertising.html | 14 +- docs/classes/ErrorUtils.html | 25 + docs/classes/ParameterChecker.html | 69 + docs/classes/SwitchBotBLE.html | 42 +- docs/classes/SwitchBotOpenAPI.html | 50 +- docs/classes/SwitchbotDevice.html | 66 +- docs/classes/ValidationUtils.html | 51 + docs/classes/WoAirPurifier.html | 83 + docs/classes/WoAirPurifierTable.html | 83 + docs/classes/WoBlindTilt.html | 100 +- docs/classes/WoBulb.html | 92 +- docs/classes/WoCeilingLight.html | 104 +- docs/classes/WoContact.html | 68 +- docs/classes/WoCurtain.html | 88 +- docs/classes/WoHand.html | 88 +- docs/classes/WoHub2.html | 68 +- docs/classes/WoHub3.html | 52 + docs/classes/WoHumi.html | 96 +- docs/classes/WoHumi2.html | 96 +- docs/classes/WoIOSensorTH.html | 68 +- docs/classes/WoKeypad.html | 66 +- docs/classes/WoLeak.html | 68 +- docs/classes/WoPlugMiniJP.html | 88 +- docs/classes/WoPlugMiniUS.html | 88 +- docs/classes/WoPresence.html | 68 +- docs/classes/WoRelaySwitch1.html | 76 +- docs/classes/WoRelaySwitch1PM.html | 76 +- docs/classes/WoRemote.html | 68 +- docs/classes/WoSensorTH.html | 66 +- docs/classes/WoSensorTHPlus.html | 66 +- docs/classes/WoSensorTHPro.html | 66 +- docs/classes/WoSensorTHProCO2.html | 66 +- docs/classes/WoSmartLock.html | 120 +- docs/classes/WoSmartLockPro.html | 120 +- docs/classes/WoStrip.html | 96 +- docs/enums/LogLevel.html | 20 +- docs/enums/SwitchBotBLEModel.html | 61 +- docs/enums/SwitchBotBLEModelFriendlyName.html | 67 +- docs/enums/SwitchBotBLEModelName.html | 59 +- docs/enums/SwitchBotModel.html | 97 +- docs/functions/updateBaseURL.html | 3 + docs/hierarchy.html | 2 +- docs/index.html | 14 +- docs/interfaces/AdvertisementData.html | 6 +- docs/interfaces/Chars.html | 8 +- .../interfaces/ColorLightServiceDataBase.html | 17 + docs/interfaces/ErrorObject.html | 6 +- docs/interfaces/LockBaseServiceData.html | 15 + docs/interfaces/NobleTypes.html | 7 +- docs/interfaces/Params.html | 12 +- docs/interfaces/PlugMiniServiceDataBase.html | 12 + docs/interfaces/PushRequest.html | 5 + docs/interfaces/PushResponseBody.html | 3 + docs/interfaces/Rule.html | 18 +- docs/interfaces/ServiceData.html | 4 +- docs/interfaces/SwitchBotBLEDevice.html | 49 +- docs/interfaces/SwitchBotScanner.html | 6 + .../TemperatureServiceDataBase.html | 10 + docs/interfaces/WebhookDetail.html | 12 +- docs/interfaces/ad.html | 10 +- docs/interfaces/body.html | 6 +- docs/interfaces/bodyChange.html | 8 +- docs/interfaces/deleteWebhookResponse.html | 8 +- docs/interfaces/device.html | 14 +- docs/interfaces/deviceList.html | 4 +- docs/interfaces/deviceStatus.html | 14 +- docs/interfaces/deviceStatusRequest.html | 8 +- docs/interfaces/deviceWebhook.html | 8 +- docs/interfaces/deviceWebhookContext.html | 8 +- docs/interfaces/devices.html | 8 +- docs/interfaces/infraredRemoteList.html | 4 +- docs/interfaces/irdevice.html | 10 +- docs/interfaces/pushResponse.html | 9 +- docs/interfaces/queryWebhookResponse.html | 8 +- docs/interfaces/setupWebhookResponse.html | 8 +- docs/interfaces/switchbot.html | 3 - docs/interfaces/updateWebhookResponse.html | 8 +- docs/interfaces/webhookRequest.html | 8 +- docs/modules.html | 2 +- docs/types/BLEDeviceServiceData.html | 1 + docs/types/CommandType.html | 2 + docs/types/MacAddress.html | 2 +- docs/types/airPurifier.html | 1 + docs/types/airPurifierPM25WebhookContext.html | 1 + docs/types/airPurifierServiceData.html | 1 + docs/types/airPurifierStatus.html | 1 + docs/types/airPurifierTable.html | 1 + .../airPurifierTablePM25WebhookContext.html | 1 + docs/types/airPurifierTableServiceData.html | 1 + docs/types/airPurifierTableStatus.html | 1 + docs/types/airPurifierTableVOC.html | 1 + docs/types/airPurifierTableVOCStatus.html | 1 + .../airPurifierTableVOCWebhookContext.html | 1 + .../types/airPurifierTableWebhookContext.html | 1 + docs/types/airPurifierVOC.html | 1 + docs/types/airPurifierVOCStatus.html | 1 + docs/types/airPurifierVOCWebhookContext.html | 1 + docs/types/airPurifierWebhookContext.html | 1 + docs/types/batteryCirculatorFan.html | 2 +- .../batteryCirculatorFanServiceData.html | 2 +- docs/types/batteryCirculatorFanStatus.html | 2 +- .../batteryCirculatorFanWebhookContext.html | 2 +- docs/types/blindTilt.html | 2 +- docs/types/blindTiltServiceData.html | 2 +- docs/types/blindTiltStatus.html | 2 +- docs/types/blindTiltWebhookContext.html | 2 +- docs/types/bot.html | 2 +- docs/types/botServiceData.html | 2 +- docs/types/botStatus.html | 2 +- docs/types/botWebhookContext.html | 2 +- docs/types/ceilingLight.html | 2 +- docs/types/ceilingLightPro.html | 2 +- docs/types/ceilingLightProServiceData.html | 2 +- docs/types/ceilingLightProStatus.html | 2 +- docs/types/ceilingLightProWebhookContext.html | 2 +- docs/types/ceilingLightServiceData.html | 2 +- docs/types/ceilingLightStatus.html | 2 +- docs/types/ceilingLightWebhookContext.html | 2 +- docs/types/circulatorFanStatus.html | 2 +- docs/types/circulatorFanWebhookContext.html | 2 +- docs/types/colorBulb.html | 2 +- docs/types/colorBulbServiceData.html | 2 +- docs/types/colorBulbStatus.html | 2 +- docs/types/colorBulbWebhookContext.html | 2 +- docs/types/contactSensor.html | 2 +- docs/types/contactSensorServiceData.html | 2 +- docs/types/contactSensorStatus.html | 2 +- docs/types/contactSensorWebhookContext.html | 2 +- docs/types/curtain.html | 2 +- docs/types/curtain3.html | 2 +- docs/types/curtain3ServiceData.html | 2 +- docs/types/curtain3WebhookContext.html | 2 +- docs/types/curtainServiceData.html | 2 +- docs/types/curtainStatus.html | 2 +- docs/types/curtainWebhookContext.html | 2 +- docs/types/floorCleaningRobotS10.html | 2 +- docs/types/floorCleaningRobotS10Status.html | 2 +- .../floorCleaningRobotS10WebhookContext.html | 2 +- docs/types/hub2.html | 2 +- docs/types/hub2ServiceData.html | 2 +- docs/types/hub2Status.html | 2 +- docs/types/hub2WebhookContext.html | 2 +- docs/types/hub3ServiceData.html | 1 + docs/types/humidifier.html | 2 +- docs/types/humidifier2ServiceData.html | 2 +- docs/types/humidifier2Status.html | 2 +- docs/types/humidifier2WebhookContext.html | 2 +- docs/types/humidifierServiceData.html | 2 +- docs/types/humidifierStatus.html | 2 +- docs/types/humidifierWebhookContext.html | 2 +- docs/types/indoorCam.html | 2 +- docs/types/indoorCameraWebhookContext.html | 2 +- docs/types/keypad.html | 2 +- docs/types/keypadDetectorServiceData.html | 2 +- docs/types/keypadTouch.html | 2 +- docs/types/keypadTouchWebhookContext.html | 2 +- docs/types/keypadWebhookContext.html | 2 +- docs/types/lock.html | 2 +- docs/types/lockPro.html | 2 +- docs/types/lockProServiceData.html | 2 +- docs/types/lockProStatus.html | 2 +- docs/types/lockProWebhookContext.html | 2 +- docs/types/lockServiceData.html | 2 +- docs/types/lockStatus.html | 2 +- docs/types/lockWebhookContext.html | 2 +- docs/types/meter.html | 2 +- docs/types/meterPlus.html | 2 +- docs/types/meterPlusServiceData.html | 2 +- docs/types/meterPlusStatus.html | 2 +- docs/types/meterPlusWebhookContext.html | 2 +- docs/types/meterPro.html | 2 +- docs/types/meterProCO2ServiceData.html | 2 +- docs/types/meterProCO2Status.html | 2 +- docs/types/meterProCO2WebhookContext.html | 2 +- docs/types/meterProServiceData.html | 2 +- docs/types/meterProStatus.html | 2 +- docs/types/meterProWebhookContext.html | 2 +- docs/types/meterServiceData.html | 2 +- docs/types/meterStatus.html | 2 +- docs/types/meterWebhookContext.html | 2 +- docs/types/motionSensor.html | 2 +- docs/types/motionSensorServiceData.html | 2 +- docs/types/motionSensorStatus.html | 2 +- docs/types/motionSensorWebhookContext.html | 2 +- docs/types/onadvertisement.html | 2 +- docs/types/ondiscover.html | 2 +- docs/types/outdoorMeter.html | 2 +- docs/types/outdoorMeterServiceData.html | 2 +- docs/types/outdoorMeterStatus.html | 2 +- docs/types/outdoorMeterWebhookContext.html | 2 +- docs/types/panTiltCamWebhookContext.html | 2 +- docs/types/pantiltCam.html | 2 +- docs/types/pantiltCam2k.html | 2 +- docs/types/plug.html | 2 +- docs/types/plugMini.html | 2 +- docs/types/plugMiniJPServiceData.html | 2 +- docs/types/plugMiniJPWebhookContext.html | 2 +- docs/types/plugMiniStatus.html | 2 +- docs/types/plugMiniUSServiceData.html | 2 +- docs/types/plugMiniUSWebhookContext.html | 2 +- docs/types/plugStatus.html | 2 +- docs/types/plugWebhookContext.html | 2 +- docs/types/relaySwitch1Context.html | 2 +- docs/types/relaySwitch1PMContext.html | 2 +- docs/types/relaySwitch1PMServiceData.html | 2 +- docs/types/relaySwitch1PMStatus.html | 2 +- docs/types/relaySwitch1ServiceData.html | 2 +- docs/types/relaySwitch1Status.html | 2 +- docs/types/remote.html | 2 +- docs/types/remoteServiceData.html | 2 +- docs/types/robotVacuumCleanerS1.html | 2 +- docs/types/robotVacuumCleanerS1Plus.html | 2 +- .../types/robotVacuumCleanerS1PlusStatus.html | 2 +- ...obotVacuumCleanerS1PlusWebhookContext.html | 2 +- docs/types/robotVacuumCleanerS1Status.html | 2 +- .../robotVacuumCleanerS1WebhookContext.html | 2 +- docs/types/robotVacuumCleanerServiceData.html | 2 +- docs/types/stripLight.html | 2 +- docs/types/stripLightServiceData.html | 2 +- docs/types/stripLightStatus.html | 2 +- docs/types/stripLightWebhookContext.html | 2 +- docs/types/waterLeakDetector.html | 2 +- docs/types/waterLeakDetectorServiceData.html | 2 +- docs/types/waterLeakDetectorStatus.html | 2 +- .../waterLeakDetectorWebhookContext.html | 2 +- docs/variables/parameterChecker.html | 1 + docs/variables/urls.html | 1 + eslint.config.js | 2 - jest.config.js | 3 - package-lock.json | 4964 ++++++++++++----- package.json | 30 +- src/device.test.ts | 178 + src/device.ts | 857 ++- src/index.ts | 14 +- src/parameter-checker.test.ts | 65 + src/parameter-checker.ts | 31 +- src/settings.test.ts | 14 + src/settings.ts | 38 +- src/switchbot-ble.test.ts | 35 + src/switchbot-ble.ts | 174 +- src/switchbot-openapi.test.ts | 46 + src/switchbot-openapi.ts | 55 +- src/types/ble-guards.test.ts | 67 + src/types/ble-guards.ts | 15 + src/types/{bledevicestatus.ts => ble.ts} | 288 +- src/types/devicelist.ts | 125 - src/types/devicepush.ts | 17 - src/types/deviceresponse.ts | 18 - src/types/devicestatus.ts | 229 - src/types/devicewebhookstatus.ts | 283 - src/types/irdevicelist.ts | 14 - src/types/openapi.ts | 760 +++ 259 files changed, 8220 insertions(+), 4169 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 docs/classes/ErrorUtils.html create mode 100644 docs/classes/ParameterChecker.html create mode 100644 docs/classes/ValidationUtils.html create mode 100644 docs/classes/WoAirPurifier.html create mode 100644 docs/classes/WoAirPurifierTable.html create mode 100644 docs/classes/WoHub3.html create mode 100644 docs/functions/updateBaseURL.html create mode 100644 docs/interfaces/ColorLightServiceDataBase.html create mode 100644 docs/interfaces/LockBaseServiceData.html create mode 100644 docs/interfaces/PlugMiniServiceDataBase.html create mode 100644 docs/interfaces/PushRequest.html create mode 100644 docs/interfaces/PushResponseBody.html create mode 100644 docs/interfaces/SwitchBotScanner.html create mode 100644 docs/interfaces/TemperatureServiceDataBase.html delete mode 100644 docs/interfaces/switchbot.html create mode 100644 docs/types/BLEDeviceServiceData.html create mode 100644 docs/types/CommandType.html create mode 100644 docs/types/airPurifier.html create mode 100644 docs/types/airPurifierPM25WebhookContext.html create mode 100644 docs/types/airPurifierServiceData.html create mode 100644 docs/types/airPurifierStatus.html create mode 100644 docs/types/airPurifierTable.html create mode 100644 docs/types/airPurifierTablePM25WebhookContext.html create mode 100644 docs/types/airPurifierTableServiceData.html create mode 100644 docs/types/airPurifierTableStatus.html create mode 100644 docs/types/airPurifierTableVOC.html create mode 100644 docs/types/airPurifierTableVOCStatus.html create mode 100644 docs/types/airPurifierTableVOCWebhookContext.html create mode 100644 docs/types/airPurifierTableWebhookContext.html create mode 100644 docs/types/airPurifierVOC.html create mode 100644 docs/types/airPurifierVOCStatus.html create mode 100644 docs/types/airPurifierVOCWebhookContext.html create mode 100644 docs/types/airPurifierWebhookContext.html create mode 100644 docs/types/hub3ServiceData.html create mode 100644 docs/variables/parameterChecker.html create mode 100644 docs/variables/urls.html delete mode 100644 jest.config.js create mode 100644 src/device.test.ts create mode 100644 src/parameter-checker.test.ts create mode 100644 src/switchbot-ble.test.ts create mode 100644 src/switchbot-openapi.test.ts create mode 100644 src/types/ble-guards.test.ts create mode 100644 src/types/ble-guards.ts rename src/types/{bledevicestatus.ts => ble.ts} (61%) delete mode 100644 src/types/devicelist.ts delete mode 100644 src/types/devicepush.ts delete mode 100644 src/types/deviceresponse.ts delete mode 100644 src/types/devicestatus.ts delete mode 100644 src/types/devicewebhookstatus.ts delete mode 100644 src/types/irdevicelist.ts create mode 100644 src/types/openapi.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 80da8e5d..d6d1d7bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,29 @@ All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/) +## [3.6.0](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.6.0) (2025-08-27) + +### What's Changed +- Housekeeping and update dependencies +- **BREAKING**: Fixed compatibility with `@stoprocent/noble` v2.3.4 and `@stoprocent/bluetooth-hci-socket` v2.2.3 +- **Enhancement**: Added comprehensive input validation utilities (`ValidationUtils` class) +- **Enhancement**: Improved error handling with more descriptive error messages +- **Enhancement**: Added command constants to replace magic numbers for better maintainability +- **Enhancement**: Enhanced type safety with proper TypeScript assertions +- **Enhancement**: Improved buffer validation with configurable minimum length +- **Enhancement**: Better resource cleanup in error scenarios with try-catch-finally blocks +- **Enhancement**: Removed deprecated parameter checker in favor of modern validation +- **Fix**: Updated `noble._state` to `noble.state` for compatibility with newer noble versions +- **Fix**: Enhanced NobleTypes interface to properly support newer noble version +- **Code Quality**: Improved JSDoc documentation throughout device classes +- **Code Quality**: Standardized validation across all device classes +- **Docs**: Updated BLE.md and OpenAPI.md for new validation and error handling features +- **Internal**: Refactored device instantiation logic for consistency +- **Internal**: Improved test coverage for validation utilities and error scenarios +- **Chore**: Synced package scripts and documentation with latest development workflow + +**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.5.1...v3.6.0 + ## [3.5.1](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.5.1) (2025-07-25) ### What's Changed diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js index 8928e356..8c090936 100644 --- a/docs/assets/hierarchy.js +++ b/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJyVlkFP2zAYQP+Lzx8jn53YTo5jB7aBiFYQB8QhTQy1SBzkOJsQ6n+fomg0LhB7p0rty3u2Gyd+Jbbv3UCKOypQAEV+D8Sqh1bVTvdmIMUrocinD1N1ihRk80e7erft3Tf1W9eKAHnSpiEFUglktC0pSN1Ww6CG0yP0y851LYH5Z1IQNzQn07Un8xdA6p1uG6sMKe4Y45BSCRlK4JgBlwkITkGmCeRJBrmUgIlAQGQCkCYMkPIckKUSMKUCMM0pYMYzQM4koJgQwSWgZAxQ5hIw5ynQyUJRyPs9EMaWU73tv7baNNe6dWvTXGCBKe6BpFT6hbHdBuRjuw17M/S9Z0q32jxe6MddYPBLMtzhmPmd3riqDiVmKMIuE98+WldpE7DPUNguOPXs55Vp1tUTEfbK1B/1+bilAe+4pWFvnmRH3k6HvJ2O8Er5zhsccKcjRjxtSU/9/WqjzNDb6/N1/4GLiCATXuSnenmuAv/kzETIacI8+YWqntbVExEj5rknLtvx8VIb/aNc1x+4iAhL5YeRm01c5GYTEUmpv/6lVYMy6++CAxUTyP2N+ku11cv8NsH1yJKMCGU8+zRUXsanysuIGGfyKNb1LrBoMxMhF0e3bdy2+49NJ7j8MFC24xAXmciIkGQfz6S0fWTH9jGZ/JP52P7sKvA09NmIWM5TP9ZV1l30deDJ8oaFE/T4yft2bXjdFmRECMXRwjmrnwOFCYlQC1w+WBr/gEkz/s+sjVP2oarVcNqsHy3fSP94SSUT03lv+nxX3LjKLe7pte6MRtT3+/1fvJagpQ==" \ No newline at end of file +window.hierarchyData = "eJyVlsFO3DAQht/F56FkbCexc2vpgbYgoi6IA+KQTQxr4U2Q47RCaN+9iqIucQqxe1rt7p/vi0cee16J7TrXk+KOJVQAlek9EKsejKqd7tqeFK+EynT8aKu9IgXZ/Nau3m0791X90rUiQJ5025ACqQAyWEMKUpuq71V/uoh+2rm9ITD9TQri+uZkfPZk+gFIvdOmsaolxR3HDNJEQCoFZDKFPEtAcAqSJiBFCpikCSAyBkgxA6SCAjIuADlyQC4ZYJpTwIzlgDkmgLlggGKMSGSAMhdAE86AYiKBjhTKKAPKx69c4v0BCMdstvTb7ovRbXOtjVtb9iwWWPIBSJoI3zCYbQA+mG0EV/rcM6WNbh8v9OMu8PLzZNiTeZvjtjvrWlfVIcUUCtPzLPHpg3WVbgP0KRSmC049+nnVNuvoMRHmSuq/9fmwpQHusKURXJEuuSzIZWHu2EwL8F6HwHsdAUbG/gEHS7HXEbUY295Df7vaqLbv7PX5Ov8tFyMR/g75oV6eq8AemTIRcMb9Fr1Q1dM6ekxEgDlyD1ya4fFSt/p7uY5/y8VIJHtXcrOJk9xsIiRp7te/tKpX7fqt85aKEGQs9wQ/lalepnsL1yXzZIQox+RDUXkZryovY2SCLWT7zgWKNmUi4GKxbePa7j+aTiJ7V1CaoY+TjMkYUf7+SkrbRXpsF9aMQ8ZHmrOrwGnoZyNkmEhftq+su+jqwMlyjEUolifv8dlw3WbJCBGji8I5q58DhjESgeaLMn3WthysftDKrgtmwRiNxI8019XWBFpymQ4LxyF+Jmz8EZ2m2V+Jbp2yD1Wt+tNmfTg/Jv0BnSFj44TM/Ct+gm1c5Wa9uuadohH2w+HwB3cNBpI=" \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index 2363f64c..19bbb7a7 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,9 +1,9 @@ "use strict"; -window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse","folder":"Folder","kind_1":"Project","kind_2":"Module","kind_4":"Namespace","kind_8":"Enumeration","kind_16":"Enumeration Member","kind_32":"Variable","kind_64":"Function","kind_128":"Class","kind_256":"Interface","kind_512":"Constructor","kind_1024":"Property","kind_2048":"Method","kind_4096":"Call Signature","kind_8192":"Index Signature","kind_16384":"Constructor Signature","kind_32768":"Parameter","kind_65536":"Type Literal","kind_131072":"Type Parameter","kind_262144":"Accessor","kind_524288":"Get Signature","kind_1048576":"Set Signature","kind_2097152":"Type Alias","kind_4194304":"Reference","kind_8388608":"Document"}; -"use strict";(()=>{var De=Object.create;var le=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Be=Object.prototype.hasOwnProperty;var qe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var je=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ne(e))!Be.call(t,i)&&i!==n&&le(t,i,{get:()=>e[i],enumerable:!(r=Fe(e,i))||r.enumerable});return t};var $e=(t,e,n)=>(n=t!=null?De(Ve(t)):{},je(e||!t||!t.__esModule?le(n,"default",{value:t,enumerable:!0}):n,t));var pe=qe((de,he)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,c],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[c+1]*i[d+1],c+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof de=="object"?he.exports=n():e.lunr=n()}(this,function(){return t})})()});window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse",folder:"Folder",kind_1:"Project",kind_2:"Module",kind_4:"Namespace",kind_8:"Enumeration",kind_16:"Enumeration Member",kind_32:"Variable",kind_64:"Function",kind_128:"Class",kind_256:"Interface",kind_512:"Constructor",kind_1024:"Property",kind_2048:"Method",kind_4096:"Call Signature",kind_8192:"Index Signature",kind_16384:"Constructor Signature",kind_32768:"Parameter",kind_65536:"Type Literal",kind_131072:"Type Parameter",kind_262144:"Accessor",kind_524288:"Get Signature",kind_1048576:"Set Signature",kind_2097152:"Type Alias",kind_4194304:"Reference",kind_8388608:"Document"};var ce=[];function G(t,e){ce.push({selector:e,constructor:t})}var J=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){ce.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!ze(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function ze(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var ue=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var ge=$e(pe(),1);async function A(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}async function fe(t,e){if(!window.searchData)return;let n=await A(window.searchData);t.data=n,t.index=ge.Index.load(n.index),e.classList.remove("loading"),e.classList.add("ready")}function ve(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:document.documentElement.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{fe(e,t)}),fe(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{re(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),We(t,i,r,e)}function We(t,e,n,r){n.addEventListener("input",ue(()=>{Ue(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Je(e,t):i.key=="ArrowUp"?(me(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(me(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),re(t))})}function re(t){t.classList.remove("has-focus")}function Ue(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ye(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ye(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=c+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function me(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Je(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),re(e)}}function ye(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ne(t.substring(s,o)),`${ne(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ne(t.substring(s))),i.join("")}var Ge={"&":"&","<":"<",">":">","'":"'",'"':"""};function ne(t){return t.replace(/[&<>"'"]/g,e=>Ge[e])}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var H="mousedown",Ee="mousemove",B="mouseup",X={x:0,y:0},xe=!1,ie=!1,Xe=!1,D=!1,be=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(be?"is-mobile":"not-mobile");be&&"ontouchstart"in document.documentElement&&(Xe=!0,H="touchstart",Ee="touchmove",B="touchend");document.addEventListener(H,t=>{ie=!0,D=!1;let e=H=="touchstart"?t.targetTouches[0]:t;X.y=e.pageY||0,X.x=e.pageX||0});document.addEventListener(Ee,t=>{if(ie&&!D){let e=H=="touchstart"?t.targetTouches[0]:t,n=X.x-(e.pageX||0),r=X.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ie=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var Y=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(H,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var se;try{se=localStorage}catch{se={getItem(){return null},setItem(){}}}var C=se;var Le=document.head.appendChild(document.createElement("style"));Le.dataset.for="filters";var Z=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),Le.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=C.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){C.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var oe=new Map,ae=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;C.setItem(this.key,e.toString())}},K=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(oe.has(i))s=oe.get(i);else{let o=C.getItem(i),a=o?o==="true":this.el.open;s=new ae(i,a),oe.set(i,s)}s.add(this.el)}};function Se(t){let e=C.getItem("tsd-theme")||"os";t.value=e,we(e),t.addEventListener("change",()=>{C.setItem("tsd-theme",t.value),we(t.value)})}function we(t){document.documentElement.dataset.theme=t}var ee;function Ce(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Te),Te())}async function Te(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await A(window.navigationData);ee=document.documentElement.dataset.base,ee.endsWith("/")||(ee+="/"),t.innerHTML="";for(let n of e)Ie(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Ie(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',ke(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let c of t.children)Ie(c,l,i)}else ke(t,r,t.class)}function ke(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));if(r.href=ee+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind){let i=window.translations[`kind_${t.kind}`].replaceAll('"',""");r.innerHTML=``}r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span")),i=window.translations.folder.replaceAll('"',""");r.innerHTML=``,r.appendChild(document.createElement("span")).textContent=t.text}}var te=document.documentElement.dataset.base;te.endsWith("/")||(te+="/");function Pe(){document.querySelector(".tsd-full-hierarchy")?Ye():document.querySelector(".tsd-hierarchy")&&Ze()}function Ye(){document.addEventListener("click",r=>{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=tt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function Ze(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Qe),Qe())}async function Qe(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await A(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),Ke(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function Ke(t,e,n){let r=e.roots.filter(i=>et(e,i,n));for(let i of r)t.appendChild(_e(e,i,n))}function _e(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let l=t.reflections[a],c=s.appendChild(document.createElement("a"));c.textContent=l.name,c.href=te+l.url,c.className=l.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=te+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let l=_e(t,a,n,r);l&&o.appendChild(l)}}return r.delete(e),s}function et(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function tt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}G(Y,"a[data-toggle]");G(K,".tsd-accordion");G(Z,".tsd-filter-item input[type=checkbox]");var Oe=document.getElementById("tsd-theme");Oe&&Se(Oe);var nt=new J;Object.defineProperty(window,"app",{value:nt});ve();Ce();Pe();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse","folder":"Folder","search_index_not_available":"The search index is not available","search_no_results_found_for_0":"No results found for {0}","kind_1":"Project","kind_2":"Module","kind_4":"Namespace","kind_8":"Enumeration","kind_16":"Enumeration Member","kind_32":"Variable","kind_64":"Function","kind_128":"Class","kind_256":"Interface","kind_512":"Constructor","kind_1024":"Property","kind_2048":"Method","kind_4096":"Call Signature","kind_8192":"Index Signature","kind_16384":"Constructor Signature","kind_32768":"Parameter","kind_65536":"Type Literal","kind_131072":"Type Parameter","kind_262144":"Accessor","kind_524288":"Get Signature","kind_1048576":"Set Signature","kind_2097152":"Type Alias","kind_4194304":"Reference","kind_8388608":"Document"}; +"use strict";(()=>{var Ke=Object.create;var he=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var et=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ze(e))!Ye.call(t,i)&&i!==n&&he(t,i,{get:()=>e[i],enumerable:!(r=Ge(e,i))||r.enumerable});return t};var nt=(t,e,n)=>(n=t!=null?Ke(Xe(t)):{},tt(e||!t||!t.__esModule?he(n,"default",{value:t,enumerable:!0}):n,t));var ye=et((me,ge)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,l],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(oc?d+=2:a==c&&(n+=r[l+1]*i[d+1],l+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}if(s.str.length==0&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),c=0;c1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof me=="object"?ge.exports=n():e.lunr=n()}(this,function(){return t})})()});var M,G={getItem(){return null},setItem(){}},K;try{K=localStorage,M=K}catch{K=G,M=G}var S={getItem:t=>M.getItem(t),setItem:(t,e)=>M.setItem(t,e),disableWritingLocalStorage(){M=G},disable(){localStorage.clear(),M=G},enable(){M=K}};window.TypeDoc||={disableWritingLocalStorage(){S.disableWritingLocalStorage()},disableLocalStorage:()=>{S.disable()},enableLocalStorage:()=>{S.enable()}};window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse",search_index_not_available:"The search index is not available",search_no_results_found_for_0:"No results found for {0}",folder:"Folder",kind_1:"Project",kind_2:"Module",kind_4:"Namespace",kind_8:"Enumeration",kind_16:"Enumeration Member",kind_32:"Variable",kind_64:"Function",kind_128:"Class",kind_256:"Interface",kind_512:"Constructor",kind_1024:"Property",kind_2048:"Method",kind_4096:"Call Signature",kind_8192:"Index Signature",kind_16384:"Constructor Signature",kind_32768:"Parameter",kind_65536:"Type Literal",kind_131072:"Type Parameter",kind_262144:"Accessor",kind_524288:"Get Signature",kind_1048576:"Set Signature",kind_2097152:"Type Alias",kind_4194304:"Reference",kind_8388608:"Document"};var pe=[];function X(t,e){pe.push({selector:e,constructor:t})}var Z=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){pe.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!rt(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function rt(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var fe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var Ie=nt(ye(),1);async function R(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}var Y="closing",ae="tsd-overlay";function it(){let t=Math.abs(window.innerWidth-document.documentElement.clientWidth);document.body.style.overflow="hidden",document.body.style.paddingRight=`${t}px`}function st(){document.body.style.removeProperty("overflow"),document.body.style.removeProperty("padding-right")}function xe(t,e){t.addEventListener("animationend",()=>{t.classList.contains(Y)&&(t.classList.remove(Y),document.getElementById(ae)?.remove(),t.close(),st())}),t.addEventListener("cancel",n=>{n.preventDefault(),ve(t)}),e?.closeOnClick&&document.addEventListener("click",n=>{t.open&&!t.contains(n.target)&&ve(t)},!0)}function Ee(t){if(t.open)return;let e=document.createElement("div");e.id=ae,document.body.appendChild(e),t.showModal(),it()}function ve(t){if(!t.open)return;document.getElementById(ae)?.classList.add(Y),t.classList.add(Y)}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var le={};function we(t){for(let e of t.split(/\s+/))if(le.hasOwnProperty(e)&&!le[e])return!0;return!1}var ee=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=S.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){S.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),le[`tsd-is-${this.el.name}`]=this.value,this.app.filterChanged(),this.app.updateIndexVisibility()}};var Le=0;async function Se(t,e){if(!window.searchData)return;let n=await R(window.searchData);t.data=n,t.index=Ie.Index.load(n.index),e.innerHTML=""}function _e(){let t=document.getElementById("tsd-search-trigger"),e=document.getElementById("tsd-search"),n=document.getElementById("tsd-search-input"),r=document.getElementById("tsd-search-results"),i=document.getElementById("tsd-search-script"),s=document.getElementById("tsd-search-status");if(!(t&&e&&n&&r&&i&&s))throw new Error("Search controls missing");let o={base:document.documentElement.dataset.base};o.base.endsWith("/")||(o.base+="/"),i.addEventListener("error",()=>{let a=window.translations.search_index_not_available;Pe(s,a)}),i.addEventListener("load",()=>{Se(o,s)}),Se(o,s),ot({trigger:t,searchEl:e,results:r,field:n,status:s},o)}function ot(t,e){let{field:n,results:r,searchEl:i,status:s,trigger:o}=t;xe(i,{closeOnClick:!0});function a(){Ee(i),n.setSelectionRange(0,n.value.length)}o.addEventListener("click",a),n.addEventListener("input",fe(()=>{at(r,n,s,e)},200)),n.addEventListener("keydown",l=>{if(r.childElementCount===0||l.ctrlKey||l.metaKey||l.altKey)return;let d=n.getAttribute("aria-activedescendant"),f=d?document.getElementById(d):null;if(f){let p=!1,v=!1;switch(l.key){case"Home":case"End":case"ArrowLeft":case"ArrowRight":v=!0;break;case"ArrowDown":case"ArrowUp":p=l.shiftKey;break}(p||v)&&ke(n)}if(!l.shiftKey)switch(l.key){case"Enter":f?.querySelector("a")?.click();break;case"ArrowUp":Te(r,n,f,-1),l.preventDefault();break;case"ArrowDown":Te(r,n,f,1),l.preventDefault();break}});function c(){ke(n)}n.addEventListener("change",c),n.addEventListener("blur",c),n.addEventListener("click",c),document.body.addEventListener("keydown",l=>{if(l.altKey||l.metaKey||l.shiftKey)return;let d=l.ctrlKey&&l.key==="k",f=!l.ctrlKey&&!ut()&&l.key==="/";(d||f)&&(l.preventDefault(),a())})}function at(t,e,n,r){if(!r.index||!r.data)return;t.innerHTML="",n.innerHTML="",Le+=1;let i=e.value.trim(),s;if(i){let a=i.split(" ").map(c=>c.length?`*${c}*`:"").join(" ");s=r.index.search(a).filter(({ref:c})=>{let l=r.data.rows[Number(c)].classes;return!l||!we(l)})}else s=[];if(s.length===0&&i){let a=window.translations.search_no_results_found_for_0.replace("{0}",` "${te(i)}" `);Pe(n,a);return}for(let a=0;ac.score-a.score);let o=Math.min(10,s.length);for(let a=0;a`,f=Ce(c.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(f+=` (score: ${s[a].score.toFixed(2)})`),c.parent&&(f=` + ${Ce(c.parent,i)}.${f}`);let p=document.createElement("li");p.id=`tsd-search:${Le}-${a}`,p.role="option",p.ariaSelected="false",p.classList.value=c.classes??"";let v=document.createElement("a");v.tabIndex=-1,v.href=r.base+c.url,v.innerHTML=d+`${f}`,p.append(v),t.appendChild(p)}}function Te(t,e,n,r){let i;if(r===1?i=n?.nextElementSibling||t.firstElementChild:i=n?.previousElementSibling||t.lastElementChild,i!==n){if(!i||i.role!=="option"){console.error("Option missing");return}i.ariaSelected="true",i.scrollIntoView({behavior:"smooth",block:"nearest"}),e.setAttribute("aria-activedescendant",i.id),n?.setAttribute("aria-selected","false")}}function ke(t){let e=t.getAttribute("aria-activedescendant");(e?document.getElementById(e):null)?.setAttribute("aria-selected","false"),t.setAttribute("aria-activedescendant","")}function Ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(te(t.substring(s,o)),`${te(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(te(t.substring(s))),i.join("")}var lt={"&":"&","<":"<",">":">","'":"'",'"':"""};function te(t){return t.replace(/[&<>"'"]/g,e=>lt[e])}function Pe(t,e){t.innerHTML=e?`
    ${e}
    `:""}var ct=["button","checkbox","file","hidden","image","radio","range","reset","submit"];function ut(){let t=document.activeElement;return t?t.isContentEditable||t.tagName==="TEXTAREA"||t.tagName==="SEARCH"?!0:t.tagName==="INPUT"&&!ct.includes(t.type):!1}var D="mousedown",Me="mousemove",$="mouseup",ne={x:0,y:0},Qe=!1,ce=!1,dt=!1,F=!1,Oe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Oe?"is-mobile":"not-mobile");Oe&&"ontouchstart"in document.documentElement&&(dt=!0,D="touchstart",Me="touchmove",$="touchend");document.addEventListener(D,t=>{ce=!0,F=!1;let e=D=="touchstart"?t.targetTouches[0]:t;ne.y=e.pageY||0,ne.x=e.pageX||0});document.addEventListener(Me,t=>{if(ce&&!F){let e=D=="touchstart"?t.targetTouches[0]:t,n=ne.x-(e.pageX||0),r=ne.y-(e.pageY||0);F=Math.sqrt(n*n+r*r)>10}});document.addEventListener($,()=>{ce=!1});document.addEventListener("click",t=>{Qe&&(t.preventDefault(),t.stopImmediatePropagation(),Qe=!1)});var re=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener($,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(D,n=>this.onDocumentPointerDown(n)),document.addEventListener($,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){F||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!F&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var ue=new Map,de=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;S.setItem(this.key,e.toString())}},ie=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(ue.has(i))s=ue.get(i);else{let o=S.getItem(i),a=o?o==="true":this.el.open;s=new de(i,a),ue.set(i,s)}s.add(this.el)}};function He(t){let e=S.getItem("tsd-theme")||"os";t.value=e,Ae(e),t.addEventListener("change",()=>{S.setItem("tsd-theme",t.value),Ae(t.value)})}function Ae(t){document.documentElement.dataset.theme=t}var se;function Ne(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Re),Re())}async function Re(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await R(window.navigationData);se=document.documentElement.dataset.base,se.endsWith("/")||(se+="/"),t.innerHTML="";for(let n of e)Be(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Be(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',De(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let c=a.appendChild(document.createElement("ul"));c.className="tsd-nested-navigation";for(let l of t.children)Be(l,c,i)}else De(t,r,t.class)}function De(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));if(r.href=se+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&(r.classList.add("current"),r.ariaCurrent="page"),t.kind){let i=window.translations[`kind_${t.kind}`].replaceAll('"',""");r.innerHTML=``}r.appendChild(Fe(t.text,document.createElement("span")))}else{let r=e.appendChild(document.createElement("span")),i=window.translations.folder.replaceAll('"',""");r.innerHTML=``,r.appendChild(Fe(t.text,document.createElement("span")))}}function Fe(t,e){let n=t.split(/(?<=[^A-Z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[_-])(?=[^_-])/);for(let r=0;r{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=gt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function pt(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Ve),Ve())}async function Ve(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await R(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),ft(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function ft(t,e,n){let r=e.roots.filter(i=>mt(e,i,n));for(let i of r)t.appendChild(je(e,i,n))}function je(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let c=t.reflections[a],l=s.appendChild(document.createElement("a"));l.textContent=c.name,l.href=oe+c.url,l.className=c.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=oe+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let c=je(t,a,n,r);c&&o.appendChild(c)}}return r.delete(e),s}function mt(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function gt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}X(re,"a[data-toggle]");X(ie,".tsd-accordion");X(ee,".tsd-filter-item input[type=checkbox]");var qe=document.getElementById("tsd-theme");qe&&He(qe);var yt=new Z;Object.defineProperty(window,"app",{value:yt});_e();Ne();$e();"virtualKeyboard"in navigator&&(navigator.virtualKeyboard.overlaysContent=!0);})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 70c0ba79..44e4f60c 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "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" \ No newline at end of file +window.navigationData = "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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index c0fd562e..15e9f2e9 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 2ab8b836..5ba5a2a9 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -1,14 +1,33 @@ @layer typedoc { + :root { + --dim-toolbar-contents-height: 2.5rem; + --dim-toolbar-border-bottom-width: 1px; + --dim-header-height: calc( + var(--dim-toolbar-border-bottom-width) + + var(--dim-toolbar-contents-height) + ); + + /* 0rem For mobile; unit is required for calculation in `calc` */ + --dim-container-main-margin-y: 0rem; + + --dim-footer-height: 3.5rem; + + --modal-animation-duration: 0.2s; + } + :root { /* Light */ --light-color-background: #f2f4f8; --light-color-background-secondary: #eff0f1; - --light-color-warning-text: #222; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --light-color-background-active: #d6d8da; --light-color-background-warning: #e6e600; + --light-color-warning-text: #222; --light-color-accent: #c5c7c9; - --light-color-active-menu-item: var(--light-color-accent); + --light-color-active-menu-item: var(--light-color-background-active); --light-color-text: #222; - --light-color-text-aside: #6e6e6e; + --light-color-contrast-text: #000; + --light-color-text-aside: #5e5e5e; --light-color-icon-background: var(--light-color-background); --light-color-icon-text: var(--light-color-text); @@ -56,15 +75,20 @@ --light-external-icon: url("data:image/svg+xml;utf8,"); --light-color-scheme: light; + } + :root { /* Dark */ --dark-color-background: #2b2e33; --dark-color-background-secondary: #1e2024; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --dark-color-background-active: #5d5d6a; --dark-color-background-warning: #bebe00; --dark-color-warning-text: #222; --dark-color-accent: #9096a2; - --dark-color-active-menu-item: #5d5d6a; + --dark-color-active-menu-item: var(--dark-color-background-active); --dark-color-text: #f5f5f5; + --dark-color-contrast-text: #ffffff; --dark-color-text-aside: #dddddd; --dark-color-icon-background: var(--dark-color-background-secondary); @@ -119,11 +143,13 @@ --color-background-secondary: var( --light-color-background-secondary ); + --color-background-active: var(--light-color-background-active); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); --color-text-aside: var(--light-color-text-aside); --color-icon-background: var(--light-color-icon-background); @@ -179,11 +205,13 @@ --color-background-secondary: var( --dark-color-background-secondary ); + --color-background-active: var(--dark-color-background-active); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); --color-text-aside: var(--dark-color-text-aside); --color-icon-background: var(--dark-color-icon-background); @@ -233,23 +261,17 @@ } } - html { - color-scheme: var(--color-scheme); - } - - body { - margin: 0; - } - :root[data-theme="light"] { --color-background: var(--light-color-background); --color-background-secondary: var(--light-color-background-secondary); + --color-background-active: var(--light-color-background-active); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); --color-icon-background: var(--light-color-icon-background); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); --color-text-aside: var(--light-color-text-aside); --color-icon-text: var(--light-color-icon-text); @@ -299,12 +321,14 @@ :root[data-theme="dark"] { --color-background: var(--dark-color-background); --color-background-secondary: var(--dark-color-background-secondary); + --color-background-active: var(--dark-color-background-active); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); --color-icon-background: var(--dark-color-icon-background); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); --color-text-aside: var(--dark-color-text-aside); --color-icon-text: var(--dark-color-icon-text); @@ -351,6 +375,13 @@ --color-scheme: var(--dark-color-scheme); } + html { + color-scheme: var(--color-scheme); + @media (prefers-reduced-motion: no-preference) { + scroll-behavior: smooth; + } + } + *:focus-visible, .tsd-accordion-summary:focus-visible svg { outline: 2px solid var(--color-focus-outline); @@ -421,16 +452,19 @@ border-top: 1px solid var(--color-accent); padding-top: 1rem; padding-bottom: 1rem; - max-height: 3.5rem; + max-height: var(--dim-footer-height); } footer > p { margin: 0 1em; } .container-main { - margin: 0 auto; + margin: var(--dim-container-main-margin-y) auto; /* toolbar, footer, margin */ - min-height: calc(100vh - 41px - 56px - 4rem); + min-height: calc( + 100svh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); } @keyframes fade-in { @@ -450,29 +484,6 @@ opacity: 0; } } - @keyframes fade-in-delayed { - 0% { - opacity: 0; - } - 33% { - opacity: 0; - } - 100% { - opacity: 1; - } - } - @keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; - } - 66% { - opacity: 0; - } - 100% { - opacity: 0; - } - } @keyframes pop-in-from-right { from { transform: translate(100%, 0); @@ -492,10 +503,12 @@ } body { background: var(--color-background); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; color: var(--color-text); + margin: 0; } a { @@ -514,6 +527,9 @@ a.tsd-anchor-link { color: var(--color-text); } + :target { + scroll-margin-block: calc(var(--dim-header-height) + 0.5rem); + } code, pre { @@ -545,7 +561,8 @@ box-sizing: border-box; } pre:hover > button, - pre > button.visible { + pre > button.visible, + pre > button:focus-visible { opacity: 1; } @@ -555,6 +572,52 @@ border-left: 4px solid gray; } + img { + max-width: 100%; + } + + * { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); + } + + *::-webkit-scrollbar { + width: 0.75rem; + } + + *::-webkit-scrollbar-track { + background: var(--color-icon-background); + } + + *::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); + } + + dialog { + border: none; + outline: none; + padding: 0; + background-color: var(--color-background); + } + dialog::backdrop { + display: none; + } + #tsd-overlay { + background-color: rgba(0, 0, 0, 0.5); + position: fixed; + z-index: 9999; + top: 0; + left: 0; + right: 0; + bottom: 0; + animation: fade-in var(--modal-animation-duration) forwards; + } + #tsd-overlay.closing { + animation-name: fade-out; + } + .tsd-typography { line-height: 1.333em; } @@ -629,6 +692,7 @@ .tsd-breadcrumb { margin: 0; + margin-top: 1rem; padding: 0; color: var(--color-text-aside); } @@ -733,7 +797,7 @@ margin-right: 0.5em; border-radius: 0.33em; /* Leaving this at full opacity breaks event listeners on Firefox. - Don't remove unless you know what you're doing. */ + Don't remove unless you know what you're doing. */ opacity: 0.99; } .tsd-filter-input input[type="checkbox"]:focus-visible + svg { @@ -876,7 +940,8 @@ } .tsd-navigation.settings { - margin: 1rem 0; + margin: 0; + margin-bottom: 1rem; } .tsd-navigation > a, .tsd-navigation .tsd-accordion-summary { @@ -898,6 +963,7 @@ .tsd-navigation a.current, .tsd-page-navigation a.current { background: var(--color-active-menu-item); + color: var(--color-contrast-text); } .tsd-navigation a:hover, .tsd-page-navigation a:hover { @@ -931,14 +997,14 @@ margin-left: -1.5rem; } - .tsd-page-navigation-section { - margin-left: 10px; - } .tsd-page-navigation-section > summary { padding: 0.25rem; } + .tsd-page-navigation-section > summary > svg { + margin-right: 0.25rem; + } .tsd-page-navigation-section > div { - margin-left: 20px; + margin-left: 30px; } .tsd-page-navigation ul { padding-left: 1.75rem; @@ -964,6 +1030,10 @@ .tsd-accordion-summary { list-style-type: none; /* hide marker on non-safari */ outline: none; /* broken on safari, so just hide it */ + display: flex; + align-items: center; + gap: 0.25rem; + box-sizing: border-box; } .tsd-accordion-summary::-webkit-details-marker { display: none; /* hide marker on safari */ @@ -986,28 +1056,21 @@ padding-top: 0; padding-bottom: 0; } - .tsd-accordion .tsd-accordion-summary > svg { - margin-left: 0.25rem; - vertical-align: text-top; - } /* * We need to be careful to target the arrow indicating whether the accordion * is open, but not any other SVGs included in the details element. */ - .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child, - .tsd-accordion:not([open]) > .tsd-accordion-summary > h1 > svg:first-child, - .tsd-accordion:not([open]) > .tsd-accordion-summary > h2 > svg:first-child, - .tsd-accordion:not([open]) > .tsd-accordion-summary > h3 > svg:first-child, - .tsd-accordion:not([open]) > .tsd-accordion-summary > h4 > svg:first-child, - .tsd-accordion:not([open]) > .tsd-accordion-summary > h5 > svg:first-child { + .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child { transform: rotate(-90deg); } .tsd-index-content > :not(:first-child) { margin-top: 0.75rem; } - .tsd-index-heading { + .tsd-index-summary { margin-top: 1.5rem; margin-bottom: 0.75rem; + display: flex; + align-content: center; } .tsd-no-select { @@ -1062,117 +1125,104 @@ margin-bottom: 1rem; } - #tsd-search { - transition: background-color 0.2s; + #tsd-search[open] { + animation: fade-in var(--modal-animation-duration) ease-out forwards; } - #tsd-search .title { - position: relative; - z-index: 2; + #tsd-search[open].closing { + animation-name: fade-out; } - #tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 2.5rem; - height: 100%; - } - #tsd-search .field input { + + /* Avoid setting `display` on closed dialog */ + #tsd-search[open] { + display: flex; + flex-direction: column; + padding: 1rem; + width: 32rem; + max-width: 90vw; + max-height: calc(100vh - env(keyboard-inset-height, 0px) - 25vh); + /* Anchor dialog to top */ + margin-top: 10vh; + border-radius: 6px; + will-change: max-height; + } + #tsd-search-input { box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; width: 100%; - padding: 0 10px; - opacity: 0; + padding: 0 0.625rem; /* 10px */ outline: 0; - border: 0; - background: transparent; + border: 2px solid var(--color-accent); + background-color: transparent; color: var(--color-text); + border-radius: 4px; + height: 2.5rem; + flex: 0 0 auto; + font-size: 0.875rem; + transition: border-color 0.2s, background-color 0.2s; } - #tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; + #tsd-search-input:focus-visible { + background-color: var(--color-background-active); + border-color: transparent; + color: var(--color-contrast-text); } - #tsd-search .field input, - #tsd-search .title, - #tsd-toolbar-links a { - transition: opacity 0.2s; + #tsd-search-input::placeholder { + color: inherit; + opacity: 0.8; } - #tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; + #tsd-search-results { margin: 0; padding: 0; list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + flex: 1 1 auto; + display: flex; + flex-direction: column; + overflow-y: auto; + } + #tsd-search-results:not(:empty) { + margin-top: 0.5rem; } - #tsd-search .results li { + #tsd-search-results > li { background-color: var(--color-background); - line-height: initial; - padding: 4px; + line-height: 1.5; + box-sizing: border-box; + border-radius: 4px; } - #tsd-search .results li:nth-child(even) { + #tsd-search-results > li:nth-child(even) { background-color: var(--color-background-secondary); } - #tsd-search .results li.state { - display: none; - } - #tsd-search .results li.current:not(.no-results), - #tsd-search .results li:hover:not(.no-results) { - background-color: var(--color-accent); + #tsd-search-results > li:is(:hover, [aria-selected="true"]) { + background-color: var(--color-background-active); + color: var(--color-contrast-text); } - #tsd-search .results a { + /* It's important that this takes full size of parent `li`, to capture a click on `li` */ + #tsd-search-results > li > a { display: flex; align-items: center; - padding: 0.25rem; + padding: 0.5rem 0.25rem; box-sizing: border-box; + width: 100%; } - #tsd-search .results a:before { - top: 10px; + #tsd-search-results > li > a > .text { + flex: 1 1 auto; + min-width: 0; + overflow-wrap: anywhere; } - #tsd-search .results span.parent { + #tsd-search-results > li > a .parent { color: var(--color-text-aside); - font-weight: normal; - } - #tsd-search.has-focus { - background-color: var(--color-accent); - } - #tsd-search.has-focus .field input { - top: 0; - opacity: 1; - } - #tsd-search.has-focus .title, - #tsd-search.has-focus #tsd-toolbar-links a { - z-index: 0; - opacity: 0; - } - #tsd-search.has-focus .results { - visibility: visible; - } - #tsd-search.loading .results li.state.loading { - display: block; } - #tsd-search.failure .results li.state.failure { - display: block; - } - - #tsd-toolbar-links { - position: absolute; - top: 0; - right: 2rem; - height: 100%; - display: flex; - align-items: center; - justify-content: flex-end; + #tsd-search-results > li > a mark { + color: inherit; + background-color: inherit; + font-weight: bold; } - #tsd-toolbar-links a { - margin-left: 1.5rem; + #tsd-search-status { + flex: 1; + display: grid; + place-content: center; + text-align: center; + overflow-wrap: anywhere; } - #tsd-toolbar-links a:hover { - text-decoration: underline; + #tsd-search-status:not(:empty) { + min-height: 6rem; } .tsd-signature { @@ -1257,78 +1307,52 @@ width: 100%; color: var(--color-text); background: var(--color-background-secondary); - border-bottom: 1px var(--color-accent) solid; + border-bottom: var(--dim-toolbar-border-bottom-width) + var(--color-accent) solid; transition: transform 0.3s ease-in-out; } .tsd-page-toolbar a { color: var(--color-text); - text-decoration: none; - } - .tsd-page-toolbar a.title { - font-weight: bold; } - .tsd-page-toolbar a.title:hover { - text-decoration: underline; - } - .tsd-page-toolbar .tsd-toolbar-contents { + .tsd-toolbar-contents { display: flex; - justify-content: space-between; - height: 2.5rem; + align-items: center; + height: var(--dim-toolbar-contents-height); margin: 0 auto; } - .tsd-page-toolbar .table-cell { - position: relative; - white-space: nowrap; - line-height: 40px; - } - .tsd-page-toolbar .table-cell:first-child { - width: 100%; + .tsd-toolbar-contents > .title { + font-weight: bold; + margin-right: auto; } - .tsd-page-toolbar .tsd-toolbar-icon { - box-sizing: border-box; - line-height: 0; - padding: 12px 0; + #tsd-toolbar-links { + display: flex; + align-items: center; + gap: 1.5rem; + margin-right: 1rem; } .tsd-widget { + box-sizing: border-box; display: inline-block; - overflow: hidden; opacity: 0.8; - height: 40px; - transition: - opacity 0.1s, - background-color 0.2s; - vertical-align: bottom; + height: 2.5rem; + width: 2.5rem; + transition: opacity 0.1s, background-color 0.1s; + text-align: center; cursor: pointer; + border: none; + background-color: transparent; } .tsd-widget:hover { opacity: 0.9; } - .tsd-widget.active { + .tsd-widget:active { opacity: 1; background-color: var(--color-accent); } - .tsd-widget.no-caption { - width: 40px; - } - .tsd-widget.no-caption:before { - margin: 0; - } - - .tsd-widget.options, - .tsd-widget.menu { + #tsd-toolbar-menu-trigger { display: none; } - input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; - } - input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; - } - - img { - max-width: 100%; - } .tsd-member-summary-name { display: inline-flex; @@ -1342,6 +1366,7 @@ align-items: center; margin-left: 0.5rem; color: var(--color-text); + vertical-align: middle; } .tsd-anchor-icon svg { @@ -1351,7 +1376,8 @@ } .tsd-member-summary-name:hover > .tsd-anchor-icon svg, - .tsd-anchor-link:hover > .tsd-anchor-icon svg { + .tsd-anchor-link:hover > .tsd-anchor-icon svg, + .tsd-anchor-icon:focus-visible svg { visibility: visible; } @@ -1437,41 +1463,26 @@ color: var(--color-text); } - * { - scrollbar-width: thin; - scrollbar-color: var(--color-accent) var(--color-icon-background); - } - - *::-webkit-scrollbar { - width: 0.75rem; - } - - *::-webkit-scrollbar-track { - background: var(--color-icon-background); - } - - *::-webkit-scrollbar-thumb { - background-color: var(--color-accent); - border-radius: 999rem; - border: 0.25rem solid var(--color-icon-background); - } - /* mobile */ @media (max-width: 769px) { - .tsd-widget.options, - .tsd-widget.menu { + #tsd-toolbar-menu-trigger { display: inline-block; + /* temporary fix to vertically align, for compatibility */ + line-height: 2.5; + } + #tsd-toolbar-links { + display: none; } .container-main { display: flex; } - html .col-content { + .col-content { float: none; max-width: 100%; width: 100%; } - html .col-sidebar { + .col-sidebar { position: fixed !important; overflow-y: auto; -webkit-overflow-scrolling: touch; @@ -1486,10 +1497,10 @@ background-color: var(--color-background); transform: translate(100%, 0); } - html .col-sidebar > *:last-child { + .col-sidebar > *:last-child { padding-bottom: 20px; } - html .overlay { + .overlay { content: ""; display: block; position: fixed; @@ -1536,9 +1547,6 @@ .has-menu .tsd-navigation { max-height: 100%; } - #tsd-toolbar-links { - display: none; - } .tsd-navigation .tsd-nav-link { display: flex; } @@ -1550,7 +1558,11 @@ display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); grid-template-areas: "sidebar content"; - margin: 2rem auto; + --dim-container-main-margin-y: 2rem; + } + + .tsd-breadcrumb { + margin-top: 0; } .col-sidebar { @@ -1563,11 +1575,15 @@ } @media (min-width: 770px) and (max-width: 1399px) { .col-sidebar { - max-height: calc(100vh - 2rem - 42px); + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); overflow: auto; position: sticky; - top: 42px; - padding-top: 1rem; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); } .site-menu { margin-top: 1rem; @@ -1577,10 +1593,11 @@ /* two sidebars */ @media (min-width: 1200px) { .container-main { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax( - 0, - 20rem - ); + grid-template-columns: + minmax(0, 1fr) minmax(0, 2.5fr) minmax( + 0, + 20rem + ); grid-template-areas: "sidebar content toc"; } @@ -1597,15 +1614,20 @@ } .site-menu { - margin-top: 1rem; + margin-top: 0rem; } .page-menu, .site-menu { - max-height: calc(100vh - 2rem - 42px); + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); overflow: auto; position: sticky; - top: 42px; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); } } } diff --git a/docs/classes/Advertising.html b/docs/classes/Advertising.html index b028ea19..9bccb9f9 100644 --- a/docs/classes/Advertising.html +++ b/docs/classes/Advertising.html @@ -1,8 +1,8 @@ -Advertising | node-switchbot

    Class Advertising

    Represents the advertising data parser for SwitchBot devices.

    -

    Constructors

    Methods

    Constructors

    Methods

    • Parses the advertisement data coming from SwitchBot device.

      +Advertising | node-switchbot
      node-switchbot
        Preparing search index...

        Class Advertising

        Represents the advertising data parser for SwitchBot devices.

        +
        Index

        Constructors

        Methods

        Constructors

        Methods

        • Parses the advertisement data coming from SwitchBot device.

          This function processes advertising packets received from SwitchBot devices and extracts relevant information based on the device type.

          Parameters

          • peripheral: Peripheral

            The peripheral device object from noble.

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

          Returns Promise<null | ad>

          • An object containing parsed data specific to the SwitchBot device type, or null if the device is not recognized.
          -
        • Parses the service data based on the device model.

          +
        • Parses the service data based on the device model.

          Parameters

          • model: string

            The device model.

          • serviceData: Buffer

            The service data buffer.

          • manufacturerData: Buffer

            The manufacturer data buffer.

            @@ -18,4 +18,4 @@

          Returns Promise<any>

          • The parsed service data.
          -
        +
      diff --git a/docs/classes/ErrorUtils.html b/docs/classes/ErrorUtils.html new file mode 100644 index 00000000..7a32dd17 --- /dev/null +++ b/docs/classes/ErrorUtils.html @@ -0,0 +1,25 @@ +ErrorUtils | node-switchbot
      node-switchbot
        Preparing search index...

        Class ErrorUtils

        Enhanced error handling utilities.

        +
        Index

        Constructors

        Methods

        • Creates a command error with context.

          +

          Parameters

          • command: string

            The command that failed

            +
          • deviceId: string

            The device ID

            +
          • Optionalcause: Error

            The underlying cause

            +

          Returns Error

          A descriptive command error

          +
        • Creates a connection error with context.

          +

          Parameters

          • deviceId: string

            The device ID that failed to connect

            +
          • Optionalcause: Error

            The underlying cause of the connection failure

            +

          Returns Error

          A descriptive connection error

          +
        • Creates a timeout error with context.

          +

          Parameters

          • operation: string

            The operation that timed out

            +
          • timeoutMs: number

            The timeout duration in milliseconds

            +

          Returns Error

          A descriptive timeout error

          +
        • Wraps an async operation with timeout and enhanced error handling.

          +

          Type Parameters

          • T

          Parameters

          • operation: Promise<T>

            The async operation to wrap

            +
          • timeoutMs: number

            Timeout in milliseconds

            +
          • operationName: string

            Name of the operation for error messages

            +

          Returns Promise<T>

          Promise that resolves with the operation result or rejects with timeout

          +
        diff --git a/docs/classes/ParameterChecker.html b/docs/classes/ParameterChecker.html new file mode 100644 index 00000000..ee81e285 --- /dev/null +++ b/docs/classes/ParameterChecker.html @@ -0,0 +1,69 @@ +ParameterChecker | node-switchbot
        node-switchbot
          Preparing search index...

          Class ParameterChecker

          Hierarchy

          • EventEmitter
            • ParameterChecker
          Index

          Constructors

          • Parameters

            • Optionaloptions: EventEmitterOptions

            Returns ParameterChecker

          Accessors

          Methods

          • Checks if the specified object contains valid values based on the provided rules.

            +

            Parameters

            • obj: Record<string, unknown>

              Object including parameters you want to check.

              +
            • rules: Record<string, Rule>

              Object including rules for the parameters.

              +
            • Optionalrequired: boolean = false

              Flag whether the obj is required or not.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is an array.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is a boolean.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is a float.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is an integer.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is an object.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          • Checks if the value is specified (not undefined).

            +

            Parameters

            • value: unknown

              The value to check.

              +

            Returns boolean

              +
            • True if the value is specified, false otherwise.
            • +
            +
          • Checks if the value is a string.

            +

            Parameters

            • value: unknown

              The value to check.

              +
            • rule: Rule

              The rule object containing validation criteria.

              +
            • Optionalname: string = 'value'

              The parameter name.

              +

            Returns Promise<boolean>

              +
            • Resolves to true if the value is valid, false otherwise.
            • +
            +
          diff --git a/docs/classes/SwitchBotBLE.html b/docs/classes/SwitchBotBLE.html index 6f40f042..e197a323 100644 --- a/docs/classes/SwitchBotBLE.html +++ b/docs/classes/SwitchBotBLE.html @@ -1,41 +1,39 @@ -SwitchBotBLE | node-switchbot

          Class SwitchBotBLE

          SwitchBotBLE class to interact with SwitchBot devices.

          -

          Hierarchy

          • EventEmitter
            • SwitchBotBLE

          Constructors

          Properties

          noble: any
          nobleInitialized: Promise<void>
          onadvertisement?: onadvertisement
          ondiscover?: ondiscover

          Methods

          • Discovers Switchbot devices with enhanced error handling and logging.

            Parameters

            • params: Params = {}

              The discovery parameters.

            Returns Promise<SwitchbotDevice[]>

            A Promise that resolves with an array of discovered Switchbot devices.

            -
          • Emits a log event with the specified log level and message.

            -

            Parameters

            • level: string

              The severity level of the log (e.g., 'info', 'warn', 'error').

              -
            • message: string

              The log message to be emitted.

              -

            Returns Promise<void>

          • Starts scanning for SwitchBot devices.

            Parameters

            • Optionalparams: Params = {}

              Optional parameters.

            Returns Promise<void>

            • Resolves when scanning starts successfully.
            -
          • Stops scanning for SwitchBot devices.

            Returns Promise<void>

            • Resolves when scanning stops successfully.
            -
          • Validates the parameters.

            Parameters

            • params: Params

              The parameters to validate.

            • schema: Record<string, unknown>

              The schema to validate against.

            Returns Promise<void>

            • Resolves if parameters are valid, otherwise throws an error.
            -
          • Waits for the specified time.

            Parameters

            • msec: number

              The time to wait in milliseconds.

            Returns Promise<void>

            • Resolves after the specified time.
            -
          +
          diff --git a/docs/classes/SwitchBotOpenAPI.html b/docs/classes/SwitchBotOpenAPI.html index aae2d239..839b3f05 100644 --- a/docs/classes/SwitchBotOpenAPI.html +++ b/docs/classes/SwitchBotOpenAPI.html @@ -1,47 +1,47 @@ -SwitchBotOpenAPI | node-switchbot

          Class SwitchBotOpenAPI

          The SwitchBotOpenAPI class provides methods to interact with the SwitchBot OpenAPI. +SwitchBotOpenAPI | node-switchbot

          node-switchbot
            Preparing search index...

            Class SwitchBotOpenAPI

            The SwitchBotOpenAPI class provides methods to interact with the SwitchBot OpenAPI. It allows you to retrieve device information, control devices, and manage webhooks.

            -
            const switchBotAPI = new SwitchBotOpenAPI('your-token', 'your-secret');

            // Get devices
            switchBotAPI.getDevices().then(response => {
            console.log(response);
            }).catch(error => {
            console.error(error);
            });

            // Control a device
            switchBotAPI.controlDevice('device-id', 'turnOn', 'default').then(response => {
            console.log(response);
            }).catch(error => {
            console.error(error);
            });

            // Setup webhook
            switchBotAPI.setupWebhook('http://your-webhook-url').then(() => {
            console.log('Webhook setup successfully');
            }).catch(error => {
            console.error(error);
            }); +
            const switchBotAPI = new SwitchBotOpenAPI('your-token', 'your-secret');

            // Get devices
            switchBotAPI.getDevices().then(response => {
            console.log(response);
            }).catch(error => {
            console.error(error);
            });

            // Control a device
            switchBotAPI.controlDevice('device-id', 'turnOn', 'default').then(response => {
            console.log(response);
            }).catch(error => {
            console.error(error);
            });

            // Setup webhook
            switchBotAPI.setupWebhook('http://your-webhook-url').then(() => {
            console.log('Webhook setup successfully');
            }).catch(error => {
            console.error(error);
            });
            -

            The API token used for authentication.

            -

            The secret key used for signing requests.

            -

            Hierarchy

            • EventEmitter
              • SwitchBotOpenAPI

            Constructors

            • Creates an instance of the SwitchBot OpenAPI client.

              +

              The API token used for authentication.

              +

              The secret key used for signing requests.

              +

            Hierarchy

            • EventEmitter
              • SwitchBotOpenAPI
            Index

            Constructors

            • Creates an instance of the SwitchBot OpenAPI client.

              Parameters

              • token: string

                The API token used for authentication.

              • secret: string

                The secret key used for signing requests.

                -
              • Optionalhostname: string

              Returns SwitchBotOpenAPI

            Properties

            webhookEventListener?:
                | null
                | Server<typeof IncomingMessage, typeof ServerResponse> = null

            Methods

            • Controls a device by sending a command to the SwitchBot API.

              +
            • Optionalhostname: string

            Returns SwitchBotOpenAPI

            Properties

            webhookEventListener?:
                | null
                | Server<typeof IncomingMessage, typeof ServerResponse> = null

            Methods

            • Controls a device by sending a command to the SwitchBot API.

              Parameters

              • deviceId: string

                The ID of the device to control.

              • command: string

                The command to send to the device.

              • parameter: string

                The parameter for the command.

                -
              • commandType: string = 'command'

                The type of the command (default is 'command').

                +
              • commandType: commandType = 'command'

                The type of the command (default is 'command').

              • Optionaltoken: string

                (Optional) The token used for authentication. If not provided, the instance token will be used.

              • Optionalsecret: string

                (Optional) The secret used for authentication. If not provided, the instance secret will be used.

                -

              Returns Promise<{ response: { commandId: string }; statusCode: number }>

              A promise that resolves to an object containing the response body and status code.

              -

              An error if the device control fails.

              -
            • Deletes a webhook by sending a request to the specified URL.

              +

            Returns Promise<{ response: pushResponseBody; statusCode: number }>

            A promise that resolves to an object containing the response body and status code.

            +

            An error if the device control fails.

            +
            • Deletes a webhook by sending a request to the specified URL.

              Parameters

              • url: string

                The URL of the webhook to be deleted.

              • Optionaltoken: string

                (Optional) The token used for authentication. If not provided, the instance token will be used.

              • Optionalsecret: string

                (Optional) The secret used for authentication. If not provided, the instance secret will be used.

              Returns Promise<void>

              A promise that resolves when the webhook is successfully deleted.

              -

              Will log an error if the deletion fails.

              -
            • Retrieves the list of devices from the SwitchBot OpenAPI.

              +

              Will log an error if the deletion fails.

              +
            • Retrieves the list of devices from the SwitchBot OpenAPI.

              Parameters

              • Optionaltoken: string

                (Optional) The token used for authentication. If not provided, the instance token will be used.

              • Optionalsecret: string

                (Optional) The secret used for authentication. If not provided, the instance secret will be used.

              Returns Promise<{ response: devices; statusCode: number }>

              A promise that resolves to an object containing the API response.

              -

              Throws an error if the request to get devices fails.

              -
            • Retrieves the status of a specific device.

              +

              Throws an error if the request to get devices fails.

              +
            • Retrieves the status of a specific device.

              Parameters

              • deviceId: string

                The unique identifier of the device.

              • Optionaltoken: string

                (Optional) The token used for authentication. If not provided, the instance token will be used.

              • Optionalsecret: string

                (Optional) The secret used for authentication. If not provided, the instance secret will be used.

              Returns Promise<{ response: deviceStatus; statusCode: number }>

              A promise that resolves to an object containing the device status and the status code of the request.

              -

              An error if the request fails.

              -
            • Sets up a webhook listener and configures the webhook on the server.

              +

              An error if the request fails.

              +
            • Sets up a webhook listener and configures the webhook on the server.

              This method performs the following steps:

              1. Creates a local server to listen for incoming webhook events.
              2. @@ -53,5 +53,5 @@
            • Optionaltoken: string

              (Optional) The token used for authentication. If not provided, the instance token will be used.

            • Optionalsecret: string

              (Optional) The secret used for authentication. If not provided, the instance secret will be used.

            Returns Promise<void>

            A promise that resolves when the webhook setup is complete.

            -

            Will log an error if any step in the webhook setup process fails.

            -
            +

            Will log an error if any step in the webhook setup process fails.

            +
            diff --git a/docs/classes/SwitchbotDevice.html b/docs/classes/SwitchbotDevice.html index b172adf9..3966fcd2 100644 --- a/docs/classes/SwitchbotDevice.html +++ b/docs/classes/SwitchbotDevice.html @@ -1,47 +1,47 @@ -SwitchbotDevice | node-switchbot

            Class SwitchbotDevice

            Represents a Switchbot Device.

            -

            Hierarchy (View Summary)

            Constructors

            Accessors

            • get onConnectHandler(): () => Promise<void>

              Returns () => Promise<void>

            • set onConnectHandler(func: () => Promise<void>): void

              Parameters

              • func: () => Promise<void>

              Returns void

            • get onDisconnectHandler(): () => Promise<void>

              Returns () => Promise<void>

            • set onDisconnectHandler(func: () => Promise<void>): void

              Parameters

              • func: () => Promise<void>

              Returns void

            Methods

            • Sends a command to the device and awaits a response.

              Parameters

              • reqBuf: Buffer

                The command buffer.

              Returns Promise<Buffer<ArrayBufferLike>>

              A Promise that resolves with the response buffer.

              -
            • Connects to the device.

              Returns Promise<void>

              A Promise that resolves when the connection is complete.

              -
            • Disconnects from the device.

              +
            • Disconnects from the device.

              Returns Promise<void>

              A Promise that resolves when the disconnection is complete.

              -
            • Discovers the device services.

              +
            • Discovers the device services.

              Returns Promise<Service[]>

              A Promise that resolves with the list of services.

              -
            • Retrieves the device characteristics.

              Returns Promise<Chars>

              A Promise that resolves with the device characteristics.

              -
            • Retrieves the device name.

              +
            • Retrieves the device name.

              Returns Promise<string>

              A Promise that resolves with the device name.

              -
            • Internal method to handle the connection process.

              +
            • Internal method to handle the connection process.

              Returns Promise<void>

              A Promise that resolves when the connection is complete.

              -
            • Logs a message with the specified log level.

              +
            • Logs a message with the specified log level.

              Parameters

              • level: string

                The severity level of the log (e.g., 'info', 'warn', 'error').

              • message: string

                The log message to be emitted.

                -

              Returns Promise<void>

            • Sets the device name.

              +

            Returns Promise<void>

            • Sets the device name.

              Parameters

              • name: string

                The new device name.

              Returns Promise<void>

              A Promise that resolves when the name is set.

              -
            • Unsubscribes from the notify characteristic.

              +
            • Unsubscribes from the notify characteristic.

              Returns Promise<void>

              A Promise that resolves when the unsubscription is complete.

              -
            +
            diff --git a/docs/classes/ValidationUtils.html b/docs/classes/ValidationUtils.html new file mode 100644 index 00000000..31c9dc32 --- /dev/null +++ b/docs/classes/ValidationUtils.html @@ -0,0 +1,51 @@ +ValidationUtils | node-switchbot
            node-switchbot
              Preparing search index...

              Class ValidationUtils

              Utility class for comprehensive input validation with improved error messages.

              +
              Index

              Constructors

              Methods

              • Validates buffer and throws descriptive error.

                +

                Parameters

                • buffer: any

                  The buffer to validate

                  +
                • OptionalexpectedLength: number

                  Optional expected length

                  +
                • paramName: string = 'buffer'

                  The parameter name for error reporting

                  +

                Returns asserts buffer is Buffer<ArrayBufferLike>

                When buffer is not a Buffer

                +

                When buffer length doesn't match expected

                +
              • Validates that a value is one of the allowed enum values.

                +

                Type Parameters

                • T

                Parameters

                • value: any

                  The value to validate

                  +
                • allowedValues: readonly T[]

                  Array of allowed values

                  +
                • paramName: string = 'value'

                  The parameter name for error reporting

                  +

                Returns asserts value is T

                When value is not in allowed values

                +
              • Validates MAC address format.

                +

                Parameters

                • address: any

                  The MAC address to validate

                  +
                • paramName: string = 'address'

                  The parameter name for error reporting

                  +

                Returns asserts address is string

                When address is not a string

                +

                When address format is invalid

                +
              • Validates percentage value (0-100).

                +

                Parameters

                • value: number

                  The value to validate

                  +
                • paramName: string = 'value'

                  The parameter name for error reporting

                  +

                Returns void

                When value is not within valid range

                +

                When value is not a number

                +
              • Validates numeric range with enhanced checks.

                +

                Parameters

                • value: number

                  The value to validate

                  +
                • min: number

                  Minimum allowed value

                  +
                • max: number

                  Maximum allowed value

                  +
                • paramName: string = 'value'

                  The parameter name for error reporting

                  +
                • mustBeInteger: boolean = false

                  Whether the value must be an integer

                  +

                Returns void

                When value is not a number

                +

                When value is outside valid range

                +
              • Validates RGB color value (0-255).

                +

                Parameters

                • value: number

                  The color value to validate

                  +
                • colorName: string = 'color'

                  The color name for error reporting

                  +

                Returns void

                When value is not within valid range

                +

                When value is not a number

                +
              • Validates string input with comprehensive checks.

                +

                Parameters

                • value: any

                  The value to validate

                  +
                • paramName: string = 'value'

                  The parameter name for error reporting

                  +
                • minLength: number = 1

                  Minimum required length

                  +
                • OptionalmaxLength: number

                  Optional maximum length

                  +

                Returns asserts value is string

                When value is not a string

                +

                When string length is invalid

                +
              diff --git a/docs/classes/WoAirPurifier.html b/docs/classes/WoAirPurifier.html new file mode 100644 index 00000000..8b296b0c --- /dev/null +++ b/docs/classes/WoAirPurifier.html @@ -0,0 +1,83 @@ +WoAirPurifier | node-switchbot
              node-switchbot
                Preparing search index...

                Class WoAirPurifier

                Class representing a SwitchBot Air Purifier device.

                +

                Hierarchy (View Summary)

                Index

                Constructors

                Accessors

                • get address(): string

                  Returns string

                • get connectionState(): string

                  Returns string

                • get id(): string

                  Returns string

                • get onConnectHandler(): () => Promise<void>

                  Returns () => Promise<void>

                • set onConnectHandler(func: () => Promise<void>): void

                  Parameters

                  • func: () => Promise<void>

                  Returns void

                • get onDisconnectHandler(): () => Promise<void>

                  Returns () => Promise<void>

                • set onDisconnectHandler(func: () => Promise<void>): void

                  Parameters

                  • func: () => Promise<void>

                  Returns void

                Methods

                • Sends a command to the device and awaits a response.

                  +

                  Parameters

                  • reqBuf: Buffer

                    The command buffer.

                    +

                  Returns Promise<Buffer<ArrayBufferLike>>

                  A Promise that resolves with the response buffer.

                  +
                • Internal method to handle the connection process.

                  +

                  Returns Promise<void>

                  A Promise that resolves when the connection is complete.

                  +
                • Logs a message with the specified log level.

                  +

                  Parameters

                  • level: string

                    The severity level of the log (e.g., 'info', 'warn', 'error').

                    +
                  • message: string

                    The log message to be emitted.

                    +

                  Returns Promise<void>

                • Operates the air purifier with the given byte array.

                  +

                  Parameters

                  • bytes: number[]

                    The byte array to send.

                    +

                  Returns Promise<boolean>

                    +
                  • Resolves with true if the operation was successful.
                  • +
                  +
                • Sets the device name.

                  +

                  Parameters

                  • name: string

                    The new device name.

                    +

                  Returns Promise<void>

                  A Promise that resolves when the name is set.

                  +
                • Sets the mode of the air purifier.

                  +

                  Parameters

                  • mode: number

                    The mode value (1-4).

                    +

                  Returns Promise<boolean>

                    +
                  • Resolves with true if the operation was successful.
                  • +
                  +
                • Sets the speed of the air purifier.

                  +

                  Parameters

                  • speed: number

                    The speed value (0-100).

                    +

                  Returns Promise<boolean>

                    +
                  • Resolves with true if the operation was successful.
                  • +
                  +
                • Turns the air purifier off.

                  +

                  Returns Promise<boolean>

                    +
                  • Resolves with true if the air purifier is turned off.
                  • +
                  +
                • Turns the air purifier on.

                  +

                  Returns Promise<boolean>

                    +
                  • Resolves with true if the air purifier is turned on.
                  • +
                  +
                • Parses service data for air purifier devices.

                  +

                  Parameters

                  • serviceData: null | Buffer<ArrayBufferLike>

                    The service data buffer.

                    +
                  • manufacturerData: null | Buffer<ArrayBufferLike>

                    The manufacturer data buffer.

                    +
                  • OptionalemitLog: (level: string, message: string) => void

                    The function to emit log messages.

                    +

                  Returns null | airPurifierServiceData

                    +
                  • The parsed service data or null.
                  • +
                  +
                diff --git a/docs/classes/WoAirPurifierTable.html b/docs/classes/WoAirPurifierTable.html new file mode 100644 index 00000000..3d1853a7 --- /dev/null +++ b/docs/classes/WoAirPurifierTable.html @@ -0,0 +1,83 @@ +WoAirPurifierTable | node-switchbot
                node-switchbot
                  Preparing search index...

                  Class WoAirPurifierTable

                  Class representing a SwitchBot Air Purifier Table device.

                  +

                  Hierarchy (View Summary)

                  Index

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Sends a command to the device and awaits a response.

                    +

                    Parameters

                    • reqBuf: Buffer

                      The command buffer.

                      +

                    Returns Promise<Buffer<ArrayBufferLike>>

                    A Promise that resolves with the response buffer.

                    +
                  • Internal method to handle the connection process.

                    +

                    Returns Promise<void>

                    A Promise that resolves when the connection is complete.

                    +
                  • Logs a message with the specified log level.

                    +

                    Parameters

                    • level: string

                      The severity level of the log (e.g., 'info', 'warn', 'error').

                      +
                    • message: string

                      The log message to be emitted.

                      +

                    Returns Promise<void>

                  • Operates the air purifier table with the given byte array.

                    +

                    Parameters

                    • bytes: number[]

                      The byte array to send.

                      +

                    Returns Promise<boolean>

                      +
                    • Resolves with true if the operation was successful.
                    • +
                    +
                  • Sets the device name.

                    +

                    Parameters

                    • name: string

                      The new device name.

                      +

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    +
                  • Sets the mode of the air purifier table.

                    +

                    Parameters

                    • mode: number

                      The mode value (1-4).

                      +

                    Returns Promise<boolean>

                      +
                    • Resolves with true if the operation was successful.
                    • +
                    +
                  • Sets the speed of the air purifier table.

                    +

                    Parameters

                    • speed: number

                      The speed value (0-100).

                      +

                    Returns Promise<boolean>

                      +
                    • Resolves with true if the operation was successful.
                    • +
                    +
                  • Turns the air purifier table off.

                    +

                    Returns Promise<boolean>

                      +
                    • Resolves with true if the air purifier table is turned off.
                    • +
                    +
                  • Turns the air purifier table on.

                    +

                    Returns Promise<boolean>

                      +
                    • Resolves with true if the air purifier table is turned on.
                    • +
                    +
                  • Parses service data for air purifier table devices.

                    +

                    Parameters

                    • serviceData: null | Buffer<ArrayBufferLike>

                      The service data buffer.

                      +
                    • manufacturerData: null | Buffer<ArrayBufferLike>

                      The manufacturer data buffer.

                      +
                    • OptionalemitLog: (level: string, message: string) => void

                      The function to emit log messages.

                      +

                    Returns null | airPurifierTableServiceData

                      +
                    • The parsed service data or null.
                    • +
                    +
                  diff --git a/docs/classes/WoBlindTilt.html b/docs/classes/WoBlindTilt.html index c78eb235..d9728635 100644 --- a/docs/classes/WoBlindTilt.html +++ b/docs/classes/WoBlindTilt.html @@ -1,73 +1,73 @@ -WoBlindTilt | node-switchbot

                  Class WoBlindTilt

                  Class representing a WoBlindTilt device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Closes the blind tilt to the nearest endpoint.

                    -

                    Returns Promise<void>

                  • Closes the blind tilt down to the nearest endpoint.

                    -

                    Returns Promise<void>

                  • Closes the blind tilt up to the nearest endpoint.

                    -

                    Returns Promise<void>

                  • Opens the blind tilt to the fully open position.

                    +

                    Returns Promise<void>

                  • Pauses the blind tilt operation.

                    +

                    Returns Promise<void>

                  • Runs the blind tilt to the specified position.

                    Parameters

                    • percent: number

                      The target position percentage (0-100).

                    • mode: number

                      The running mode (0 or 1).

                      -

                    Returns Promise<void>

                  • Sets the device name.

                    +

                  Returns Promise<void>

                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Parses the service data and manufacturer data for the WoBlindTilt device.

                    +
                  • Parses the service data and manufacturer data for the WoBlindTilt device.

                    Parameters

                    • serviceData: Buffer

                      The service data buffer.

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                      @@ -75,4 +75,4 @@

                    Returns Promise<null | blindTiltServiceData>

                    • The parsed data object or null if the data is invalid.
                    -
                  +
                  diff --git a/docs/classes/WoBulb.html b/docs/classes/WoBulb.html index 604a314f..0cd16659 100644 --- a/docs/classes/WoBulb.html +++ b/docs/classes/WoBulb.html @@ -1,67 +1,67 @@ -WoBulb | node-switchbot

                  Class representing a WoBulb device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Reads the state of the bulb.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the bulb is ON (true) or OFF (false).
                    -
                  • Sets the brightness of the bulb.

                    +
                  • Sets the brightness of the bulb.

                    Parameters

                    • brightness: number

                      The brightness percentage (0-100).

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Sets the color temperature of the bulb.

                    +
                  • Sets the color temperature of the bulb.

                    Parameters

                    • color_temperature: number

                      The color temperature percentage (0-100).

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Sets the device name.

                    +
                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Sets the RGB color of the bulb.

                    +
                  • Sets the RGB color of the bulb.

                    Parameters

                    • brightness: number

                      The brightness percentage (0-100).

                    • red: number

                      The red color value (0-255).

                    • green: number

                      The green color value (0-255).

                      @@ -69,21 +69,21 @@

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Turns off the bulb.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the bulb is OFF (false).
                    -
                  • Turns on the bulb.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the bulb is ON (true).
                    -
                  • Unsubscribes from the notify characteristic.

                    +
                  • Parses the service data for WoBulb.

                    Parameters

                    • serviceData: Buffer

                      The service data buffer.

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | colorBulbServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoCeilingLight.html b/docs/classes/WoCeilingLight.html index 8b28748b..85f3d2e5 100644 --- a/docs/classes/WoCeilingLight.html +++ b/docs/classes/WoCeilingLight.html @@ -1,75 +1,75 @@ -WoCeilingLight | node-switchbot

                  Class WoCeilingLight

                  Class representing a WoCeilingLight device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Sends a command to the ceiling light.

                    Parameters

                    • bytes: number[]

                      The command bytes.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Reads the state of the ceiling light.

                    +
                  • Reads the state of the ceiling light.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the light is ON (true) or OFF (false).
                    -
                  • Sets the brightness of the ceiling light.

                    +
                  • Sets the brightness of the ceiling light.

                    Parameters

                    • brightness: number

                      The brightness percentage (0-100).

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Sets the color temperature of the ceiling light.

                    +
                  • Sets the color temperature of the ceiling light.

                    Parameters

                    • color_temperature: number

                      The color temperature percentage (0-100).

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Sets the device name.

                    +
                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Sets the RGB color of the ceiling light.

                    +
                  • Sets the RGB color of the ceiling light.

                    Parameters

                    • brightness: number

                      The brightness percentage (0-100).

                    • red: number

                      The red color value (0-255).

                    • green: number

                      The green color value (0-255).

                      @@ -77,31 +77,31 @@

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Sets the state of the ceiling light.

                    +
                  • Sets the state of the ceiling light.

                    Parameters

                    • reqByteArray: number[]

                      The request byte array.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the operation was successful.
                    -
                  • Turns off the ceiling light.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the light is OFF (false).
                    -
                  • Turns on the ceiling light.

                    Returns Promise<boolean>

                    • Resolves with a boolean indicating whether the light is ON (true).
                    -
                  • Unsubscribes from the notify characteristic.

                    +
                  • Parses the service data for WoCeilingLight.

                    Parameters

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | ceilingLightServiceData>

                    • Parsed service data or null if invalid.
                    -
                  • Parses the service data for WoCeilingLight Pro.

                    +
                  • Parses the service data for WoCeilingLight Pro.

                    Parameters

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | ceilingLightProServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoContact.html b/docs/classes/WoContact.html index ac676b87..84fba6a3 100644 --- a/docs/classes/WoContact.html +++ b/docs/classes/WoContact.html @@ -1,52 +1,52 @@ -WoContact | node-switchbot

                  Class representing a WoContact device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Parses the service data for WoContact.

                    Parameters

                    • serviceData: Buffer

                      The service data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | contactSensorServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoCurtain.html b/docs/classes/WoCurtain.html index e51160bd..502eeb14 100644 --- a/docs/classes/WoCurtain.html +++ b/docs/classes/WoCurtain.html @@ -1,67 +1,67 @@ -WoCurtain | node-switchbot

                  Class representing a WoCurtain device.

                  -
                  • Sends a command to the device and awaits a response.

                    Parameters

                    • reqBuf: Buffer

                      The command buffer.

                    Returns Promise<Buffer<ArrayBufferLike>>

                    A Promise that resolves with the response buffer.

                    -
                  • Connects to the device.

                    Returns Promise<void>

                    A Promise that resolves when the connection is complete.

                    -
                  • Disconnects from the device.

                    Returns Promise<void>

                    A Promise that resolves when the disconnection is complete.

                    -
                  • Internal method to handle the connection process.

                    Returns Promise<void>

                    A Promise that resolves when the connection is complete.

                    -
                  • Logs a message with the specified log level.

                    Parameters

                    • level: string

                      The severity level of the log (e.g., 'info', 'warn', 'error').

                    • message: string

                      The log message to be emitted.

                      -

                    Returns Promise<void>

                  • Opens the curtain.

                    +

                  Returns Promise<void>

                  • Opens the curtain.

                    Parameters

                    • Optionalmode: number = 0xFF

                      Running mode (0x01 = QuietDrift, 0xFF = Default).

                      -

                    Returns Promise<void>

                  • Sends a command to the curtain.

                    +

                  Returns Promise<void>

                  • Sends a command to the curtain.

                    Parameters

                    • bytes: number[]

                      The command bytes.

                      -

                    Returns Promise<void>

                  • Pauses the curtain.

                    -

                    Returns Promise<void>

                  • Runs the curtain to the target position.

                    +

                  Returns Promise<void>

                  • Pauses the curtain.

                    +

                    Returns Promise<void>

                  • Runs the curtain to the target position.

                    Parameters

                    • percent: number

                      The percentage of the target position.

                    • Optionalmode: number = 0xFF

                      Running mode (0x01 = QuietDrift, 0xFF = Default).

                      -

                    Returns Promise<void>

                  • Sets the device name.

                    +

                  Returns Promise<void>

                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Parses the service data for WoCurtain.

                    Parameters

                    • serviceData: Buffer

                      The service data buffer.

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                      @@ -69,4 +69,4 @@

                    Returns Promise<null | curtainServiceData | curtain3ServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoHand.html b/docs/classes/WoHand.html index 45319242..c4937096 100644 --- a/docs/classes/WoHand.html +++ b/docs/classes/WoHand.html @@ -1,62 +1,62 @@ -WoHand | node-switchbot

                  Class representing a WoHand device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Presses the bot.

                    +

                    Returns Promise<void>

                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Turns off the bot.

                    -

                    Returns Promise<void>

                  • Turns on the bot.

                    -

                    Returns Promise<void>

                  • Turns off the bot.

                    +

                    Returns Promise<void>

                  • Turns on the bot.

                    +

                    Returns Promise<void>

                  • Moves the bot up.

                    -

                    Returns Promise<void>

                  • Parses the service data for WoHand.

                    Parameters

                    • serviceData: Buffer

                      The service data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | botServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoHub2.html b/docs/classes/WoHub2.html index b09245db..7b7f5f1d 100644 --- a/docs/classes/WoHub2.html +++ b/docs/classes/WoHub2.html @@ -1,52 +1,52 @@ -WoHub2 | node-switchbot

                  Class representing a WoHub2 device.

                  -

                  Hierarchy (View Summary)

                  Constructors

                  Accessors

                  • get address(): string

                    Returns string

                  • get connectionState(): string

                    Returns string

                  • get id(): string

                    Returns string

                  • get onConnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onConnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  • get onDisconnectHandler(): () => Promise<void>

                    Returns () => Promise<void>

                  • set onDisconnectHandler(func: () => Promise<void>): void

                    Parameters

                    • func: () => Promise<void>

                    Returns void

                  Methods

                  • Sets the device name.

                    Parameters

                    • name: string

                      The new device name.

                    Returns Promise<void>

                    A Promise that resolves when the name is set.

                    -
                  • Parses the service data for WoHub2.

                    Parameters

                    • manufacturerData: Buffer

                      The manufacturer data buffer.

                    • emitLog: (level: string, message: string) => void

                      The function to emit log messages.

                    Returns Promise<null | hub2ServiceData>

                    • Parsed service data or null if invalid.
                    -
                  +
                  diff --git a/docs/classes/WoHub3.html b/docs/classes/WoHub3.html new file mode 100644 index 00000000..ff82b313 --- /dev/null +++ b/docs/classes/WoHub3.html @@ -0,0 +1,52 @@ +WoHub3 | node-switchbot
                  node-switchbot
                    Preparing search index...

                    Class WoHub3

                    Class representing a WoHub3 device.

                    +

                    Hierarchy (View Summary)

                    Index

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sends a command to the device and awaits a response.

                      +

                      Parameters

                      • reqBuf: Buffer

                        The command buffer.

                        +

                      Returns Promise<Buffer<ArrayBufferLike>>

                      A Promise that resolves with the response buffer.

                      +
                    • Internal method to handle the connection process.

                      +

                      Returns Promise<void>

                      A Promise that resolves when the connection is complete.

                      +
                    • Logs a message with the specified log level.

                      +

                      Parameters

                      • level: string

                        The severity level of the log (e.g., 'info', 'warn', 'error').

                        +
                      • message: string

                        The log message to be emitted.

                        +

                      Returns Promise<void>

                    • Sets the device name.

                      +

                      Parameters

                      • name: string

                        The new device name.

                        +

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      +
                    • Parses the service data for WoHub3.

                      +

                      Parameters

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                        +
                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                        +

                      Returns Promise<null | hub3ServiceData>

                        +
                      • Parsed service data or null if invalid.
                      • +
                      +
                    diff --git a/docs/classes/WoHumi.html b/docs/classes/WoHumi.html index b094054a..a69dfe30 100644 --- a/docs/classes/WoHumi.html +++ b/docs/classes/WoHumi.html @@ -1,67 +1,67 @@ -WoHumi | node-switchbot

                    Class representing a WoHumi device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the humidifier level.

                      Parameters

                      • level: number

                        The level to set (0-100).

                        -

                      Returns Promise<void>

                    • Sets the humidifier to auto mode.

                      -

                      Returns Promise<void>

                    • Sets the device name.

                      +

                    Returns Promise<void>

                    • Sets the humidifier to auto mode.

                      +

                      Returns Promise<void>

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Sets the humidifier to manual mode.

                      -

                      Returns Promise<void>

                    • Turns off the humidifier.

                      -

                      Returns Promise<void>

                    • Turns on the humidifier.

                      -

                      Returns Promise<void>

                    • Sets the humidifier to manual mode.

                      +

                      Returns Promise<void>

                    • Turns off the humidifier.

                      +

                      Returns Promise<void>

                    • Turns on the humidifier.

                      +

                      Returns Promise<void>

                    • Parses the service data for WoHumi.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | humidifierServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoHumi2.html b/docs/classes/WoHumi2.html index cc8baa87..87fcf257 100644 --- a/docs/classes/WoHumi2.html +++ b/docs/classes/WoHumi2.html @@ -1,67 +1,67 @@ -WoHumi2 | node-switchbot

                    Class representing a WoHumi device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the humidifier level.

                      Parameters

                      • level: number

                        The level to set (0-100).

                        -

                      Returns Promise<void>

                    • Sets the humidifier to auto mode.

                      -

                      Returns Promise<void>

                    • Sets the device name.

                      +

                    Returns Promise<void>

                    • Sets the humidifier to auto mode.

                      +

                      Returns Promise<void>

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Sets the humidifier to manual mode.

                      -

                      Returns Promise<void>

                    • Turns off the humidifier.

                      -

                      Returns Promise<void>

                    • Turns on the humidifier.

                      -

                      Returns Promise<void>

                    • Sets the humidifier to manual mode.

                      +

                      Returns Promise<void>

                    • Turns off the humidifier.

                      +

                      Returns Promise<void>

                    • Turns on the humidifier.

                      +

                      Returns Promise<void>

                    • Parses the service data for WoHumi.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | humidifier2ServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoIOSensorTH.html b/docs/classes/WoIOSensorTH.html index 9d5f3109..21958bca 100644 --- a/docs/classes/WoIOSensorTH.html +++ b/docs/classes/WoIOSensorTH.html @@ -1,53 +1,53 @@ -WoIOSensorTH | node-switchbot

                    Class WoIOSensorTH

                    Class representing a WoIOSensorTH device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parses the service data for WoIOSensorTH.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | outdoorMeterServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoKeypad.html b/docs/classes/WoKeypad.html index f515e677..dfd9fdd1 100644 --- a/docs/classes/WoKeypad.html +++ b/docs/classes/WoKeypad.html @@ -1,52 +1,52 @@ -WoKeypad | node-switchbot

                    Class representing a WoKeypad device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parses the service data for WoKeypad.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | keypadDetectorServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoLeak.html b/docs/classes/WoLeak.html index 6f56a61d..5e59b0e9 100644 --- a/docs/classes/WoLeak.html +++ b/docs/classes/WoLeak.html @@ -1,53 +1,53 @@ -WoLeak | node-switchbot

                    Class representing a WoLeak device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parses the service data for WoLeak.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | waterLeakDetectorServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoPlugMiniJP.html b/docs/classes/WoPlugMiniJP.html index e4dad5c4..4f4f7e28 100644 --- a/docs/classes/WoPlugMiniJP.html +++ b/docs/classes/WoPlugMiniJP.html @@ -1,78 +1,78 @@ -WoPlugMiniJP | node-switchbot

                    Class WoPlugMiniJP

                    Class representing a WoPlugMini device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Operates the plug with the given bytes.

                      Parameters

                      • bytes: number[]

                        The byte array to send to the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Reads the state of the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Sets the device name.

                      +
                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Toggles the state of the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Turns off the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Turns on the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Unsubscribes from the notify characteristic.

                      +
                    • Parses the service data for WoPlugMini JP.

                      Parameters

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | plugMiniJPServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoPlugMiniUS.html b/docs/classes/WoPlugMiniUS.html index 299e0d74..6a5e1508 100644 --- a/docs/classes/WoPlugMiniUS.html +++ b/docs/classes/WoPlugMiniUS.html @@ -1,78 +1,78 @@ -WoPlugMiniUS | node-switchbot

                    Class WoPlugMiniUS

                    Class representing a WoPlugMini device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Operates the plug with the given bytes.

                      Parameters

                      • bytes: number[]

                        The byte array to send to the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Reads the state of the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Sets the device name.

                      +
                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Toggles the state of the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Turns off the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Turns on the plug.

                      Returns Promise<boolean>

                      • Resolves with a boolean that tells whether the plug is ON (true) or OFF (false).
                      -
                    • Unsubscribes from the notify characteristic.

                      +
                    • Parses the service data for WoPlugMini US.

                      Parameters

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | plugMiniUSServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoPresence.html b/docs/classes/WoPresence.html index 34cdcfa3..79795424 100644 --- a/docs/classes/WoPresence.html +++ b/docs/classes/WoPresence.html @@ -1,52 +1,52 @@ -WoPresence | node-switchbot

                    Class WoPresence

                    Class representing a WoPresence device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parses the service data for WoPresence.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | motionSensorServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoRelaySwitch1.html b/docs/classes/WoRelaySwitch1.html index c893db2c..ac44a2ed 100644 --- a/docs/classes/WoRelaySwitch1.html +++ b/docs/classes/WoRelaySwitch1.html @@ -1,57 +1,57 @@ -WoRelaySwitch1 | node-switchbot

                    Class WoRelaySwitch1

                    Class representing a WoRelaySwitch1 device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Turns off the bot.

                      -

                      Returns Promise<void>

                    • Turns on the bot.

                      -

                      Returns Promise<void>

                    • Turns off the bot.

                      +

                      Returns Promise<void>

                    • Turns on the bot.

                      +

                      Returns Promise<void>

                    • Parses the service data for WoRelaySwitch1.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | relaySwitch1ServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoRelaySwitch1PM.html b/docs/classes/WoRelaySwitch1PM.html index 50b5585c..1afc16a4 100644 --- a/docs/classes/WoRelaySwitch1PM.html +++ b/docs/classes/WoRelaySwitch1PM.html @@ -1,57 +1,57 @@ -WoRelaySwitch1PM | node-switchbot

                    Class WoRelaySwitch1PM

                    Class representing a WoRelaySwitch1PM device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Turns off the bot.

                      -

                      Returns Promise<void>

                    • Turns on the bot.

                      -

                      Returns Promise<void>

                    • Turns off the bot.

                      +

                      Returns Promise<void>

                    • Turns on the bot.

                      +

                      Returns Promise<void>

                    • Parses the service data for WoRelaySwitch1PM.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | relaySwitch1PMServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoRemote.html b/docs/classes/WoRemote.html index f506924e..93d6df83 100644 --- a/docs/classes/WoRemote.html +++ b/docs/classes/WoRemote.html @@ -1,52 +1,52 @@ -WoRemote | node-switchbot

                    Class representing a WoRemote device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parses the service data for WoRemote.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | remoteServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/classes/WoSensorTH.html b/docs/classes/WoSensorTH.html index ffa9a4c2..d3c446d7 100644 --- a/docs/classes/WoSensorTH.html +++ b/docs/classes/WoSensorTH.html @@ -1,46 +1,46 @@ -WoSensorTH | node-switchbot

                    Class WoSensorTH

                    Class representing a WoSensorTH device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterServiceData>

                    +
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterServiceData>

                    diff --git a/docs/classes/WoSensorTHPlus.html b/docs/classes/WoSensorTHPlus.html index eac3ec60..6c5d5136 100644 --- a/docs/classes/WoSensorTHPlus.html +++ b/docs/classes/WoSensorTHPlus.html @@ -1,46 +1,46 @@ -WoSensorTHPlus | node-switchbot

                    Class WoSensorTHPlus

                    Class representing a WoSensorTH device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterPlusServiceData>

                    +
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterPlusServiceData>

                    diff --git a/docs/classes/WoSensorTHPro.html b/docs/classes/WoSensorTHPro.html index caa06dd6..0bbb076f 100644 --- a/docs/classes/WoSensorTHPro.html +++ b/docs/classes/WoSensorTHPro.html @@ -1,46 +1,46 @@ -WoSensorTHPro | node-switchbot

                    Class WoSensorTHPro

                    Class representing a WoSensorTH device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterProServiceData>

                    +
                    • Parameters

                      • serviceData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterProServiceData>

                    diff --git a/docs/classes/WoSensorTHProCO2.html b/docs/classes/WoSensorTHProCO2.html index 9534d65b..4b5c2b09 100644 --- a/docs/classes/WoSensorTHProCO2.html +++ b/docs/classes/WoSensorTHProCO2.html @@ -1,46 +1,46 @@ -WoSensorTHProCO2 | node-switchbot

                    Class WoSensorTHProCO2

                    Class representing a WoSensorTH device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Parameters

                      • serviceData: Buffer
                      • manufacturerData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterProCO2ServiceData>

                    +
                    • Parameters

                      • serviceData: Buffer
                      • manufacturerData: Buffer
                      • emitLog: (level: string, message: string) => void

                      Returns Promise<null | meterProCO2ServiceData>

                    diff --git a/docs/classes/WoSmartLock.html b/docs/classes/WoSmartLock.html index 92f0d210..2cbc8bd7 100644 --- a/docs/classes/WoSmartLock.html +++ b/docs/classes/WoSmartLock.html @@ -1,113 +1,113 @@ -WoSmartLock | node-switchbot

                    Class WoSmartLock

                    Class representing a WoSmartLock device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Properties

                    encryption_key: null | Buffer<ArrayBufferLike> = null
                    iv: null | Buffer<ArrayBufferLike> = null
                    key_id: string = ''
                    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Operates the lock with the given command.

                      Parameters

                      • key: string

                        The command key.

                      • Optionalencrypt: boolean = true

                        Whether to encrypt the command.

                      Returns Promise<Buffer<ArrayBufferLike>>

                      • The response buffer.
                      -
                    • Sets the device name.

                      +
                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Initializes the encryption key info for valid lock communication.

                      Parameters

                      • keyId: string

                        The key ID.

                      • encryptionKey: string

                        The encryption key.

                        -

                      Returns Promise<void>

                    • Unlocks the Smart Lock.

                      +

                    Returns Promise<void>

                    • Unlocks the Smart Lock.

                      Returns Promise<number>

                      • The result of the unlock operation.
                      -
                    • Unlocks the Smart Lock without unlatching the door.

                      +
                    • Unlocks the Smart Lock without unlatching the door.

                      Returns Promise<number>

                      • The result of the unlock operation.
                      -
                    • Unsubscribes from the notify characteristic.

                      +
                    • Parameters

                      • code: number

                      Returns string

                    • Parameters

                      • code: number

                      Returns string

                    • Parses the service data from the SwitchBot Strip Light.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | lockServiceData>

                      • Parsed service data or null if invalid.
                      -
                    • Parameters

                      • res: Buffer

                      Returns Promise<number>

                    +
                    • Parameters

                      • res: Buffer

                      Returns Promise<number>

                    diff --git a/docs/classes/WoSmartLockPro.html b/docs/classes/WoSmartLockPro.html index 7f9c9782..bb59edfc 100644 --- a/docs/classes/WoSmartLockPro.html +++ b/docs/classes/WoSmartLockPro.html @@ -1,113 +1,113 @@ -WoSmartLockPro | node-switchbot

                    Class WoSmartLockPro

                    Class representing a WoSmartLockPro device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Properties

                    encryption_key: null | Buffer<ArrayBufferLike> = null
                    iv: null | Buffer<ArrayBufferLike> = null
                    key_id: string = ''
                    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Operates the lock with the given command.

                      Parameters

                      • key: string

                        The command key.

                      • Optionalencrypt: boolean = true

                        Whether to encrypt the command.

                      Returns Promise<Buffer<ArrayBufferLike>>

                      • The response buffer.
                      -
                    • Sets the device name.

                      +
                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Initializes the encryption key info for valid lock communication.

                      Parameters

                      • keyId: string

                        The key ID.

                      • encryptionKey: string

                        The encryption key.

                        -

                      Returns Promise<void>

                    • Unlocks the Smart Lock.

                      +

                    Returns Promise<void>

                    • Unlocks the Smart Lock.

                      Returns Promise<number>

                      • The result of the unlock operation.
                      -
                    • Unlocks the Smart Lock without unlatching the door.

                      +
                    • Unlocks the Smart Lock without unlatching the door.

                      Returns Promise<number>

                      • The result of the unlock operation.
                      -
                    • Unsubscribes from the notify characteristic.

                      +
                    • Parameters

                      • code: number

                      Returns string

                    • Parameters

                      • code: number

                      Returns string

                    • Parses the service data from the SwitchBot Strip Light.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • manufacturerData: Buffer

                        The manufacturer data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | lockProServiceData>

                      • Parsed service data or null if invalid.
                      -
                    • Parameters

                      • res: Buffer

                      Returns Promise<number>

                    +
                    • Parameters

                      • res: Buffer

                      Returns Promise<number>

                    diff --git a/docs/classes/WoStrip.html b/docs/classes/WoStrip.html index 0ca70a05..6a08f26a 100644 --- a/docs/classes/WoStrip.html +++ b/docs/classes/WoStrip.html @@ -1,68 +1,68 @@ -WoStrip | node-switchbot

                    Class representing a WoStrip device.

                    -

                    Hierarchy (View Summary)

                    Constructors

                    Accessors

                    • get address(): string

                      Returns string

                    • get connectionState(): string

                      Returns string

                    • get id(): string

                      Returns string

                    • get onConnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onConnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    • get onDisconnectHandler(): () => Promise<void>

                      Returns () => Promise<void>

                    • set onDisconnectHandler(func: () => Promise<void>): void

                      Parameters

                      • func: () => Promise<void>

                      Returns void

                    Methods

                    • Operates the strip light with the given byte array.

                      Parameters

                      • bytes: number[]

                        The byte array to send.

                      Returns Promise<boolean>

                      • Resolves with true if the operation was successful.
                      -
                    • Reads the state of the strip light.

                      +
                    • Reads the state of the strip light.

                      Returns Promise<boolean>

                      • Resolves with true if the strip light is ON, false otherwise.
                      -
                    • Sets the brightness of the strip light.

                      +
                    • Sets the brightness of the strip light.

                      Parameters

                      • brightness: number

                        The brightness percentage (0-100).

                      Returns Promise<boolean>

                      • Resolves with true if the operation was successful.
                      -
                    • Sets the device name.

                      +
                    • Sets the device name.

                      Parameters

                      • name: string

                        The new device name.

                      Returns Promise<void>

                      A Promise that resolves when the name is set.

                      -
                    • Sets the RGB values of the strip light.

                      +
                    • Sets the RGB values of the strip light.

                      Parameters

                      • brightness: number

                        The brightness percentage (0-100).

                      • red: number

                        The red value (0-255).

                      • green: number

                        The green value (0-255).

                        @@ -70,25 +70,25 @@

                      Returns Promise<boolean>

                      • Resolves with true if the operation was successful.
                      -
                    • Sets the state of the strip light.

                      +
                    • Sets the state of the strip light.

                      Parameters

                      • reqByteArray: number[]

                        The request byte array.

                      Returns Promise<boolean>

                      • Resolves with true if the operation was successful.
                      -
                    • Turns the strip light off.

                      Returns Promise<boolean>

                      • Resolves with true if the strip light is OFF.
                      -
                    • Turns the strip light on.

                      Returns Promise<boolean>

                      • Resolves with true if the strip light is ON.
                      -
                    • Unsubscribes from the notify characteristic.

                      +
                    • Parses the service data from the SwitchBot Strip Light.

                      Parameters

                      • serviceData: Buffer

                        The service data buffer.

                      • emitLog: (level: string, message: string) => void

                        The function to emit log messages.

                      Returns Promise<null | stripLightServiceData>

                      • Parsed service data or null if invalid.
                      -
                    +
                    diff --git a/docs/enums/LogLevel.html b/docs/enums/LogLevel.html index df8df730..09e1b6c3 100644 --- a/docs/enums/LogLevel.html +++ b/docs/enums/LogLevel.html @@ -1,10 +1,10 @@ -LogLevel | node-switchbot

                    Enumeration LogLevel

                    Enum for log levels.

                    -

                    Enumeration Members

                    DEBUG: "debug"
                    DEBUGERROR: "debugerror"
                    DEBUGSUCCESS: "debugsuccess"
                    DEBUGWARN: "debugwarn"
                    ERROR: "error"
                    INFO: "info"
                    SUCCESS: "success"
                    WARN: "warn"
                    +LogLevel | node-switchbot
                    node-switchbot
                      Preparing search index...

                      Enumeration LogLevel

                      Enum for log levels.

                      +
                      Index

                      Enumeration Members

                      DEBUG: "debug"
                      DEBUGERROR: "debugerror"
                      DEBUGSUCCESS: "debugsuccess"
                      DEBUGWARN: "debugwarn"
                      ERROR: "error"
                      INFO: "info"
                      SUCCESS: "success"
                      WARN: "warn"
                      diff --git a/docs/enums/SwitchBotBLEModel.html b/docs/enums/SwitchBotBLEModel.html index 4a108bb4..39969a6a 100644 --- a/docs/enums/SwitchBotBLEModel.html +++ b/docs/enums/SwitchBotBLEModel.html @@ -1,29 +1,32 @@ -SwitchBotBLEModel | node-switchbot

                      Enumeration SwitchBotBLEModel

                      Enumeration Members

                      BlindTilt: "x"
                      Bot: "H"
                      CeilingLight: "q"
                      CeilingLightPro: "n"
                      ColorBulb: "u"
                      ContactSensor: "d"
                      Curtain: "c"
                      Curtain3: "{"
                      Hub2: "v"
                      Humidifier: "e"
                      Humidifier2: "#"
                      Keypad: "y"
                      Leak: "&"
                      Lock: "o"
                      LockPro: "$"
                      Meter: "T"
                      MeterPlus: "i"
                      MeterPro: "4"
                      MeterProCO2: "5"
                      MotionSensor: "s"
                      OutdoorMeter: "w"
                      PlugMiniJP: "j"
                      PlugMiniUS: "g"
                      RelaySwitch1: ";"
                      RelaySwitch1PM: "<"
                      Remote: "b"
                      StripLight: "r"
                      Unknown: "Unknown"
                      +SwitchBotBLEModel | node-switchbot
                      node-switchbot
                        Preparing search index...

                        Enumeration SwitchBotBLEModel

                        Index

                        Enumeration Members

                        AirPurifier: "+"
                        AirPurifierTable: "7"
                        BlindTilt: "x"
                        Bot: "H"
                        CeilingLight: "q"
                        CeilingLightPro: "n"
                        ColorBulb: "u"
                        ContactSensor: "d"
                        Curtain: "c"
                        Curtain3: "{"
                        Hub2: "v"
                        Hub3: "V"
                        Humidifier: "e"
                        Humidifier2: "#"
                        Keypad: "y"
                        Leak: "&"
                        Lock: "o"
                        LockPro: "$"
                        Meter: "T"
                        MeterPlus: "i"
                        MeterPro: "4"
                        MeterProCO2: "5"
                        MotionSensor: "s"
                        OutdoorMeter: "w"
                        PlugMiniJP: "j"
                        PlugMiniUS: "g"
                        RelaySwitch1: ";"
                        RelaySwitch1PM: "<"
                        Remote: "b"
                        StripLight: "r"
                        Unknown: "Unknown"
                        diff --git a/docs/enums/SwitchBotBLEModelFriendlyName.html b/docs/enums/SwitchBotBLEModelFriendlyName.html index 9e805c40..a2f79be2 100644 --- a/docs/enums/SwitchBotBLEModelFriendlyName.html +++ b/docs/enums/SwitchBotBLEModelFriendlyName.html @@ -1,30 +1,37 @@ -SwitchBotBLEModelFriendlyName | node-switchbot

                        Enumeration SwitchBotBLEModelFriendlyName

                        Enumeration Members

                        BatteryCirculatorFan: "Battery Circulator Fan"
                        BlindTilt: "Blind Tilt"
                        Bot: "Bot"
                        CeilingLight: "Ceiling Light"
                        CeilingLightPro: "Ceiling Light Pro"
                        CirculatorFan: "Circulator Fan"
                        ColorBulb: "Color Bulb"
                        ContactSensor: "Contact Sensor"
                        Curtain: "Curtain"
                        Curtain3: "Curtain 3"
                        Hub2: "Hub 2"
                        Humidifier: "Humidifier"
                        Humidifier2: "Humidifier2"
                        Keypad: "Keypad"
                        Leak: "Water Detector"
                        Lock: "Lock"
                        LockPro: "Lock Pro"
                        Meter: "Meter"
                        MeterPlus: "Meter Plus"
                        MeterPro: "Meter Pro"
                        MeterProCO2: "Meter Pro CO2"
                        MotionSensor: "Motion Sensor"
                        OutdoorMeter: "Outdoor Meter"
                        PlugMini: "Plug Mini"
                        RelaySwitch1: "Relay Switch 1"
                        RelaySwitch1PM: "Relay Switch 1PM"
                        Remote: "Remote"
                        StripLight: "Strip Light"
                        Unknown: "Unknown"
                        +SwitchBotBLEModelFriendlyName | node-switchbot
                        node-switchbot
                          Preparing search index...

                          Enumeration SwitchBotBLEModelFriendlyName

                          Index

                          Enumeration Members

                          AirPurifier: "Air Purifier"
                          AirPurifierPM2_5: "Air Purifier PM2.5"
                          AirPurifierTable: "Air Purifier Table"
                          AirPurifierTablePM2_5: "Air Purifier Table PM2.5"
                          AirPurifierTableVOC: "Air Purifier Table VOC"
                          AirPurifierVOC: "Air Purifier VOC"
                          BatteryCirculatorFan: "Battery Circulator Fan"
                          BlindTilt: "Blind Tilt"
                          Bot: "Bot"
                          CeilingLight: "Ceiling Light"
                          CeilingLightPro: "Ceiling Light Pro"
                          CirculatorFan: "Circulator Fan"
                          ColorBulb: "Color Bulb"
                          ContactSensor: "Contact Sensor"
                          Curtain: "Curtain"
                          Curtain3: "Curtain 3"
                          Hub2: "Hub 2"
                          Hub3: "Hub 3"
                          Humidifier: "Humidifier"
                          Humidifier2: "Humidifier2"
                          Keypad: "Keypad"
                          Leak: "Water Detector"
                          Lock: "Lock"
                          LockPro: "Lock Pro"
                          Meter: "Meter"
                          MeterPlus: "Meter Plus"
                          MeterPro: "Meter Pro"
                          MeterProCO2: "Meter Pro CO2"
                          MotionSensor: "Motion Sensor"
                          OutdoorMeter: "Outdoor Meter"
                          PlugMini: "Plug Mini"
                          RelaySwitch1: "Relay Switch 1"
                          RelaySwitch1PM: "Relay Switch 1PM"
                          Remote: "Remote"
                          StripLight: "Strip Light"
                          Unknown: "Unknown"
                          diff --git a/docs/enums/SwitchBotBLEModelName.html b/docs/enums/SwitchBotBLEModelName.html index fef7ed11..eccc3c4c 100644 --- a/docs/enums/SwitchBotBLEModelName.html +++ b/docs/enums/SwitchBotBLEModelName.html @@ -1,28 +1,31 @@ -SwitchBotBLEModelName | node-switchbot

                          Enumeration SwitchBotBLEModelName

                          Enumeration Members

                          BlindTilt: "WoBlindTilt"
                          Bot: "WoHand"
                          CeilingLight: "WoCeilingLight"
                          CeilingLightPro: "WoCeilingLightPro"
                          ColorBulb: "WoBulb"
                          ContactSensor: "WoContact"
                          Curtain: "WoCurtain"
                          Curtain3: "WoCurtain3"
                          Hub2: "WoHub2"
                          Humidifier: "WoHumi"
                          Humidifier2: "WoHumi2"
                          Keypad: "WoKeypad"
                          Leak: "WoLeakDetector"
                          Lock: "WoSmartLock"
                          LockPro: "WoSmartLockPro"
                          Meter: "WoSensorTH"
                          MeterPlus: "WoSensorTHPlus"
                          MeterPro: "WoSensorTHP"
                          MeterProCO2: "WoSensorTHPc"
                          MotionSensor: "WoMotion"
                          OutdoorMeter: "WoIOSensorTH"
                          PlugMini: "WoPlugMini"
                          RelaySwitch1: "WoRelaySwitch1Plus"
                          RelaySwitch1PM: "WoRelaySwitch1PM"
                          Remote: "WoRemote"
                          StripLight: "WoStrip"
                          Unknown: "Unknown"
                          +SwitchBotBLEModelName | node-switchbot
                          node-switchbot
                            Preparing search index...

                            Enumeration SwitchBotBLEModelName

                            Index

                            Enumeration Members

                            AirPurifier: "WoAirPurifier"
                            AirPurifierTable: "WoAirPurifierTable"
                            BlindTilt: "WoBlindTilt"
                            Bot: "WoHand"
                            CeilingLight: "WoCeilingLight"
                            CeilingLightPro: "WoCeilingLightPro"
                            ColorBulb: "WoBulb"
                            ContactSensor: "WoContact"
                            Curtain: "WoCurtain"
                            Curtain3: "WoCurtain3"
                            Hub2: "WoHub2"
                            Hub3: "WoHub3"
                            Humidifier: "WoHumi"
                            Humidifier2: "WoHumi2"
                            Keypad: "WoKeypad"
                            Leak: "WoLeakDetector"
                            Lock: "WoSmartLock"
                            LockPro: "WoSmartLockPro"
                            Meter: "WoSensorTH"
                            MeterPlus: "WoSensorTHPlus"
                            MeterPro: "WoSensorTHP"
                            MeterProCO2: "WoSensorTHPc"
                            MotionSensor: "WoMotion"
                            OutdoorMeter: "WoIOSensorTH"
                            PlugMini: "WoPlugMini"
                            RelaySwitch1: "WoRelaySwitch1Plus"
                            RelaySwitch1PM: "WoRelaySwitch1PM"
                            Remote: "WoRemote"
                            StripLight: "WoStrip"
                            Unknown: "Unknown"
                            diff --git a/docs/enums/SwitchBotModel.html b/docs/enums/SwitchBotModel.html index 07f3c0b8..b69fd5fc 100644 --- a/docs/enums/SwitchBotModel.html +++ b/docs/enums/SwitchBotModel.html @@ -1,47 +1,50 @@ -SwitchBotModel | node-switchbot

                            Enumeration SwitchBotModel

                            Enumeration Members

                            BatteryCirculatorFan: "W3800510"
                            BlindTilt: "W2701600"
                            Bot: "SwitchBot S1"
                            CeilingLight: "W2612230/W2612240"
                            CeilingLightPro: "W2612210/W2612220"
                            CirculatorFan: "W3800511"
                            ColorBulb: "W1401400"
                            ContactSensor: "W1201500"
                            Curtain: "W0701600"
                            Curtain3: "W2400000"
                            Hub2: "W3202100"
                            HubMini: "W0202200"
                            HubPlus: "SwitchBot Hub S1"
                            Humidifier: "W0801800"
                            Humidifier2: "WXXXXXXX"
                            IndoorCam: "W1301200"
                            K10: "K10+"
                            K10Pro: "K10+ Pro"
                            Keypad: "W2500010"
                            KeypadTouch: "W2500020"
                            Lock: "W1601700"
                            LockPro: "W3500000"
                            Meter: "SwitchBot MeterTH S1"
                            MeterPlusJP: "W2201500"
                            MeterPlusUS: "W2301500"
                            MeterPro: "W4900000"
                            MeterProCO2: "W4900010"
                            MotionSensor: "W1101500"
                            OutdoorMeter: "W3400010"
                            PanTiltCam: "W1801200"
                            PanTiltCam2K: "W3101100"
                            Plug: "SP11"
                            PlugMiniJP: "W2001400/W2001401"
                            PlugMiniUS: "W1901400/W1901401"
                            RelaySwitch1: "W5502300"
                            RelaySwitch1PM: "W5502310"
                            Remote: "Remote"
                            RobotVacuumCleanerS1: "W3011000"
                            RobotVacuumCleanerS10: "W3211800"
                            RobotVacuumCleanerS1Plus: "W3011010"
                            StripLight: "W1701100"
                            UniversalRemote: "UniversalRemote"
                            Unknown: "Unknown"
                            WaterDetector: "W4402000"
                            WoSweeper: "WoSweeper"
                            WoSweeperMini: "WoSweeperMini"
                            +SwitchBotModel | node-switchbot
                            node-switchbot
                              Preparing search index...

                              Enumeration SwitchBotModel

                              Index

                              Enumeration Members

                              AirPurifier: "W5302300"
                              AirPurifierTable: "W5302310"
                              BatteryCirculatorFan: "W3800510"
                              BlindTilt: "W2701600"
                              Bot: "SwitchBot S1"
                              CeilingLight: "W2612230/W2612240"
                              CeilingLightPro: "W2612210/W2612220"
                              CirculatorFan: "W3800511"
                              ColorBulb: "W1401400"
                              ContactSensor: "W1201500"
                              Curtain: "W0701600"
                              Curtain3: "W2400000"
                              Hub2: "W3202100"
                              Hub3: "W3302100"
                              HubMini: "W0202200"
                              HubPlus: "SwitchBot Hub S1"
                              Humidifier: "W0801800"
                              Humidifier2: "WXXXXXXX"
                              IndoorCam: "W1301200"
                              K10: "K10+"
                              K10Pro: "K10+ Pro"
                              Keypad: "W2500010"
                              KeypadTouch: "W2500020"
                              Lock: "W1601700"
                              LockPro: "W3500000"
                              Meter: "SwitchBot MeterTH S1"
                              MeterPlusJP: "W2201500"
                              MeterPlusUS: "W2301500"
                              MeterPro: "W4900000"
                              MeterProCO2: "W4900010"
                              MotionSensor: "W1101500"
                              OutdoorMeter: "W3400010"
                              PanTiltCam: "W1801200"
                              PanTiltCam2K: "W3101100"
                              Plug: "SP11"
                              PlugMiniJP: "W2001400/W2001401"
                              PlugMiniUS: "W1901400/W1901401"
                              RelaySwitch1: "W5502300"
                              RelaySwitch1PM: "W5502310"
                              Remote: "Remote"
                              RobotVacuumCleanerS1: "W3011000"
                              RobotVacuumCleanerS10: "W3211800"
                              RobotVacuumCleanerS1Plus: "W3011010"
                              StripLight: "W1701100"
                              UniversalRemote: "UniversalRemote"
                              Unknown: "Unknown"
                              WaterDetector: "W4402000"
                              WoSweeper: "WoSweeper"
                              WoSweeperMini: "WoSweeperMini"
                              diff --git a/docs/functions/updateBaseURL.html b/docs/functions/updateBaseURL.html new file mode 100644 index 00000000..620baa0c --- /dev/null +++ b/docs/functions/updateBaseURL.html @@ -0,0 +1,3 @@ +updateBaseURL | node-switchbot
                              node-switchbot
                                Preparing search index...

                                Function updateBaseURL

                                • Updates the base URL for the SwitchBot API endpoints.

                                  +

                                  Parameters

                                  • newBaseURL: string

                                    The new base URL to use.

                                    +

                                  Returns void

                                diff --git a/docs/hierarchy.html b/docs/hierarchy.html index a9243d0a..d0bfb664 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -node-switchbot
                                +node-switchbot
                                node-switchbot
                                  Preparing search index...
                                  diff --git a/docs/index.html b/docs/index.html index ac7c2f89..5969ec3d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,21 +1,21 @@ -node-switchbot

                                  node-switchbot

                                  +node-switchbot
                                  node-switchbot
                                    Preparing search index...

                                    node-switchbot

                                    node-switchbot

                                    -

                                    Node-SwitchBot

                                    npm version +

                                    Node-SwitchBot

                                    npm version npm downloads

                                    The node-switchbot is a Node.js module that allows you to interact with various SwitchBot devices. You can control your SwitchBot (Bot)'s arm, operate your SwitchBot Curtain, and manage your SwitchBot Lock. Additionally, you can monitor temperature and humidity using the SwitchBot Thermometer & Hygrometer (Meter), and check the status of the SwitchBot Motion Sensor and SwitchBot Contact Sensor.

                                    This module now supports both Bluetooth Low Energy (BLE) and the SwitchBot OpenAPI, providing more flexibility and options for interacting with your devices.

                                    Please note that most of this module was developed by referencing the official BLE API and OpenAPI documentation. However, some functionalities were developed through trial and error, so there might be inaccuracies in the information obtained from this module.


                                    -

                                    To install the node-switchbot module within your project, use the following command:

                                    +

                                    To install the node-switchbot module within your project, use the following command:

                                    $ npm install --save node-switchbot
                                     
                                    -

                                    To see a breakdown of how to use the BLE functionality of this project, visit the BLE (Bluetooth Low Energy) documentation.

                                    -

                                    To see a breakdown of how to use the OpenAPI functionality of this project, visit the OpenAPI documentation.

                                    -
                                    +
                                    diff --git a/docs/interfaces/AdvertisementData.html b/docs/interfaces/AdvertisementData.html index 691a9949..94716f40 100644 --- a/docs/interfaces/AdvertisementData.html +++ b/docs/interfaces/AdvertisementData.html @@ -1,3 +1,3 @@ -AdvertisementData | node-switchbot

                                    Interface AdvertisementData

                                    interface AdvertisementData {
                                        manufacturerData: null | Buffer<ArrayBufferLike>;
                                        serviceData: null | Buffer<ArrayBufferLike>;
                                    }

                                    Properties

                                    manufacturerData: null | Buffer<ArrayBufferLike>
                                    serviceData: null | Buffer<ArrayBufferLike>
                                    +AdvertisementData | node-switchbot
                                    node-switchbot
                                      Preparing search index...

                                      Interface AdvertisementData

                                      interface AdvertisementData {
                                          manufacturerData: null | Buffer<ArrayBufferLike>;
                                          serviceData: null | Buffer<ArrayBufferLike>;
                                      }
                                      Index

                                      Properties

                                      manufacturerData: null | Buffer<ArrayBufferLike>
                                      serviceData: null | Buffer<ArrayBufferLike>
                                      diff --git a/docs/interfaces/Chars.html b/docs/interfaces/Chars.html index 08720e74..32e10534 100644 --- a/docs/interfaces/Chars.html +++ b/docs/interfaces/Chars.html @@ -1,4 +1,4 @@ -Chars | node-switchbot

                                      Interface Chars

                                      interface Chars {
                                          device: null | Characteristic;
                                          notify: null | Characteristic;
                                          write: null | Characteristic;
                                      }

                                      Properties

                                      Properties

                                      device: null | Characteristic
                                      notify: null | Characteristic
                                      write: null | Characteristic
                                      +Chars | node-switchbot
                                      node-switchbot
                                        Preparing search index...

                                        Interface Chars

                                        interface Chars {
                                            device: null | Characteristic;
                                            notify: null | Characteristic;
                                            write: null | Characteristic;
                                        }
                                        Index

                                        Properties

                                        Properties

                                        device: null | Characteristic
                                        notify: null | Characteristic
                                        write: null | Characteristic
                                        diff --git a/docs/interfaces/ColorLightServiceDataBase.html b/docs/interfaces/ColorLightServiceDataBase.html new file mode 100644 index 00000000..cc3a4040 --- /dev/null +++ b/docs/interfaces/ColorLightServiceDataBase.html @@ -0,0 +1,17 @@ +ColorLightServiceDataBase | node-switchbot
                                        node-switchbot
                                          Preparing search index...

                                          Interface ColorLightServiceDataBase

                                          Base interface for color-controllable devices.

                                          +
                                          interface ColorLightServiceDataBase {
                                              blue: number;
                                              brightness: number;
                                              color_mode: number;
                                              color_temperature: number;
                                              delay: number;
                                              green: number;
                                              loop_index: number;
                                              model: SwitchBotBLEModel;
                                              modelFriendlyName: SwitchBotBLEModelFriendlyName;
                                              modelName: SwitchBotBLEModelName;
                                              power: boolean;
                                              preset: number;
                                              red: number;
                                              speed: number;
                                              state: boolean;
                                          }

                                          Hierarchy

                                          • BLEServiceData
                                            • ColorLightServiceDataBase
                                          Index

                                          Properties

                                          blue: number
                                          brightness: number
                                          color_mode: number
                                          color_temperature: number
                                          delay: number
                                          green: number
                                          loop_index: number
                                          power: boolean
                                          preset: number
                                          red: number
                                          speed: number
                                          state: boolean
                                          diff --git a/docs/interfaces/ErrorObject.html b/docs/interfaces/ErrorObject.html index f0ca5752..9727d5ea 100644 --- a/docs/interfaces/ErrorObject.html +++ b/docs/interfaces/ErrorObject.html @@ -1,3 +1,3 @@ -ErrorObject | node-switchbot

                                          Interface ErrorObject

                                          interface ErrorObject {
                                              code: string;
                                              message: string;
                                          }

                                          Properties

                                          Properties

                                          code: string
                                          message: string
                                          +ErrorObject | node-switchbot
                                          node-switchbot
                                            Preparing search index...

                                            Interface ErrorObject

                                            interface ErrorObject {
                                                code: string;
                                                message: string;
                                            }
                                            Index

                                            Properties

                                            Properties

                                            code: string
                                            message: string
                                            diff --git a/docs/interfaces/LockBaseServiceData.html b/docs/interfaces/LockBaseServiceData.html new file mode 100644 index 00000000..d2fbb70e --- /dev/null +++ b/docs/interfaces/LockBaseServiceData.html @@ -0,0 +1,15 @@ +LockBaseServiceData | node-switchbot
                                            node-switchbot
                                              Preparing search index...

                                              Interface LockBaseServiceData

                                              Base interface for lock-style devices.

                                              +
                                              interface LockBaseServiceData {
                                                  auto_lock_paused: boolean;
                                                  battery: number;
                                                  calibration: boolean;
                                                  door_open: boolean;
                                                  double_lock_mode: boolean;
                                                  model: SwitchBotBLEModel;
                                                  modelFriendlyName: SwitchBotBLEModelFriendlyName;
                                                  modelName: SwitchBotBLEModelName;
                                                  night_latch: boolean;
                                                  status: string;
                                                  unclosed_alarm: boolean;
                                                  unlocked_alarm: boolean;
                                                  update_from_secondary_lock: boolean;
                                              }

                                              Hierarchy

                                              • BLEServiceData
                                                • LockBaseServiceData
                                              Index

                                              Properties

                                              auto_lock_paused: boolean
                                              battery: number
                                              calibration: boolean
                                              door_open: boolean
                                              double_lock_mode: boolean
                                              night_latch: boolean
                                              status: string
                                              unclosed_alarm: boolean
                                              unlocked_alarm: boolean
                                              update_from_secondary_lock: boolean
                                              diff --git a/docs/interfaces/NobleTypes.html b/docs/interfaces/NobleTypes.html index 221cc3c2..7bc328df 100644 --- a/docs/interfaces/NobleTypes.html +++ b/docs/interfaces/NobleTypes.html @@ -1,4 +1,3 @@ -NobleTypes | node-switchbot

                                              Interface NobleTypes

                                              interface NobleTypes {
                                                  noble: __module;
                                                  peripheral: Peripheral;
                                                  state:
                                                      | "unknown"
                                                      | "resetting"
                                                      | "unsupported"
                                                      | "unauthorized"
                                                      | "poweredOff"
                                                      | "poweredOn";
                                              }

                                              Properties

                                              Properties

                                              noble: __module
                                              peripheral: Peripheral
                                              state:
                                                  | "unknown"
                                                  | "resetting"
                                                  | "unsupported"
                                                  | "unauthorized"
                                                  | "poweredOff"
                                                  | "poweredOn"
                                              +NobleTypes | node-switchbot
                                              node-switchbot
                                                Preparing search index...

                                                Interface NobleTypes

                                                interface NobleTypes {
                                                    noble: Noble;
                                                    peripheral: Peripheral;
                                                }
                                                Index

                                                Properties

                                                Properties

                                                noble: Noble
                                                peripheral: Peripheral
                                                diff --git a/docs/interfaces/Params.html b/docs/interfaces/Params.html index 7059f46d..eaedb7a9 100644 --- a/docs/interfaces/Params.html +++ b/docs/interfaces/Params.html @@ -1,6 +1,6 @@ -Params | node-switchbot

                                                Interface Params

                                                interface Params {
                                                    duration?: number;
                                                    id?: string;
                                                    model?: string;
                                                    noble?: __module;
                                                    quick?: boolean;
                                                }

                                                Properties

                                                Properties

                                                duration?: number
                                                id?: string
                                                model?: string
                                                noble?: __module
                                                quick?: boolean
                                                +Params | node-switchbot
                                                node-switchbot
                                                  Preparing search index...

                                                  Interface Params

                                                  interface Params {
                                                      duration?: number;
                                                      id?: string;
                                                      model?: string;
                                                      noble?: Noble;
                                                      quick?: boolean;
                                                  }
                                                  Index

                                                  Properties

                                                  Properties

                                                  duration?: number
                                                  id?: string
                                                  model?: string
                                                  noble?: Noble
                                                  quick?: boolean
                                                  diff --git a/docs/interfaces/PlugMiniServiceDataBase.html b/docs/interfaces/PlugMiniServiceDataBase.html new file mode 100644 index 00000000..422ac444 --- /dev/null +++ b/docs/interfaces/PlugMiniServiceDataBase.html @@ -0,0 +1,12 @@ +PlugMiniServiceDataBase | node-switchbot
                                                  node-switchbot
                                                    Preparing search index...

                                                    Interface PlugMiniServiceDataBase

                                                    Base interface for mini plug devices (US/JP share same schema).

                                                    +
                                                    interface PlugMiniServiceDataBase {
                                                        currentPower: number;
                                                        delay: boolean;
                                                        model: SwitchBotBLEModel;
                                                        modelFriendlyName: SwitchBotBLEModelFriendlyName;
                                                        modelName: SwitchBotBLEModelName;
                                                        overload: boolean;
                                                        state: string;
                                                        syncUtcTime: boolean;
                                                        timer: boolean;
                                                        wifiRssi: number;
                                                    }

                                                    Hierarchy

                                                    • BLEServiceData
                                                      • PlugMiniServiceDataBase
                                                    Index

                                                    Properties

                                                    currentPower: number
                                                    delay: boolean
                                                    overload: boolean
                                                    state: string
                                                    syncUtcTime: boolean
                                                    timer: boolean
                                                    wifiRssi: number
                                                    diff --git a/docs/interfaces/PushRequest.html b/docs/interfaces/PushRequest.html new file mode 100644 index 00000000..ba4414bd --- /dev/null +++ b/docs/interfaces/PushRequest.html @@ -0,0 +1,5 @@ +pushRequest | node-switchbot
                                                    node-switchbot
                                                      Preparing search index...

                                                      Interface pushRequest

                                                      Request payload for controlling a device.

                                                      +
                                                      interface pushRequest {
                                                          command: string;
                                                          commandType: commandType;
                                                          parameter: string;
                                                      }
                                                      Index

                                                      Properties

                                                      command: string
                                                      commandType: commandType
                                                      parameter: string
                                                      diff --git a/docs/interfaces/PushResponseBody.html b/docs/interfaces/PushResponseBody.html new file mode 100644 index 00000000..94951fb6 --- /dev/null +++ b/docs/interfaces/PushResponseBody.html @@ -0,0 +1,3 @@ +pushResponseBody | node-switchbot
                                                      node-switchbot
                                                        Preparing search index...

                                                        Interface pushResponseBody

                                                        Body of a device push response.

                                                        +
                                                        interface pushResponseBody {
                                                            commandId: string;
                                                        }
                                                        Index

                                                        Properties

                                                        Properties

                                                        commandId: string
                                                        diff --git a/docs/interfaces/Rule.html b/docs/interfaces/Rule.html index 97f1701e..aae024ec 100644 --- a/docs/interfaces/Rule.html +++ b/docs/interfaces/Rule.html @@ -1,9 +1,9 @@ -Rule | node-switchbot

                                                        Interface Rule

                                                        interface Rule {
                                                            enum?: unknown[];
                                                            max?: number;
                                                            maxBytes?: number;
                                                            min?: number;
                                                            minBytes?: number;
                                                            pattern?: RegExp;
                                                            required?: boolean;
                                                            type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
                                                        }

                                                        Properties

                                                        enum?: unknown[]
                                                        max?: number
                                                        maxBytes?: number
                                                        min?: number
                                                        minBytes?: number
                                                        pattern?: RegExp
                                                        required?: boolean
                                                        type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
                                                        +Rule | node-switchbot
                                                        node-switchbot
                                                          Preparing search index...

                                                          Interface Rule

                                                          interface Rule {
                                                              enum?: unknown[];
                                                              max?: number;
                                                              maxBytes?: number;
                                                              min?: number;
                                                              minBytes?: number;
                                                              pattern?: RegExp;
                                                              required?: boolean;
                                                              type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
                                                          }
                                                          Index

                                                          Properties

                                                          enum?: unknown[]
                                                          max?: number
                                                          maxBytes?: number
                                                          min?: number
                                                          minBytes?: number
                                                          pattern?: RegExp
                                                          required?: boolean
                                                          type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
                                                          diff --git a/docs/interfaces/ServiceData.html b/docs/interfaces/ServiceData.html index 01d5e307..50b3da1b 100644 --- a/docs/interfaces/ServiceData.html +++ b/docs/interfaces/ServiceData.html @@ -1,2 +1,2 @@ -ServiceData | node-switchbot

                                                          Interface ServiceData

                                                          interface ServiceData {
                                                              model: string;
                                                              [key: string]: unknown;
                                                          }

                                                          Indexable

                                                          • [key: string]: unknown

                                                          Properties

                                                          Properties

                                                          model: string
                                                          +ServiceData | node-switchbot
                                                          node-switchbot
                                                            Preparing search index...

                                                            Interface ServiceData

                                                            interface ServiceData {
                                                                model: string;
                                                                [key: string]: unknown;
                                                            }

                                                            Indexable

                                                            • [key: string]: unknown
                                                            Index

                                                            Properties

                                                            Properties

                                                            model: string
                                                            diff --git a/docs/interfaces/SwitchBotBLEDevice.html b/docs/interfaces/SwitchBotBLEDevice.html index d1ecbd92..f86718ef 100644 --- a/docs/interfaces/SwitchBotBLEDevice.html +++ b/docs/interfaces/SwitchBotBLEDevice.html @@ -1,23 +1,26 @@ -SwitchBotBLEDevice | node-switchbot

                                                            Interface SwitchBotBLEDevice

                                                            interface SwitchBotBLEDevice {
                                                                BlindTilt: DeviceInfo;
                                                                Bot: DeviceInfo;
                                                                CeilingLight: DeviceInfo;
                                                                CeilingLightPro: DeviceInfo;
                                                                ColorBulb: DeviceInfo;
                                                                ContactSensor: DeviceInfo;
                                                                Curtain: DeviceInfo;
                                                                Curtain3: DeviceInfo;
                                                                Hub2: DeviceInfo;
                                                                Humidifier: DeviceInfo;
                                                                Lock: DeviceInfo;
                                                                LockPro: DeviceInfo;
                                                                Meter: DeviceInfo;
                                                                MeterPlus: DeviceInfo;
                                                                MeterPro: DeviceInfo;
                                                                MeterProCO2: DeviceInfo;
                                                                MotionSensor: DeviceInfo;
                                                                OutdoorMeter: DeviceInfo;
                                                                PlugMiniJP: DeviceInfo;
                                                                PlugMiniUS: DeviceInfo;
                                                                StripLight: DeviceInfo;
                                                                Unknown: DeviceInfo;
                                                            }

                                                            Properties

                                                            BlindTilt: DeviceInfo
                                                            Bot: DeviceInfo
                                                            CeilingLight: DeviceInfo
                                                            CeilingLightPro: DeviceInfo
                                                            ColorBulb: DeviceInfo
                                                            ContactSensor: DeviceInfo
                                                            Curtain: DeviceInfo
                                                            Curtain3: DeviceInfo
                                                            Hub2: DeviceInfo
                                                            Humidifier: DeviceInfo
                                                            Lock: DeviceInfo
                                                            LockPro: DeviceInfo
                                                            Meter: DeviceInfo
                                                            MeterPlus: DeviceInfo
                                                            MeterPro: DeviceInfo
                                                            MeterProCO2: DeviceInfo
                                                            MotionSensor: DeviceInfo
                                                            OutdoorMeter: DeviceInfo
                                                            PlugMiniJP: DeviceInfo
                                                            PlugMiniUS: DeviceInfo
                                                            StripLight: DeviceInfo
                                                            Unknown: DeviceInfo
                                                            +SwitchBotBLEDevice | node-switchbot
                                                            node-switchbot
                                                              Preparing search index...

                                                              Interface SwitchBotBLEDevice

                                                              interface SwitchBotBLEDevice {
                                                                  AirPurifier: DeviceInfo;
                                                                  AirPurifierTable: DeviceInfo;
                                                                  BlindTilt: DeviceInfo;
                                                                  Bot: DeviceInfo;
                                                                  CeilingLight: DeviceInfo;
                                                                  CeilingLightPro: DeviceInfo;
                                                                  ColorBulb: DeviceInfo;
                                                                  ContactSensor: DeviceInfo;
                                                                  Curtain: DeviceInfo;
                                                                  Curtain3: DeviceInfo;
                                                                  Hub2: DeviceInfo;
                                                                  Hub3: DeviceInfo;
                                                                  Humidifier: DeviceInfo;
                                                                  Lock: DeviceInfo;
                                                                  LockPro: DeviceInfo;
                                                                  Meter: DeviceInfo;
                                                                  MeterPlus: DeviceInfo;
                                                                  MeterPro: DeviceInfo;
                                                                  MeterProCO2: DeviceInfo;
                                                                  MotionSensor: DeviceInfo;
                                                                  OutdoorMeter: DeviceInfo;
                                                                  PlugMiniJP: DeviceInfo;
                                                                  PlugMiniUS: DeviceInfo;
                                                                  StripLight: DeviceInfo;
                                                                  Unknown: DeviceInfo;
                                                              }
                                                              Index

                                                              Properties

                                                              AirPurifier: DeviceInfo
                                                              AirPurifierTable: DeviceInfo
                                                              BlindTilt: DeviceInfo
                                                              Bot: DeviceInfo
                                                              CeilingLight: DeviceInfo
                                                              CeilingLightPro: DeviceInfo
                                                              ColorBulb: DeviceInfo
                                                              ContactSensor: DeviceInfo
                                                              Curtain: DeviceInfo
                                                              Curtain3: DeviceInfo
                                                              Hub2: DeviceInfo
                                                              Hub3: DeviceInfo
                                                              Humidifier: DeviceInfo
                                                              Lock: DeviceInfo
                                                              LockPro: DeviceInfo
                                                              Meter: DeviceInfo
                                                              MeterPlus: DeviceInfo
                                                              MeterPro: DeviceInfo
                                                              MeterProCO2: DeviceInfo
                                                              MotionSensor: DeviceInfo
                                                              OutdoorMeter: DeviceInfo
                                                              PlugMiniJP: DeviceInfo
                                                              PlugMiniUS: DeviceInfo
                                                              StripLight: DeviceInfo
                                                              Unknown: DeviceInfo
                                                              diff --git a/docs/interfaces/SwitchBotScanner.html b/docs/interfaces/SwitchBotScanner.html new file mode 100644 index 00000000..d539dcdd --- /dev/null +++ b/docs/interfaces/SwitchBotScanner.html @@ -0,0 +1,6 @@ +SwitchBotScanner | node-switchbot
                                                              node-switchbot
                                                                Preparing search index...

                                                                Interface SwitchBotScanner

                                                                BLE discovery and wait methods for SwitchBot devices.

                                                                +
                                                                interface SwitchBotScanner {
                                                                    discover: (
                                                                        args: { duration?: number; id?: string; model: string; quick: boolean },
                                                                    ) => Promise<unknown>;
                                                                    wait: (ms: number) => void;
                                                                }
                                                                Index

                                                                Properties

                                                                Properties

                                                                discover: (
                                                                    args: { duration?: number; id?: string; model: string; quick: boolean },
                                                                ) => Promise<unknown>

                                                                Discover BLE devices based on filter criteria

                                                                +
                                                                wait: (ms: number) => void

                                                                Wait for given milliseconds

                                                                +
                                                                diff --git a/docs/interfaces/TemperatureServiceDataBase.html b/docs/interfaces/TemperatureServiceDataBase.html new file mode 100644 index 00000000..42cda535 --- /dev/null +++ b/docs/interfaces/TemperatureServiceDataBase.html @@ -0,0 +1,10 @@ +TemperatureServiceDataBase | node-switchbot
                                                                node-switchbot
                                                                  Preparing search index...

                                                                  Interface TemperatureServiceDataBase

                                                                  Base interface for temperature-humidity meter devices.

                                                                  +
                                                                  interface TemperatureServiceDataBase {
                                                                      battery: number;
                                                                      celsius: number;
                                                                      fahrenheit: number;
                                                                      fahrenheit_mode: boolean;
                                                                      humidity: number;
                                                                      model: SwitchBotBLEModel;
                                                                      modelFriendlyName: SwitchBotBLEModelFriendlyName;
                                                                      modelName: SwitchBotBLEModelName;
                                                                  }

                                                                  Hierarchy

                                                                  • BLEServiceData
                                                                    • TemperatureServiceDataBase
                                                                  Index

                                                                  Properties

                                                                  battery: number
                                                                  celsius: number
                                                                  fahrenheit: number
                                                                  fahrenheit_mode: boolean
                                                                  humidity: number
                                                                  diff --git a/docs/interfaces/WebhookDetail.html b/docs/interfaces/WebhookDetail.html index aa841c6c..4020a251 100644 --- a/docs/interfaces/WebhookDetail.html +++ b/docs/interfaces/WebhookDetail.html @@ -1,6 +1,6 @@ -WebhookDetail | node-switchbot

                                                                  Interface WebhookDetail

                                                                  interface WebhookDetail {
                                                                      createTime: number;
                                                                      deviceList: string;
                                                                      enable: boolean;
                                                                      lastUpdateTime: number;
                                                                      url: string;
                                                                  }

                                                                  Properties

                                                                  createTime: number
                                                                  deviceList: string
                                                                  enable: boolean
                                                                  lastUpdateTime: number
                                                                  url: string
                                                                  +WebhookDetail | node-switchbot
                                                                  node-switchbot
                                                                    Preparing search index...

                                                                    Interface WebhookDetail

                                                                    interface WebhookDetail {
                                                                        createTime: number;
                                                                        deviceList: string;
                                                                        enable: boolean;
                                                                        lastUpdateTime: number;
                                                                        url: string;
                                                                    }
                                                                    Index

                                                                    Properties

                                                                    createTime: number
                                                                    deviceList: string
                                                                    enable: boolean
                                                                    lastUpdateTime: number
                                                                    url: string
                                                                    diff --git a/docs/interfaces/ad.html b/docs/interfaces/ad.html index 22c3935b..d8748893 100644 --- a/docs/interfaces/ad.html +++ b/docs/interfaces/ad.html @@ -1,5 +1,5 @@ -ad | node-switchbot

                                                                    Interface ad

                                                                    interface ad {
                                                                        address: string;
                                                                        id: string;
                                                                        rssi: number;
                                                                        serviceData:
                                                                            | botServiceData
                                                                            | colorBulbServiceData
                                                                            | contactSensorServiceData
                                                                            | curtainServiceData
                                                                            | curtain3ServiceData
                                                                            | stripLightServiceData
                                                                            | lockServiceData
                                                                            | lockProServiceData
                                                                            | meterServiceData
                                                                            | meterPlusServiceData
                                                                            | meterProServiceData
                                                                            | meterProCO2ServiceData
                                                                            | outdoorMeterServiceData
                                                                            | motionSensorServiceData
                                                                            | plugMiniUSServiceData
                                                                            | plugMiniJPServiceData
                                                                            | blindTiltServiceData
                                                                            | ceilingLightServiceData
                                                                            | ceilingLightProServiceData
                                                                            | hub2ServiceData
                                                                            | batteryCirculatorFanServiceData
                                                                            | waterLeakDetectorServiceData
                                                                            | humidifierServiceData
                                                                            | humidifier2ServiceData
                                                                            | robotVacuumCleanerServiceData
                                                                            | keypadDetectorServiceData
                                                                            | relaySwitch1ServiceData
                                                                            | relaySwitch1PMServiceData
                                                                            | remoteServiceData;
                                                                        [key: string]: unknown;
                                                                    }

                                                                    Indexable

                                                                    • [key: string]: unknown

                                                                    Properties

                                                                    Properties

                                                                    address: string
                                                                    id: string
                                                                    rssi: number
                                                                    serviceData:
                                                                        | botServiceData
                                                                        | colorBulbServiceData
                                                                        | contactSensorServiceData
                                                                        | curtainServiceData
                                                                        | curtain3ServiceData
                                                                        | stripLightServiceData
                                                                        | lockServiceData
                                                                        | lockProServiceData
                                                                        | meterServiceData
                                                                        | meterPlusServiceData
                                                                        | meterProServiceData
                                                                        | meterProCO2ServiceData
                                                                        | outdoorMeterServiceData
                                                                        | motionSensorServiceData
                                                                        | plugMiniUSServiceData
                                                                        | plugMiniJPServiceData
                                                                        | blindTiltServiceData
                                                                        | ceilingLightServiceData
                                                                        | ceilingLightProServiceData
                                                                        | hub2ServiceData
                                                                        | batteryCirculatorFanServiceData
                                                                        | waterLeakDetectorServiceData
                                                                        | humidifierServiceData
                                                                        | humidifier2ServiceData
                                                                        | robotVacuumCleanerServiceData
                                                                        | keypadDetectorServiceData
                                                                        | relaySwitch1ServiceData
                                                                        | relaySwitch1PMServiceData
                                                                        | remoteServiceData
                                                                    +ad | node-switchbot
                                                                    node-switchbot
                                                                      Preparing search index...

                                                                      Interface ad

                                                                      interface ad {
                                                                          address: string;
                                                                          id: string;
                                                                          rssi: number;
                                                                          serviceData:
                                                                              | botServiceData
                                                                              | colorBulbServiceData
                                                                              | contactSensorServiceData
                                                                              | curtainServiceData
                                                                              | curtain3ServiceData
                                                                              | stripLightServiceData
                                                                              | lockServiceData
                                                                              | lockProServiceData
                                                                              | meterServiceData
                                                                              | meterPlusServiceData
                                                                              | meterProServiceData
                                                                              | meterProCO2ServiceData
                                                                              | outdoorMeterServiceData
                                                                              | motionSensorServiceData
                                                                              | plugMiniUSServiceData
                                                                              | plugMiniJPServiceData
                                                                              | blindTiltServiceData
                                                                              | ceilingLightServiceData
                                                                              | ceilingLightProServiceData
                                                                              | hub2ServiceData
                                                                              | hub3ServiceData
                                                                              | batteryCirculatorFanServiceData
                                                                              | waterLeakDetectorServiceData
                                                                              | humidifierServiceData
                                                                              | humidifier2ServiceData
                                                                              | robotVacuumCleanerServiceData
                                                                              | keypadDetectorServiceData
                                                                              | relaySwitch1ServiceData
                                                                              | relaySwitch1PMServiceData
                                                                              | remoteServiceData
                                                                              | airPurifierServiceData
                                                                              | airPurifierTableServiceData;
                                                                          [key: string]: unknown;
                                                                      }

                                                                      Indexable

                                                                      • [key: string]: unknown
                                                                      Index

                                                                      Properties

                                                                      Properties

                                                                      address: string
                                                                      id: string
                                                                      rssi: number
                                                                      serviceData:
                                                                          | botServiceData
                                                                          | colorBulbServiceData
                                                                          | contactSensorServiceData
                                                                          | curtainServiceData
                                                                          | curtain3ServiceData
                                                                          | stripLightServiceData
                                                                          | lockServiceData
                                                                          | lockProServiceData
                                                                          | meterServiceData
                                                                          | meterPlusServiceData
                                                                          | meterProServiceData
                                                                          | meterProCO2ServiceData
                                                                          | outdoorMeterServiceData
                                                                          | motionSensorServiceData
                                                                          | plugMiniUSServiceData
                                                                          | plugMiniJPServiceData
                                                                          | blindTiltServiceData
                                                                          | ceilingLightServiceData
                                                                          | ceilingLightProServiceData
                                                                          | hub2ServiceData
                                                                          | hub3ServiceData
                                                                          | batteryCirculatorFanServiceData
                                                                          | waterLeakDetectorServiceData
                                                                          | humidifierServiceData
                                                                          | humidifier2ServiceData
                                                                          | robotVacuumCleanerServiceData
                                                                          | keypadDetectorServiceData
                                                                          | relaySwitch1ServiceData
                                                                          | relaySwitch1PMServiceData
                                                                          | remoteServiceData
                                                                          | airPurifierServiceData
                                                                          | airPurifierTableServiceData
                                                                      diff --git a/docs/interfaces/body.html b/docs/interfaces/body.html index 4d76fa6e..62392856 100644 --- a/docs/interfaces/body.html +++ b/docs/interfaces/body.html @@ -1,3 +1,3 @@ -body | node-switchbot

                                                                      Interface body

                                                                      interface body {
                                                                          deviceList: deviceList;
                                                                          infraredRemoteList: infraredRemoteList;
                                                                      }

                                                                      Properties

                                                                      deviceList: deviceList
                                                                      infraredRemoteList: infraredRemoteList
                                                                      +body | node-switchbot
                                                                      node-switchbot
                                                                        Preparing search index...

                                                                        Interface body

                                                                        interface body {
                                                                            deviceList: device[];
                                                                            infraredRemoteList: infraredRemoteList;
                                                                        }
                                                                        Index

                                                                        Properties

                                                                        deviceList: device[]
                                                                        infraredRemoteList: infraredRemoteList
                                                                        diff --git a/docs/interfaces/bodyChange.html b/docs/interfaces/bodyChange.html index bce10983..a0ffaf36 100644 --- a/docs/interfaces/bodyChange.html +++ b/docs/interfaces/bodyChange.html @@ -1,4 +1,4 @@ -bodyChange | node-switchbot

                                                                        Interface bodyChange

                                                                        interface bodyChange {
                                                                            command: string;
                                                                            commandType: string;
                                                                            parameter: string;
                                                                        }

                                                                        Properties

                                                                        command: string
                                                                        commandType: string
                                                                        parameter: string
                                                                        +bodyChange | node-switchbot
                                                                        node-switchbot
                                                                          Preparing search index...

                                                                          Interface bodyChange

                                                                          interface bodyChange {
                                                                              command: string;
                                                                              commandType: string;
                                                                              parameter: string;
                                                                          }
                                                                          Index

                                                                          Properties

                                                                          command: string
                                                                          commandType: string
                                                                          parameter: string
                                                                          diff --git a/docs/interfaces/deleteWebhookResponse.html b/docs/interfaces/deleteWebhookResponse.html index 1df44e35..4791dfb2 100644 --- a/docs/interfaces/deleteWebhookResponse.html +++ b/docs/interfaces/deleteWebhookResponse.html @@ -1,4 +1,4 @@ -deleteWebhookResponse | node-switchbot

                                                                          Interface deleteWebhookResponse

                                                                          interface deleteWebhookResponse {
                                                                              body: object;
                                                                              message: string;
                                                                              statusCode: number;
                                                                          }

                                                                          Properties

                                                                          Properties

                                                                          body: object
                                                                          message: string
                                                                          statusCode: number
                                                                          +deleteWebhookResponse | node-switchbot
                                                                          node-switchbot
                                                                            Preparing search index...

                                                                            Interface deleteWebhookResponse

                                                                            interface deleteWebhookResponse {
                                                                                body: object;
                                                                                message: string;
                                                                                statusCode: number;
                                                                            }
                                                                            Index

                                                                            Properties

                                                                            Properties

                                                                            body: object
                                                                            message: string
                                                                            statusCode: number
                                                                            diff --git a/docs/interfaces/device.html b/docs/interfaces/device.html index 52d4f675..559683a6 100644 --- a/docs/interfaces/device.html +++ b/docs/interfaces/device.html @@ -1,7 +1,7 @@ -device | node-switchbot

                                                                            Interface device

                                                                            interface device {
                                                                                deviceId: string;
                                                                                deviceName: string;
                                                                                deviceType: string;
                                                                                enableCloudService: boolean;
                                                                                hubDeviceId: string;
                                                                                version?: number;
                                                                            }

                                                                            Hierarchy (View Summary)

                                                                            Properties

                                                                            deviceId: string
                                                                            deviceName: string
                                                                            deviceType: string
                                                                            enableCloudService: boolean
                                                                            hubDeviceId: string
                                                                            version?: number
                                                                            +device | node-switchbot
                                                                            node-switchbot
                                                                              Preparing search index...

                                                                              Interface device

                                                                              interface device {
                                                                                  deviceId: string;
                                                                                  deviceName: string;
                                                                                  deviceType: string;
                                                                                  enableCloudService: boolean;
                                                                                  hubDeviceId: string;
                                                                                  version?: number;
                                                                              }

                                                                              Hierarchy (View Summary)

                                                                              Index

                                                                              Properties

                                                                              deviceId: string
                                                                              deviceName: string
                                                                              deviceType: string
                                                                              enableCloudService: boolean
                                                                              hubDeviceId: string
                                                                              version?: number
                                                                              diff --git a/docs/interfaces/deviceList.html b/docs/interfaces/deviceList.html index c42854a7..3a27f54f 100644 --- a/docs/interfaces/deviceList.html +++ b/docs/interfaces/deviceList.html @@ -1,2 +1,2 @@ -deviceList | node-switchbot

                                                                              Interface deviceList

                                                                              interface deviceList {
                                                                                  device: device[];
                                                                              }

                                                                              Properties

                                                                              Properties

                                                                              device: device[]
                                                                              +deviceList | node-switchbot
                                                                              node-switchbot
                                                                                Preparing search index...

                                                                                Interface deviceList

                                                                                interface deviceList {
                                                                                    device: device[];
                                                                                }
                                                                                Index

                                                                                Properties

                                                                                Properties

                                                                                device: device[]
                                                                                diff --git a/docs/interfaces/deviceStatus.html b/docs/interfaces/deviceStatus.html index 09359e17..7e33a048 100644 --- a/docs/interfaces/deviceStatus.html +++ b/docs/interfaces/deviceStatus.html @@ -1,7 +1,7 @@ -deviceStatus | node-switchbot

                                                                                Interface deviceStatus

                                                                                interface deviceStatus {
                                                                                    deviceId: string;
                                                                                    deviceName: string;
                                                                                    deviceType: string;
                                                                                    enableCloudService: boolean;
                                                                                    hubDeviceId: string;
                                                                                    version: number;
                                                                                }

                                                                                Hierarchy (View Summary)

                                                                                Properties

                                                                                deviceId: string
                                                                                deviceName: string
                                                                                deviceType: string
                                                                                enableCloudService: boolean
                                                                                hubDeviceId: string
                                                                                version: number
                                                                                +deviceStatus | node-switchbot
                                                                                node-switchbot
                                                                                  Preparing search index...

                                                                                  Interface deviceStatus

                                                                                  interface deviceStatus {
                                                                                      deviceId: string;
                                                                                      deviceName: string;
                                                                                      deviceType: string;
                                                                                      enableCloudService: boolean;
                                                                                      hubDeviceId: string;
                                                                                      version: number;
                                                                                  }

                                                                                  Hierarchy (View Summary)

                                                                                  Index

                                                                                  Properties

                                                                                  deviceId: string
                                                                                  deviceName: string
                                                                                  deviceType: string
                                                                                  enableCloudService: boolean
                                                                                  hubDeviceId: string
                                                                                  version: number
                                                                                  diff --git a/docs/interfaces/deviceStatusRequest.html b/docs/interfaces/deviceStatusRequest.html index 826acae0..fdd04189 100644 --- a/docs/interfaces/deviceStatusRequest.html +++ b/docs/interfaces/deviceStatusRequest.html @@ -1,4 +1,4 @@ -deviceStatusRequest | node-switchbot

                                                                                  Interface deviceStatusRequest

                                                                                  interface deviceStatusRequest {
                                                                                      body: deviceStatus;
                                                                                      message: string;
                                                                                      statusCode: number;
                                                                                  }

                                                                                  Properties

                                                                                  Properties

                                                                                  message: string
                                                                                  statusCode: number
                                                                                  +deviceStatusRequest | node-switchbot
                                                                                  node-switchbot
                                                                                    Preparing search index...

                                                                                    Interface deviceStatusRequest

                                                                                    interface deviceStatusRequest {
                                                                                        body: deviceStatus;
                                                                                        message: string;
                                                                                        statusCode: number;
                                                                                    }
                                                                                    Index

                                                                                    Properties

                                                                                    Properties

                                                                                    message: string
                                                                                    statusCode: number
                                                                                    diff --git a/docs/interfaces/deviceWebhook.html b/docs/interfaces/deviceWebhook.html index a92f7225..97f29e02 100644 --- a/docs/interfaces/deviceWebhook.html +++ b/docs/interfaces/deviceWebhook.html @@ -1,4 +1,4 @@ -deviceWebhook | node-switchbot

                                                                                    Interface deviceWebhook

                                                                                    interface deviceWebhook {
                                                                                        context: deviceWebhookContext;
                                                                                        eventType: string;
                                                                                        eventVersion: string;
                                                                                    }

                                                                                    Properties

                                                                                    eventType: string
                                                                                    eventVersion: string
                                                                                    +deviceWebhook | node-switchbot
                                                                                    node-switchbot
                                                                                      Preparing search index...

                                                                                      Interface deviceWebhook

                                                                                      interface deviceWebhook {
                                                                                          context: deviceWebhookContext;
                                                                                          eventType: string;
                                                                                          eventVersion: string;
                                                                                      }
                                                                                      Index

                                                                                      Properties

                                                                                      eventType: string
                                                                                      eventVersion: string
                                                                                      diff --git a/docs/interfaces/deviceWebhookContext.html b/docs/interfaces/deviceWebhookContext.html index 4d459118..b295611f 100644 --- a/docs/interfaces/deviceWebhookContext.html +++ b/docs/interfaces/deviceWebhookContext.html @@ -1,4 +1,4 @@ -deviceWebhookContext | node-switchbot

                                                                                      Interface deviceWebhookContext

                                                                                      interface deviceWebhookContext {
                                                                                          deviceMac: string;
                                                                                          deviceType: string;
                                                                                          timeOfSample: number;
                                                                                      }

                                                                                      Properties

                                                                                      deviceMac: string
                                                                                      deviceType: string
                                                                                      timeOfSample: number
                                                                                      +deviceWebhookContext | node-switchbot
                                                                                      node-switchbot
                                                                                        Preparing search index...

                                                                                        Interface deviceWebhookContext

                                                                                        interface deviceWebhookContext {
                                                                                            deviceMac: string;
                                                                                            deviceType: string;
                                                                                            timeOfSample: number;
                                                                                        }
                                                                                        Index

                                                                                        Properties

                                                                                        deviceMac: string
                                                                                        deviceType: string
                                                                                        timeOfSample: number
                                                                                        diff --git a/docs/interfaces/devices.html b/docs/interfaces/devices.html index 57654d71..3173ed70 100644 --- a/docs/interfaces/devices.html +++ b/docs/interfaces/devices.html @@ -1,4 +1,4 @@ -devices | node-switchbot

                                                                                        Interface devices

                                                                                        interface devices {
                                                                                            body: body;
                                                                                            message: string;
                                                                                            statusCode: number;
                                                                                        }

                                                                                        Properties

                                                                                        Properties

                                                                                        body: body
                                                                                        message: string
                                                                                        statusCode: number
                                                                                        +devices | node-switchbot
                                                                                        node-switchbot
                                                                                          Preparing search index...

                                                                                          Interface devices

                                                                                          interface devices {
                                                                                              body: body;
                                                                                              message: string;
                                                                                              statusCode: number;
                                                                                          }
                                                                                          Index

                                                                                          Properties

                                                                                          Properties

                                                                                          body: body
                                                                                          message: string
                                                                                          statusCode: number
                                                                                          diff --git a/docs/interfaces/infraredRemoteList.html b/docs/interfaces/infraredRemoteList.html index db55c87c..2da5d5e0 100644 --- a/docs/interfaces/infraredRemoteList.html +++ b/docs/interfaces/infraredRemoteList.html @@ -1,2 +1,2 @@ -infraredRemoteList | node-switchbot

                                                                                          Interface infraredRemoteList

                                                                                          interface infraredRemoteList {
                                                                                              device: irdevice[];
                                                                                          }

                                                                                          Properties

                                                                                          Properties

                                                                                          device: irdevice[]
                                                                                          +infraredRemoteList | node-switchbot
                                                                                          node-switchbot
                                                                                            Preparing search index...

                                                                                            Interface infraredRemoteList

                                                                                            interface infraredRemoteList {
                                                                                                device: irdevice[];
                                                                                            }
                                                                                            Index

                                                                                            Properties

                                                                                            Properties

                                                                                            device: irdevice[]
                                                                                            diff --git a/docs/interfaces/irdevice.html b/docs/interfaces/irdevice.html index c331cf6e..53715ad9 100644 --- a/docs/interfaces/irdevice.html +++ b/docs/interfaces/irdevice.html @@ -1,5 +1,5 @@ -irdevice | node-switchbot

                                                                                            Interface irdevice

                                                                                            interface irdevice {
                                                                                                deviceId?: string;
                                                                                                deviceName: string;
                                                                                                hubDeviceId: string;
                                                                                                remoteType: string;
                                                                                            }

                                                                                            Properties

                                                                                            deviceId?: string
                                                                                            deviceName: string
                                                                                            hubDeviceId: string
                                                                                            remoteType: string
                                                                                            +irdevice | node-switchbot
                                                                                            node-switchbot
                                                                                              Preparing search index...

                                                                                              Interface irdevice

                                                                                              interface irdevice {
                                                                                                  deviceId?: string;
                                                                                                  deviceName: string;
                                                                                                  hubDeviceId: string;
                                                                                                  remoteType: string;
                                                                                              }
                                                                                              Index

                                                                                              Properties

                                                                                              deviceId?: string
                                                                                              deviceName: string
                                                                                              hubDeviceId: string
                                                                                              remoteType: string
                                                                                              diff --git a/docs/interfaces/pushResponse.html b/docs/interfaces/pushResponse.html index fb036ffb..74e7342c 100644 --- a/docs/interfaces/pushResponse.html +++ b/docs/interfaces/pushResponse.html @@ -1,4 +1,5 @@ -pushResponse | node-switchbot

                                                                                              Interface pushResponse

                                                                                              interface pushResponse {
                                                                                                  body: { commandId: string };
                                                                                                  message: string;
                                                                                                  statusCode: number;
                                                                                              }

                                                                                              Properties

                                                                                              Properties

                                                                                              body: { commandId: string }
                                                                                              message: string
                                                                                              statusCode: number
                                                                                              +pushResponse | node-switchbot
                                                                                              node-switchbot
                                                                                                Preparing search index...

                                                                                                Interface pushResponse

                                                                                                Response from a device control (push) request.

                                                                                                +
                                                                                                interface pushResponse {
                                                                                                    body: pushResponseBody;
                                                                                                    message: string;
                                                                                                    statusCode: number;
                                                                                                }
                                                                                                Index

                                                                                                Properties

                                                                                                Properties

                                                                                                message: string
                                                                                                statusCode: number
                                                                                                diff --git a/docs/interfaces/queryWebhookResponse.html b/docs/interfaces/queryWebhookResponse.html index 5e2d181c..4893b6dc 100644 --- a/docs/interfaces/queryWebhookResponse.html +++ b/docs/interfaces/queryWebhookResponse.html @@ -1,4 +1,4 @@ -queryWebhookResponse | node-switchbot

                                                                                                Interface queryWebhookResponse

                                                                                                interface queryWebhookResponse {
                                                                                                    body: WebhookDetail[];
                                                                                                    message: string;
                                                                                                    statusCode: number;
                                                                                                }

                                                                                                Properties

                                                                                                Properties

                                                                                                message: string
                                                                                                statusCode: number
                                                                                                +queryWebhookResponse | node-switchbot
                                                                                                node-switchbot
                                                                                                  Preparing search index...

                                                                                                  Interface queryWebhookResponse

                                                                                                  interface queryWebhookResponse {
                                                                                                      body: WebhookDetail[];
                                                                                                      message: string;
                                                                                                      statusCode: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  message: string
                                                                                                  statusCode: number
                                                                                                  diff --git a/docs/interfaces/setupWebhookResponse.html b/docs/interfaces/setupWebhookResponse.html index 7b660153..a4e0fcd0 100644 --- a/docs/interfaces/setupWebhookResponse.html +++ b/docs/interfaces/setupWebhookResponse.html @@ -1,4 +1,4 @@ -setupWebhookResponse | node-switchbot

                                                                                                  Interface setupWebhookResponse

                                                                                                  interface setupWebhookResponse {
                                                                                                      body: object;
                                                                                                      message: string;
                                                                                                      statusCode: number;
                                                                                                  }

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  body: object
                                                                                                  message: string
                                                                                                  statusCode: number
                                                                                                  +setupWebhookResponse | node-switchbot
                                                                                                  node-switchbot
                                                                                                    Preparing search index...

                                                                                                    Interface setupWebhookResponse

                                                                                                    interface setupWebhookResponse {
                                                                                                        body: object;
                                                                                                        message: string;
                                                                                                        statusCode: number;
                                                                                                    }
                                                                                                    Index

                                                                                                    Properties

                                                                                                    Properties

                                                                                                    body: object
                                                                                                    message: string
                                                                                                    statusCode: number
                                                                                                    diff --git a/docs/interfaces/switchbot.html b/docs/interfaces/switchbot.html deleted file mode 100644 index 1822ae26..00000000 --- a/docs/interfaces/switchbot.html +++ /dev/null @@ -1,3 +0,0 @@ -switchbot | node-switchbot

                                                                                                    Interface switchbot

                                                                                                    interface switchbot {
                                                                                                        discover: (
                                                                                                            arg0: { duration?: any; id?: string; model: string; quick: boolean },
                                                                                                        ) => Promise<any>;
                                                                                                        wait: (arg0: number) => any;
                                                                                                    }

                                                                                                    Properties

                                                                                                    Properties

                                                                                                    discover: (
                                                                                                        arg0: { duration?: any; id?: string; model: string; quick: boolean },
                                                                                                    ) => Promise<any>
                                                                                                    wait: (arg0: number) => any
                                                                                                    diff --git a/docs/interfaces/updateWebhookResponse.html b/docs/interfaces/updateWebhookResponse.html index 10802315..8ca6e9d8 100644 --- a/docs/interfaces/updateWebhookResponse.html +++ b/docs/interfaces/updateWebhookResponse.html @@ -1,4 +1,4 @@ -updateWebhookResponse | node-switchbot

                                                                                                    Interface updateWebhookResponse

                                                                                                    interface updateWebhookResponse {
                                                                                                        body: object;
                                                                                                        message: string;
                                                                                                        statusCode: number;
                                                                                                    }

                                                                                                    Properties

                                                                                                    Properties

                                                                                                    body: object
                                                                                                    message: string
                                                                                                    statusCode: number
                                                                                                    +updateWebhookResponse | node-switchbot
                                                                                                    node-switchbot
                                                                                                      Preparing search index...

                                                                                                      Interface updateWebhookResponse

                                                                                                      interface updateWebhookResponse {
                                                                                                          body: object;
                                                                                                          message: string;
                                                                                                          statusCode: number;
                                                                                                      }
                                                                                                      Index

                                                                                                      Properties

                                                                                                      Properties

                                                                                                      body: object
                                                                                                      message: string
                                                                                                      statusCode: number
                                                                                                      diff --git a/docs/interfaces/webhookRequest.html b/docs/interfaces/webhookRequest.html index 41eeb76a..94bf89af 100644 --- a/docs/interfaces/webhookRequest.html +++ b/docs/interfaces/webhookRequest.html @@ -1,4 +1,4 @@ -webhookRequest | node-switchbot

                                                                                                      Interface webhookRequest

                                                                                                      interface webhookRequest {
                                                                                                          action: string;
                                                                                                          deviceList: string;
                                                                                                          url: string;
                                                                                                      }

                                                                                                      Properties

                                                                                                      Properties

                                                                                                      action: string
                                                                                                      deviceList: string
                                                                                                      url: string
                                                                                                      +webhookRequest | node-switchbot
                                                                                                      node-switchbot
                                                                                                        Preparing search index...

                                                                                                        Interface webhookRequest

                                                                                                        interface webhookRequest {
                                                                                                            action: string;
                                                                                                            deviceList: string;
                                                                                                            url: string;
                                                                                                        }
                                                                                                        Index

                                                                                                        Properties

                                                                                                        Properties

                                                                                                        action: string
                                                                                                        deviceList: string
                                                                                                        url: string
                                                                                                        diff --git a/docs/modules.html b/docs/modules.html index b51c79fd..698e9fd6 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1 @@ -node-switchbot

                                                                                                        node-switchbot

                                                                                                        Enumerations

                                                                                                        LogLevel
                                                                                                        SwitchBotBLEModel
                                                                                                        SwitchBotBLEModelFriendlyName
                                                                                                        SwitchBotBLEModelName
                                                                                                        SwitchBotModel

                                                                                                        Classes

                                                                                                        Advertising
                                                                                                        SwitchBotBLE
                                                                                                        SwitchbotDevice
                                                                                                        SwitchBotOpenAPI
                                                                                                        WoBlindTilt
                                                                                                        WoBulb
                                                                                                        WoCeilingLight
                                                                                                        WoContact
                                                                                                        WoCurtain
                                                                                                        WoHand
                                                                                                        WoHub2
                                                                                                        WoHumi
                                                                                                        WoHumi2
                                                                                                        WoIOSensorTH
                                                                                                        WoKeypad
                                                                                                        WoLeak
                                                                                                        WoPlugMiniJP
                                                                                                        WoPlugMiniUS
                                                                                                        WoPresence
                                                                                                        WoRelaySwitch1
                                                                                                        WoRelaySwitch1PM
                                                                                                        WoRemote
                                                                                                        WoSensorTH
                                                                                                        WoSensorTHPlus
                                                                                                        WoSensorTHPro
                                                                                                        WoSensorTHProCO2
                                                                                                        WoSmartLock
                                                                                                        WoSmartLockPro
                                                                                                        WoStrip

                                                                                                        Interfaces

                                                                                                        ad
                                                                                                        AdvertisementData
                                                                                                        body
                                                                                                        bodyChange
                                                                                                        Chars
                                                                                                        deleteWebhookResponse
                                                                                                        device
                                                                                                        deviceList
                                                                                                        devices
                                                                                                        deviceStatus
                                                                                                        deviceStatusRequest
                                                                                                        deviceWebhook
                                                                                                        deviceWebhookContext
                                                                                                        ErrorObject
                                                                                                        infraredRemoteList
                                                                                                        irdevice
                                                                                                        NobleTypes
                                                                                                        Params
                                                                                                        pushResponse
                                                                                                        queryWebhookResponse
                                                                                                        Rule
                                                                                                        ServiceData
                                                                                                        setupWebhookResponse
                                                                                                        switchbot
                                                                                                        SwitchBotBLEDevice
                                                                                                        updateWebhookResponse
                                                                                                        WebhookDetail
                                                                                                        webhookRequest

                                                                                                        Type Aliases

                                                                                                        batteryCirculatorFan
                                                                                                        batteryCirculatorFanServiceData
                                                                                                        batteryCirculatorFanStatus
                                                                                                        batteryCirculatorFanWebhookContext
                                                                                                        blindTilt
                                                                                                        blindTiltServiceData
                                                                                                        blindTiltStatus
                                                                                                        blindTiltWebhookContext
                                                                                                        bot
                                                                                                        botServiceData
                                                                                                        botStatus
                                                                                                        botWebhookContext
                                                                                                        ceilingLight
                                                                                                        ceilingLightPro
                                                                                                        ceilingLightProServiceData
                                                                                                        ceilingLightProStatus
                                                                                                        ceilingLightProWebhookContext
                                                                                                        ceilingLightServiceData
                                                                                                        ceilingLightStatus
                                                                                                        ceilingLightWebhookContext
                                                                                                        circulatorFanStatus
                                                                                                        circulatorFanWebhookContext
                                                                                                        colorBulb
                                                                                                        colorBulbServiceData
                                                                                                        colorBulbStatus
                                                                                                        colorBulbWebhookContext
                                                                                                        contactSensor
                                                                                                        contactSensorServiceData
                                                                                                        contactSensorStatus
                                                                                                        contactSensorWebhookContext
                                                                                                        curtain
                                                                                                        curtain3
                                                                                                        curtain3ServiceData
                                                                                                        curtain3WebhookContext
                                                                                                        curtainServiceData
                                                                                                        curtainStatus
                                                                                                        curtainWebhookContext
                                                                                                        floorCleaningRobotS10
                                                                                                        floorCleaningRobotS10Status
                                                                                                        floorCleaningRobotS10WebhookContext
                                                                                                        hub2
                                                                                                        hub2ServiceData
                                                                                                        hub2Status
                                                                                                        hub2WebhookContext
                                                                                                        humidifier
                                                                                                        humidifier2ServiceData
                                                                                                        humidifier2Status
                                                                                                        humidifier2WebhookContext
                                                                                                        humidifierServiceData
                                                                                                        humidifierStatus
                                                                                                        humidifierWebhookContext
                                                                                                        indoorCam
                                                                                                        indoorCameraWebhookContext
                                                                                                        keypad
                                                                                                        keypadDetectorServiceData
                                                                                                        keypadTouch
                                                                                                        keypadTouchWebhookContext
                                                                                                        keypadWebhookContext
                                                                                                        lock
                                                                                                        lockPro
                                                                                                        lockProServiceData
                                                                                                        lockProStatus
                                                                                                        lockProWebhookContext
                                                                                                        lockServiceData
                                                                                                        lockStatus
                                                                                                        lockWebhookContext
                                                                                                        MacAddress
                                                                                                        meter
                                                                                                        meterPlus
                                                                                                        meterPlusServiceData
                                                                                                        meterPlusStatus
                                                                                                        meterPlusWebhookContext
                                                                                                        meterPro
                                                                                                        meterProCO2ServiceData
                                                                                                        meterProCO2Status
                                                                                                        meterProCO2WebhookContext
                                                                                                        meterProServiceData
                                                                                                        meterProStatus
                                                                                                        meterProWebhookContext
                                                                                                        meterServiceData
                                                                                                        meterStatus
                                                                                                        meterWebhookContext
                                                                                                        motionSensor
                                                                                                        motionSensorServiceData
                                                                                                        motionSensorStatus
                                                                                                        motionSensorWebhookContext
                                                                                                        onadvertisement
                                                                                                        ondiscover
                                                                                                        outdoorMeter
                                                                                                        outdoorMeterServiceData
                                                                                                        outdoorMeterStatus
                                                                                                        outdoorMeterWebhookContext
                                                                                                        pantiltCam
                                                                                                        pantiltCam2k
                                                                                                        panTiltCamWebhookContext
                                                                                                        plug
                                                                                                        plugMini
                                                                                                        plugMiniJPServiceData
                                                                                                        plugMiniJPWebhookContext
                                                                                                        plugMiniStatus
                                                                                                        plugMiniUSServiceData
                                                                                                        plugMiniUSWebhookContext
                                                                                                        plugStatus
                                                                                                        plugWebhookContext
                                                                                                        relaySwitch1Context
                                                                                                        relaySwitch1PMContext
                                                                                                        relaySwitch1PMServiceData
                                                                                                        relaySwitch1PMStatus
                                                                                                        relaySwitch1ServiceData
                                                                                                        relaySwitch1Status
                                                                                                        remote
                                                                                                        remoteServiceData
                                                                                                        robotVacuumCleanerS1
                                                                                                        robotVacuumCleanerS1Plus
                                                                                                        robotVacuumCleanerS1PlusStatus
                                                                                                        robotVacuumCleanerS1PlusWebhookContext
                                                                                                        robotVacuumCleanerS1Status
                                                                                                        robotVacuumCleanerS1WebhookContext
                                                                                                        robotVacuumCleanerServiceData
                                                                                                        stripLight
                                                                                                        stripLightServiceData
                                                                                                        stripLightStatus
                                                                                                        stripLightWebhookContext
                                                                                                        waterLeakDetector
                                                                                                        waterLeakDetectorServiceData
                                                                                                        waterLeakDetectorStatus
                                                                                                        waterLeakDetectorWebhookContext
                                                                                                        +node-switchbot
                                                                                                        node-switchbot
                                                                                                          Preparing search index...

                                                                                                            node-switchbot

                                                                                                            Enumerations

                                                                                                            LogLevel
                                                                                                            SwitchBotBLEModel
                                                                                                            SwitchBotBLEModelFriendlyName
                                                                                                            SwitchBotBLEModelName
                                                                                                            SwitchBotModel

                                                                                                            Classes

                                                                                                            Advertising
                                                                                                            ErrorUtils
                                                                                                            ParameterChecker
                                                                                                            SwitchBotBLE
                                                                                                            SwitchbotDevice
                                                                                                            SwitchBotOpenAPI
                                                                                                            ValidationUtils
                                                                                                            WoAirPurifier
                                                                                                            WoAirPurifierTable
                                                                                                            WoBlindTilt
                                                                                                            WoBulb
                                                                                                            WoCeilingLight
                                                                                                            WoContact
                                                                                                            WoCurtain
                                                                                                            WoHand
                                                                                                            WoHub2
                                                                                                            WoHub3
                                                                                                            WoHumi
                                                                                                            WoHumi2
                                                                                                            WoIOSensorTH
                                                                                                            WoKeypad
                                                                                                            WoLeak
                                                                                                            WoPlugMiniJP
                                                                                                            WoPlugMiniUS
                                                                                                            WoPresence
                                                                                                            WoRelaySwitch1
                                                                                                            WoRelaySwitch1PM
                                                                                                            WoRemote
                                                                                                            WoSensorTH
                                                                                                            WoSensorTHPlus
                                                                                                            WoSensorTHPro
                                                                                                            WoSensorTHProCO2
                                                                                                            WoSmartLock
                                                                                                            WoSmartLockPro
                                                                                                            WoStrip

                                                                                                            Interfaces

                                                                                                            AdvertisementData
                                                                                                            body
                                                                                                            bodyChange
                                                                                                            Chars
                                                                                                            ColorLightServiceDataBase
                                                                                                            deleteWebhookResponse
                                                                                                            device
                                                                                                            deviceList
                                                                                                            devices
                                                                                                            deviceStatus
                                                                                                            deviceStatusRequest
                                                                                                            deviceWebhook
                                                                                                            deviceWebhookContext
                                                                                                            ErrorObject
                                                                                                            infraredRemoteList
                                                                                                            irdevice
                                                                                                            LockBaseServiceData
                                                                                                            NobleTypes
                                                                                                            Params
                                                                                                            PlugMiniServiceDataBase
                                                                                                            pushRequest
                                                                                                            pushResponse
                                                                                                            pushResponseBody
                                                                                                            queryWebhookResponse
                                                                                                            Rule
                                                                                                            ServiceData
                                                                                                            setupWebhookResponse
                                                                                                            SwitchBotBLEDevice
                                                                                                            SwitchBotScanner
                                                                                                            TemperatureServiceDataBase
                                                                                                            updateWebhookResponse
                                                                                                            WebhookDetail
                                                                                                            webhookRequest

                                                                                                            Type Aliases

                                                                                                            airPurifier
                                                                                                            airPurifierPM25WebhookContext
                                                                                                            airPurifierServiceData
                                                                                                            airPurifierStatus
                                                                                                            airPurifierTable
                                                                                                            airPurifierTablePM25WebhookContext
                                                                                                            airPurifierTableServiceData
                                                                                                            airPurifierTableStatus
                                                                                                            airPurifierTableVOC
                                                                                                            airPurifierTableVOCStatus
                                                                                                            airPurifierTableVOCWebhookContext
                                                                                                            airPurifierTableWebhookContext
                                                                                                            airPurifierVOC
                                                                                                            airPurifierVOCStatus
                                                                                                            airPurifierVOCWebhookContext
                                                                                                            airPurifierWebhookContext
                                                                                                            batteryCirculatorFan
                                                                                                            batteryCirculatorFanServiceData
                                                                                                            batteryCirculatorFanStatus
                                                                                                            batteryCirculatorFanWebhookContext
                                                                                                            BLEDeviceServiceData
                                                                                                            blindTilt
                                                                                                            blindTiltServiceData
                                                                                                            blindTiltStatus
                                                                                                            blindTiltWebhookContext
                                                                                                            bot
                                                                                                            botServiceData
                                                                                                            botStatus
                                                                                                            botWebhookContext
                                                                                                            ceilingLight
                                                                                                            ceilingLightPro
                                                                                                            ceilingLightProServiceData
                                                                                                            ceilingLightProStatus
                                                                                                            ceilingLightProWebhookContext
                                                                                                            ceilingLightServiceData
                                                                                                            ceilingLightStatus
                                                                                                            ceilingLightWebhookContext
                                                                                                            circulatorFanStatus
                                                                                                            circulatorFanWebhookContext
                                                                                                            colorBulb
                                                                                                            colorBulbServiceData
                                                                                                            colorBulbStatus
                                                                                                            colorBulbWebhookContext
                                                                                                            commandType
                                                                                                            contactSensor
                                                                                                            contactSensorServiceData
                                                                                                            contactSensorStatus
                                                                                                            contactSensorWebhookContext
                                                                                                            curtain
                                                                                                            curtain3
                                                                                                            curtain3ServiceData
                                                                                                            curtain3WebhookContext
                                                                                                            curtainServiceData
                                                                                                            curtainStatus
                                                                                                            curtainWebhookContext
                                                                                                            floorCleaningRobotS10
                                                                                                            floorCleaningRobotS10Status
                                                                                                            floorCleaningRobotS10WebhookContext
                                                                                                            hub2
                                                                                                            hub2ServiceData
                                                                                                            hub2Status
                                                                                                            hub2WebhookContext
                                                                                                            hub3ServiceData
                                                                                                            humidifier
                                                                                                            humidifier2ServiceData
                                                                                                            humidifier2Status
                                                                                                            humidifier2WebhookContext
                                                                                                            humidifierServiceData
                                                                                                            humidifierStatus
                                                                                                            humidifierWebhookContext
                                                                                                            IndoorCam
                                                                                                            indoorCameraWebhookContext
                                                                                                            keypad
                                                                                                            keypadDetectorServiceData
                                                                                                            keypadTouch
                                                                                                            keypadTouchWebhookContext
                                                                                                            keypadWebhookContext
                                                                                                            lock
                                                                                                            lockPro
                                                                                                            lockProServiceData
                                                                                                            lockProStatus
                                                                                                            lockProWebhookContext
                                                                                                            lockServiceData
                                                                                                            lockStatus
                                                                                                            lockWebhookContext
                                                                                                            MacAddress
                                                                                                            meter
                                                                                                            meterPlus
                                                                                                            meterPlusServiceData
                                                                                                            meterPlusStatus
                                                                                                            meterPlusWebhookContext
                                                                                                            meterPro
                                                                                                            meterProCO2ServiceData
                                                                                                            meterProCO2Status
                                                                                                            meterProCO2WebhookContext
                                                                                                            meterProServiceData
                                                                                                            meterProStatus
                                                                                                            meterProWebhookContext
                                                                                                            meterServiceData
                                                                                                            meterStatus
                                                                                                            meterWebhookContext
                                                                                                            motionSensor
                                                                                                            motionSensorServiceData
                                                                                                            motionSensorStatus
                                                                                                            motionSensorWebhookContext
                                                                                                            onadvertisement
                                                                                                            ondiscover
                                                                                                            outdoorMeter
                                                                                                            outdoorMeterServiceData
                                                                                                            outdoorMeterStatus
                                                                                                            outdoorMeterWebhookContext
                                                                                                            pantiltCam
                                                                                                            pantiltCam2k
                                                                                                            panTiltCamWebhookContext
                                                                                                            plug
                                                                                                            plugMini
                                                                                                            plugMiniJPServiceData
                                                                                                            plugMiniJPWebhookContext
                                                                                                            plugMiniStatus
                                                                                                            plugMiniUSServiceData
                                                                                                            plugMiniUSWebhookContext
                                                                                                            plugStatus
                                                                                                            plugWebhookContext
                                                                                                            relaySwitch1Context
                                                                                                            relaySwitch1PMContext
                                                                                                            relaySwitch1PMServiceData
                                                                                                            relaySwitch1PMStatus
                                                                                                            relaySwitch1ServiceData
                                                                                                            relaySwitch1Status
                                                                                                            remote
                                                                                                            remoteServiceData
                                                                                                            robotVacuumCleanerS1
                                                                                                            robotVacuumCleanerS1Plus
                                                                                                            robotVacuumCleanerS1PlusStatus
                                                                                                            robotVacuumCleanerS1PlusWebhookContext
                                                                                                            robotVacuumCleanerS1Status
                                                                                                            robotVacuumCleanerS1WebhookContext
                                                                                                            robotVacuumCleanerServiceData
                                                                                                            stripLight
                                                                                                            stripLightServiceData
                                                                                                            stripLightStatus
                                                                                                            stripLightWebhookContext
                                                                                                            waterLeakDetector
                                                                                                            waterLeakDetectorServiceData
                                                                                                            waterLeakDetectorStatus
                                                                                                            waterLeakDetectorWebhookContext

                                                                                                            Variables

                                                                                                            parameterChecker
                                                                                                            urls

                                                                                                            Functions

                                                                                                            updateBaseURL
                                                                                                            diff --git a/docs/types/BLEDeviceServiceData.html b/docs/types/BLEDeviceServiceData.html new file mode 100644 index 00000000..d1e53334 --- /dev/null +++ b/docs/types/BLEDeviceServiceData.html @@ -0,0 +1 @@ +BLEDeviceServiceData | node-switchbot
                                                                                                            node-switchbot
                                                                                                              Preparing search index...

                                                                                                              Type Alias BLEDeviceServiceData

                                                                                                              BLEDeviceServiceData:
                                                                                                                  | airPurifierServiceData
                                                                                                                  | airPurifierTableServiceData
                                                                                                                  | batteryCirculatorFanServiceData
                                                                                                                  | blindTiltServiceData
                                                                                                                  | botServiceData
                                                                                                                  | ceilingLightServiceData
                                                                                                                  | ceilingLightProServiceData
                                                                                                                  | colorBulbServiceData
                                                                                                                  | contactSensorServiceData
                                                                                                                  | curtain3ServiceData
                                                                                                                  | curtainServiceData
                                                                                                                  | hub2ServiceData
                                                                                                                  | hub3ServiceData
                                                                                                                  | keypadDetectorServiceData
                                                                                                                  | lockProServiceData
                                                                                                                  | lockServiceData
                                                                                                                  | meterPlusServiceData
                                                                                                                  | meterProCO2ServiceData
                                                                                                                  | meterProServiceData
                                                                                                                  | meterServiceData
                                                                                                                  | motionSensorServiceData
                                                                                                                  | outdoorMeterServiceData
                                                                                                                  | plugMiniJPServiceData
                                                                                                                  | plugMiniUSServiceData
                                                                                                                  | relaySwitch1PMServiceData
                                                                                                                  | relaySwitch1ServiceData
                                                                                                                  | remoteServiceData
                                                                                                                  | robotVacuumCleanerServiceData
                                                                                                                  | stripLightServiceData
                                                                                                                  | waterLeakDetectorServiceData
                                                                                                                  | humidifier2ServiceData
                                                                                                                  | humidifierServiceData
                                                                                                              diff --git a/docs/types/CommandType.html b/docs/types/CommandType.html new file mode 100644 index 00000000..f6d5b4d5 --- /dev/null +++ b/docs/types/CommandType.html @@ -0,0 +1,2 @@ +commandType | node-switchbot
                                                                                                              node-switchbot
                                                                                                                Preparing search index...

                                                                                                                Type Alias commandType

                                                                                                                commandType: "command" | "customize"

                                                                                                                Allowed command types for device control.

                                                                                                                +
                                                                                                                diff --git a/docs/types/MacAddress.html b/docs/types/MacAddress.html index a24f0658..73587243 100644 --- a/docs/types/MacAddress.html +++ b/docs/types/MacAddress.html @@ -1 +1 @@ -MacAddress | node-switchbot

                                                                                                                Type Alias MacAddress

                                                                                                                MacAddress: string
                                                                                                                +MacAddress | node-switchbot
                                                                                                                node-switchbot
                                                                                                                  Preparing search index...

                                                                                                                  Type Alias MacAddress

                                                                                                                  MacAddress: string
                                                                                                                  diff --git a/docs/types/airPurifier.html b/docs/types/airPurifier.html new file mode 100644 index 00000000..0b9522c2 --- /dev/null +++ b/docs/types/airPurifier.html @@ -0,0 +1 @@ +airPurifier | node-switchbot
                                                                                                                  node-switchbot
                                                                                                                    Preparing search index...

                                                                                                                    Type Alias airPurifier

                                                                                                                    airPurifier: device
                                                                                                                    diff --git a/docs/types/airPurifierPM25WebhookContext.html b/docs/types/airPurifierPM25WebhookContext.html new file mode 100644 index 00000000..c379793f --- /dev/null +++ b/docs/types/airPurifierPM25WebhookContext.html @@ -0,0 +1 @@ +airPurifierPM25WebhookContext | node-switchbot
                                                                                                                    node-switchbot
                                                                                                                      Preparing search index...

                                                                                                                      Type Alias airPurifierPM25WebhookContext

                                                                                                                      airPurifierPM25WebhookContext: deviceWebhookContext & {
                                                                                                                          childLock: number;
                                                                                                                          mode: number;
                                                                                                                          power: string;
                                                                                                                      }
                                                                                                                      diff --git a/docs/types/airPurifierServiceData.html b/docs/types/airPurifierServiceData.html new file mode 100644 index 00000000..6a2dc986 --- /dev/null +++ b/docs/types/airPurifierServiceData.html @@ -0,0 +1 @@ +airPurifierServiceData | node-switchbot
                                                                                                                      node-switchbot
                                                                                                                        Preparing search index...

                                                                                                                        Type Alias airPurifierServiceData

                                                                                                                        airPurifierServiceData: BLEServiceData & {
                                                                                                                            aqi_level: string;
                                                                                                                            child_lock: boolean;
                                                                                                                            err_code: number;
                                                                                                                            filter_element_working_time: number;
                                                                                                                            isAqiValid: boolean;
                                                                                                                            isOn: boolean;
                                                                                                                            mode: string | null;
                                                                                                                            model: AirPurifier;
                                                                                                                            modelFriendlyName: AirPurifier;
                                                                                                                            modelName: AirPurifier;
                                                                                                                            sequence_number: number;
                                                                                                                            speed: number;
                                                                                                                        }
                                                                                                                        diff --git a/docs/types/airPurifierStatus.html b/docs/types/airPurifierStatus.html new file mode 100644 index 00000000..61ebdc4f --- /dev/null +++ b/docs/types/airPurifierStatus.html @@ -0,0 +1 @@ +airPurifierStatus | node-switchbot
                                                                                                                        node-switchbot
                                                                                                                          Preparing search index...

                                                                                                                          Type Alias airPurifierStatus

                                                                                                                          airPurifierStatus: deviceStatus & {
                                                                                                                              childLock: number;
                                                                                                                              mode: number;
                                                                                                                              power: string;
                                                                                                                              version: string;
                                                                                                                          }
                                                                                                                          diff --git a/docs/types/airPurifierTable.html b/docs/types/airPurifierTable.html new file mode 100644 index 00000000..831b3735 --- /dev/null +++ b/docs/types/airPurifierTable.html @@ -0,0 +1 @@ +airPurifierTable | node-switchbot
                                                                                                                          node-switchbot
                                                                                                                            Preparing search index...

                                                                                                                            Type Alias airPurifierTable

                                                                                                                            airPurifierTable: device
                                                                                                                            diff --git a/docs/types/airPurifierTablePM25WebhookContext.html b/docs/types/airPurifierTablePM25WebhookContext.html new file mode 100644 index 00000000..e741d1a5 --- /dev/null +++ b/docs/types/airPurifierTablePM25WebhookContext.html @@ -0,0 +1 @@ +airPurifierTablePM25WebhookContext | node-switchbot
                                                                                                                            node-switchbot
                                                                                                                              Preparing search index...

                                                                                                                              Type Alias airPurifierTablePM25WebhookContext

                                                                                                                              airPurifierTablePM25WebhookContext: deviceWebhookContext & {
                                                                                                                                  childLock: number;
                                                                                                                                  mode: number;
                                                                                                                                  power: string;
                                                                                                                              }
                                                                                                                              diff --git a/docs/types/airPurifierTableServiceData.html b/docs/types/airPurifierTableServiceData.html new file mode 100644 index 00000000..a1d1e23e --- /dev/null +++ b/docs/types/airPurifierTableServiceData.html @@ -0,0 +1 @@ +airPurifierTableServiceData | node-switchbot
                                                                                                                              node-switchbot
                                                                                                                                Preparing search index...

                                                                                                                                Type Alias airPurifierTableServiceData

                                                                                                                                airPurifierTableServiceData: BLEServiceData & {
                                                                                                                                    aqi_level: string;
                                                                                                                                    child_lock: boolean;
                                                                                                                                    err_code: number;
                                                                                                                                    filter_element_working_time: number;
                                                                                                                                    isAqiValid: boolean;
                                                                                                                                    isOn: boolean;
                                                                                                                                    mode: string | null;
                                                                                                                                    model: AirPurifierTable;
                                                                                                                                    modelFriendlyName: AirPurifierTable;
                                                                                                                                    modelName: AirPurifierTable;
                                                                                                                                    sequence_number: number;
                                                                                                                                    speed: number;
                                                                                                                                }
                                                                                                                                diff --git a/docs/types/airPurifierTableStatus.html b/docs/types/airPurifierTableStatus.html new file mode 100644 index 00000000..0e7d1fbc --- /dev/null +++ b/docs/types/airPurifierTableStatus.html @@ -0,0 +1 @@ +airPurifierTableStatus | node-switchbot
                                                                                                                                node-switchbot
                                                                                                                                  Preparing search index...

                                                                                                                                  Type Alias airPurifierTableStatus

                                                                                                                                  airPurifierTableStatus: deviceStatus & {
                                                                                                                                      childLock: number;
                                                                                                                                      mode: number;
                                                                                                                                      power: string;
                                                                                                                                      version: string;
                                                                                                                                  }
                                                                                                                                  diff --git a/docs/types/airPurifierTableVOC.html b/docs/types/airPurifierTableVOC.html new file mode 100644 index 00000000..bb7586b4 --- /dev/null +++ b/docs/types/airPurifierTableVOC.html @@ -0,0 +1 @@ +airPurifierTableVOC | node-switchbot
                                                                                                                                  node-switchbot
                                                                                                                                    Preparing search index...

                                                                                                                                    Type Alias airPurifierTableVOC

                                                                                                                                    airPurifierTableVOC: device
                                                                                                                                    diff --git a/docs/types/airPurifierTableVOCStatus.html b/docs/types/airPurifierTableVOCStatus.html new file mode 100644 index 00000000..a7a6b7b5 --- /dev/null +++ b/docs/types/airPurifierTableVOCStatus.html @@ -0,0 +1 @@ +airPurifierTableVOCStatus | node-switchbot
                                                                                                                                    node-switchbot
                                                                                                                                      Preparing search index...

                                                                                                                                      Type Alias airPurifierTableVOCStatus

                                                                                                                                      airPurifierTableVOCStatus: deviceStatus & {
                                                                                                                                          childLock: number;
                                                                                                                                          mode: number;
                                                                                                                                          power: string;
                                                                                                                                          version: string;
                                                                                                                                      }
                                                                                                                                      diff --git a/docs/types/airPurifierTableVOCWebhookContext.html b/docs/types/airPurifierTableVOCWebhookContext.html new file mode 100644 index 00000000..d847701d --- /dev/null +++ b/docs/types/airPurifierTableVOCWebhookContext.html @@ -0,0 +1 @@ +airPurifierTableVOCWebhookContext | node-switchbot
                                                                                                                                      node-switchbot
                                                                                                                                        Preparing search index...

                                                                                                                                        Type Alias airPurifierTableVOCWebhookContext

                                                                                                                                        airPurifierTableVOCWebhookContext: deviceWebhookContext & {
                                                                                                                                            childLock: number;
                                                                                                                                            mode: number;
                                                                                                                                            power: string;
                                                                                                                                        }
                                                                                                                                        diff --git a/docs/types/airPurifierTableWebhookContext.html b/docs/types/airPurifierTableWebhookContext.html new file mode 100644 index 00000000..8b7bd4d1 --- /dev/null +++ b/docs/types/airPurifierTableWebhookContext.html @@ -0,0 +1 @@ +airPurifierTableWebhookContext | node-switchbot
                                                                                                                                        node-switchbot
                                                                                                                                          Preparing search index...

                                                                                                                                          Type Alias airPurifierTableWebhookContext

                                                                                                                                          airPurifierTableWebhookContext: deviceWebhookContext & {
                                                                                                                                              childLock: number;
                                                                                                                                              mode: number;
                                                                                                                                              power: string;
                                                                                                                                          }
                                                                                                                                          diff --git a/docs/types/airPurifierVOC.html b/docs/types/airPurifierVOC.html new file mode 100644 index 00000000..d697e905 --- /dev/null +++ b/docs/types/airPurifierVOC.html @@ -0,0 +1 @@ +airPurifierVOC | node-switchbot
                                                                                                                                          node-switchbot
                                                                                                                                            Preparing search index...

                                                                                                                                            Type Alias airPurifierVOC

                                                                                                                                            airPurifierVOC: device
                                                                                                                                            diff --git a/docs/types/airPurifierVOCStatus.html b/docs/types/airPurifierVOCStatus.html new file mode 100644 index 00000000..de2944d8 --- /dev/null +++ b/docs/types/airPurifierVOCStatus.html @@ -0,0 +1 @@ +airPurifierVOCStatus | node-switchbot
                                                                                                                                            node-switchbot
                                                                                                                                              Preparing search index...

                                                                                                                                              Type Alias airPurifierVOCStatus

                                                                                                                                              airPurifierVOCStatus: deviceStatus & {
                                                                                                                                                  childLock: number;
                                                                                                                                                  mode: number;
                                                                                                                                                  power: string;
                                                                                                                                                  version: string;
                                                                                                                                              }
                                                                                                                                              diff --git a/docs/types/airPurifierVOCWebhookContext.html b/docs/types/airPurifierVOCWebhookContext.html new file mode 100644 index 00000000..19af6228 --- /dev/null +++ b/docs/types/airPurifierVOCWebhookContext.html @@ -0,0 +1 @@ +airPurifierVOCWebhookContext | node-switchbot
                                                                                                                                              node-switchbot
                                                                                                                                                Preparing search index...

                                                                                                                                                Type Alias airPurifierVOCWebhookContext

                                                                                                                                                airPurifierVOCWebhookContext: deviceWebhookContext & {
                                                                                                                                                    childLock: number;
                                                                                                                                                    mode: number;
                                                                                                                                                    power: string;
                                                                                                                                                }
                                                                                                                                                diff --git a/docs/types/airPurifierWebhookContext.html b/docs/types/airPurifierWebhookContext.html new file mode 100644 index 00000000..0e4beec4 --- /dev/null +++ b/docs/types/airPurifierWebhookContext.html @@ -0,0 +1 @@ +airPurifierWebhookContext | node-switchbot
                                                                                                                                                node-switchbot
                                                                                                                                                  Preparing search index...

                                                                                                                                                  Type Alias airPurifierWebhookContext

                                                                                                                                                  airPurifierWebhookContext: deviceWebhookContext & {
                                                                                                                                                      childLock: number;
                                                                                                                                                      mode: number;
                                                                                                                                                      power: string;
                                                                                                                                                  }
                                                                                                                                                  diff --git a/docs/types/batteryCirculatorFan.html b/docs/types/batteryCirculatorFan.html index 59dc8560..6187933d 100644 --- a/docs/types/batteryCirculatorFan.html +++ b/docs/types/batteryCirculatorFan.html @@ -1 +1 @@ -batteryCirculatorFan | node-switchbot

                                                                                                                                                  Type Alias batteryCirculatorFan

                                                                                                                                                  batteryCirculatorFan: device & {}
                                                                                                                                                  +batteryCirculatorFan | node-switchbot
                                                                                                                                                  node-switchbot
                                                                                                                                                    Preparing search index...

                                                                                                                                                    Type Alias batteryCirculatorFan

                                                                                                                                                    batteryCirculatorFan: device
                                                                                                                                                    diff --git a/docs/types/batteryCirculatorFanServiceData.html b/docs/types/batteryCirculatorFanServiceData.html index 9c53c8c9..c40776fd 100644 --- a/docs/types/batteryCirculatorFanServiceData.html +++ b/docs/types/batteryCirculatorFanServiceData.html @@ -1 +1 @@ -batteryCirculatorFanServiceData | node-switchbot

                                                                                                                                                    Type Alias batteryCirculatorFanServiceData

                                                                                                                                                    batteryCirculatorFanServiceData: serviceData & {
                                                                                                                                                        fanSpeed: number;
                                                                                                                                                        model: Unknown;
                                                                                                                                                        modelFriendlyName: Unknown;
                                                                                                                                                        modelName: Unknown;
                                                                                                                                                        state: string;
                                                                                                                                                    }
                                                                                                                                                    +batteryCirculatorFanServiceData | node-switchbot
                                                                                                                                                    node-switchbot
                                                                                                                                                      Preparing search index...

                                                                                                                                                      Type Alias batteryCirculatorFanServiceData

                                                                                                                                                      batteryCirculatorFanServiceData: BLEServiceData & {
                                                                                                                                                          fanSpeed: number;
                                                                                                                                                          model: Unknown;
                                                                                                                                                          modelFriendlyName: Unknown;
                                                                                                                                                          modelName: Unknown;
                                                                                                                                                          state: string;
                                                                                                                                                      }
                                                                                                                                                      diff --git a/docs/types/batteryCirculatorFanStatus.html b/docs/types/batteryCirculatorFanStatus.html index a68aaa8f..4820de82 100644 --- a/docs/types/batteryCirculatorFanStatus.html +++ b/docs/types/batteryCirculatorFanStatus.html @@ -1 +1 @@ -batteryCirculatorFanStatus | node-switchbot

                                                                                                                                                      Type Alias batteryCirculatorFanStatus

                                                                                                                                                      batteryCirculatorFanStatus: deviceStatus & {
                                                                                                                                                          battery: number;
                                                                                                                                                          chargingStatus: string;
                                                                                                                                                          fanSpeed: number;
                                                                                                                                                          mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                          nightStatus: number;
                                                                                                                                                          oscillation: string;
                                                                                                                                                          power: string;
                                                                                                                                                          version: string;
                                                                                                                                                          verticalOscillation: string;
                                                                                                                                                      }
                                                                                                                                                      +batteryCirculatorFanStatus | node-switchbot
                                                                                                                                                      node-switchbot
                                                                                                                                                        Preparing search index...

                                                                                                                                                        Type Alias batteryCirculatorFanStatus

                                                                                                                                                        batteryCirculatorFanStatus: deviceStatus & {
                                                                                                                                                            battery: number;
                                                                                                                                                            chargingStatus: string;
                                                                                                                                                            fanSpeed: number;
                                                                                                                                                            mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                            nightStatus: number;
                                                                                                                                                            oscillation: string;
                                                                                                                                                            power: string;
                                                                                                                                                            version: string;
                                                                                                                                                            verticalOscillation: string;
                                                                                                                                                        }
                                                                                                                                                        diff --git a/docs/types/batteryCirculatorFanWebhookContext.html b/docs/types/batteryCirculatorFanWebhookContext.html index 9118b7e7..eee595f8 100644 --- a/docs/types/batteryCirculatorFanWebhookContext.html +++ b/docs/types/batteryCirculatorFanWebhookContext.html @@ -1 +1 @@ -batteryCirculatorFanWebhookContext | node-switchbot

                                                                                                                                                        Type Alias batteryCirculatorFanWebhookContext

                                                                                                                                                        batteryCirculatorFanWebhookContext: deviceWebhookContext & {
                                                                                                                                                            battery: number;
                                                                                                                                                            chargingStatus: "charging" | "uncharged";
                                                                                                                                                            fanSpeed: number;
                                                                                                                                                            mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                            nightStatus: "off" | 1 | 2;
                                                                                                                                                            oscillation: "on" | "off";
                                                                                                                                                            powerState: "ON" | "OFF";
                                                                                                                                                            version: string;
                                                                                                                                                            verticalOscillation: "on" | "off";
                                                                                                                                                        }
                                                                                                                                                        +batteryCirculatorFanWebhookContext | node-switchbot
                                                                                                                                                        node-switchbot
                                                                                                                                                          Preparing search index...

                                                                                                                                                          Type Alias batteryCirculatorFanWebhookContext

                                                                                                                                                          batteryCirculatorFanWebhookContext: deviceWebhookContext & {
                                                                                                                                                              battery: number;
                                                                                                                                                              chargingStatus: "charging" | "uncharged";
                                                                                                                                                              fanSpeed: number;
                                                                                                                                                              mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                              nightStatus: "off" | 1 | 2;
                                                                                                                                                              oscillation: "on" | "off";
                                                                                                                                                              powerState: "ON" | "OFF";
                                                                                                                                                              version: string;
                                                                                                                                                              verticalOscillation: "on" | "off";
                                                                                                                                                          }
                                                                                                                                                          diff --git a/docs/types/blindTilt.html b/docs/types/blindTilt.html index ecf0cbff..69b0525c 100644 --- a/docs/types/blindTilt.html +++ b/docs/types/blindTilt.html @@ -1 +1 @@ -blindTilt | node-switchbot

                                                                                                                                                          Type Alias blindTilt

                                                                                                                                                          blindTilt: device & {
                                                                                                                                                              blindTiltDevicesIds: string[];
                                                                                                                                                              calibrate: boolean;
                                                                                                                                                              direction: string;
                                                                                                                                                              group: boolean;
                                                                                                                                                              master: boolean;
                                                                                                                                                              slidePosition: number;
                                                                                                                                                          }
                                                                                                                                                          +blindTilt | node-switchbot
                                                                                                                                                          node-switchbot
                                                                                                                                                            Preparing search index...

                                                                                                                                                            Type Alias blindTilt

                                                                                                                                                            blindTilt: device & {
                                                                                                                                                                blindTiltDevicesIds: string[];
                                                                                                                                                                calibrate: boolean;
                                                                                                                                                                direction: string;
                                                                                                                                                                group: boolean;
                                                                                                                                                                master: boolean;
                                                                                                                                                                slidePosition: number;
                                                                                                                                                            }
                                                                                                                                                            diff --git a/docs/types/blindTiltServiceData.html b/docs/types/blindTiltServiceData.html index 17bde8f4..448aa079 100644 --- a/docs/types/blindTiltServiceData.html +++ b/docs/types/blindTiltServiceData.html @@ -1 +1 @@ -blindTiltServiceData | node-switchbot

                                                                                                                                                            Type Alias blindTiltServiceData

                                                                                                                                                            blindTiltServiceData: serviceData & {
                                                                                                                                                                battery: number;
                                                                                                                                                                calibration: boolean;
                                                                                                                                                                inMotion: boolean;
                                                                                                                                                                lightLevel: number;
                                                                                                                                                                model: BlindTilt;
                                                                                                                                                                modelFriendlyName: BlindTilt;
                                                                                                                                                                modelName: BlindTilt;
                                                                                                                                                                sequenceNumber: number;
                                                                                                                                                                tilt: number;
                                                                                                                                                            }
                                                                                                                                                            +blindTiltServiceData | node-switchbot
                                                                                                                                                            node-switchbot
                                                                                                                                                              Preparing search index...

                                                                                                                                                              Type Alias blindTiltServiceData

                                                                                                                                                              blindTiltServiceData: BLEServiceData & {
                                                                                                                                                                  battery: number;
                                                                                                                                                                  calibration: boolean;
                                                                                                                                                                  inMotion: boolean;
                                                                                                                                                                  lightLevel: number;
                                                                                                                                                                  model: BlindTilt;
                                                                                                                                                                  modelFriendlyName: BlindTilt;
                                                                                                                                                                  modelName: BlindTilt;
                                                                                                                                                                  sequenceNumber: number;
                                                                                                                                                                  tilt: number;
                                                                                                                                                              }
                                                                                                                                                              diff --git a/docs/types/blindTiltStatus.html b/docs/types/blindTiltStatus.html index 7f576c26..90c89501 100644 --- a/docs/types/blindTiltStatus.html +++ b/docs/types/blindTiltStatus.html @@ -1 +1 @@ -blindTiltStatus | node-switchbot

                                                                                                                                                              Type Alias blindTiltStatus

                                                                                                                                                              blindTiltStatus: deviceStatus & {
                                                                                                                                                                  battery: number;
                                                                                                                                                                  calibrate: boolean;
                                                                                                                                                                  direction: string;
                                                                                                                                                                  lightLevel?: "bright" | "dim";
                                                                                                                                                                  slidePosition: string;
                                                                                                                                                              }
                                                                                                                                                              +blindTiltStatus | node-switchbot
                                                                                                                                                              node-switchbot
                                                                                                                                                                Preparing search index...

                                                                                                                                                                Type Alias blindTiltStatus

                                                                                                                                                                blindTiltStatus: deviceStatus & {
                                                                                                                                                                    battery: number;
                                                                                                                                                                    calibrate: boolean;
                                                                                                                                                                    direction: string;
                                                                                                                                                                    lightLevel?: "bright" | "dim";
                                                                                                                                                                    slidePosition: string;
                                                                                                                                                                }
                                                                                                                                                                diff --git a/docs/types/blindTiltWebhookContext.html b/docs/types/blindTiltWebhookContext.html index 06e37dbf..7cd073e6 100644 --- a/docs/types/blindTiltWebhookContext.html +++ b/docs/types/blindTiltWebhookContext.html @@ -1 +1 @@ -blindTiltWebhookContext | node-switchbot

                                                                                                                                                                Type Alias blindTiltWebhookContext

                                                                                                                                                                blindTiltWebhookContext: deviceWebhookContext & {
                                                                                                                                                                    battery: number;
                                                                                                                                                                    calibrate: boolean;
                                                                                                                                                                    direction: string;
                                                                                                                                                                    group: boolean;
                                                                                                                                                                    slidePosition: number;
                                                                                                                                                                    version: string;
                                                                                                                                                                }
                                                                                                                                                                +blindTiltWebhookContext | node-switchbot
                                                                                                                                                                node-switchbot
                                                                                                                                                                  Preparing search index...

                                                                                                                                                                  Type Alias blindTiltWebhookContext

                                                                                                                                                                  blindTiltWebhookContext: deviceWebhookContext & {
                                                                                                                                                                      battery: number;
                                                                                                                                                                      calibrate: boolean;
                                                                                                                                                                      direction: string;
                                                                                                                                                                      group: boolean;
                                                                                                                                                                      slidePosition: number;
                                                                                                                                                                      version: string;
                                                                                                                                                                  }
                                                                                                                                                                  diff --git a/docs/types/bot.html b/docs/types/bot.html index 467010e6..076d8404 100644 --- a/docs/types/bot.html +++ b/docs/types/bot.html @@ -1 +1 @@ -bot | node-switchbot

                                                                                                                                                                  Type Alias bot

                                                                                                                                                                  bot: device & {}
                                                                                                                                                                  +bot | node-switchbot
                                                                                                                                                                  node-switchbot
                                                                                                                                                                    Preparing search index...

                                                                                                                                                                    Type Alias bot

                                                                                                                                                                    bot: device
                                                                                                                                                                    diff --git a/docs/types/botServiceData.html b/docs/types/botServiceData.html index a196e311..dcf9d07d 100644 --- a/docs/types/botServiceData.html +++ b/docs/types/botServiceData.html @@ -1 +1 @@ -botServiceData | node-switchbot

                                                                                                                                                                    Type Alias botServiceData

                                                                                                                                                                    botServiceData: serviceData & {
                                                                                                                                                                        battery: number;
                                                                                                                                                                        mode: boolean;
                                                                                                                                                                        model: Bot;
                                                                                                                                                                        modelFriendlyName: Bot;
                                                                                                                                                                        modelName: Bot;
                                                                                                                                                                        state: boolean;
                                                                                                                                                                    }
                                                                                                                                                                    +botServiceData | node-switchbot
                                                                                                                                                                    node-switchbot
                                                                                                                                                                      Preparing search index...

                                                                                                                                                                      Type Alias botServiceData

                                                                                                                                                                      botServiceData: BLEServiceData & {
                                                                                                                                                                          battery: number;
                                                                                                                                                                          mode: boolean;
                                                                                                                                                                          model: Bot;
                                                                                                                                                                          modelFriendlyName: Bot;
                                                                                                                                                                          modelName: Bot;
                                                                                                                                                                          state: boolean;
                                                                                                                                                                      }
                                                                                                                                                                      diff --git a/docs/types/botStatus.html b/docs/types/botStatus.html index 914be20b..a0fc0342 100644 --- a/docs/types/botStatus.html +++ b/docs/types/botStatus.html @@ -1 +1 @@ -botStatus | node-switchbot

                                                                                                                                                                      Type Alias botStatus

                                                                                                                                                                      botStatus: deviceStatus & {
                                                                                                                                                                          battery: number;
                                                                                                                                                                          mode: "pressMode" | "switchMode" | "customizeMode";
                                                                                                                                                                          power: string;
                                                                                                                                                                      }
                                                                                                                                                                      +botStatus | node-switchbot
                                                                                                                                                                      node-switchbot
                                                                                                                                                                        Preparing search index...

                                                                                                                                                                        Type Alias botStatus

                                                                                                                                                                        botStatus: deviceStatus & {
                                                                                                                                                                            battery: number;
                                                                                                                                                                            mode: "pressMode" | "switchMode" | "customizeMode";
                                                                                                                                                                            power: string;
                                                                                                                                                                        }
                                                                                                                                                                        diff --git a/docs/types/botWebhookContext.html b/docs/types/botWebhookContext.html index f537bac4..4885e9c4 100644 --- a/docs/types/botWebhookContext.html +++ b/docs/types/botWebhookContext.html @@ -1 +1 @@ -botWebhookContext | node-switchbot

                                                                                                                                                                        Type Alias botWebhookContext

                                                                                                                                                                        botWebhookContext: deviceWebhookContext & {
                                                                                                                                                                            battery: number;
                                                                                                                                                                            deviceMode: "pressMode" | "switchMode" | "customizeMode";
                                                                                                                                                                            power: string;
                                                                                                                                                                        }
                                                                                                                                                                        +botWebhookContext | node-switchbot
                                                                                                                                                                        node-switchbot
                                                                                                                                                                          Preparing search index...

                                                                                                                                                                          Type Alias botWebhookContext

                                                                                                                                                                          botWebhookContext: deviceWebhookContext & {
                                                                                                                                                                              battery: number;
                                                                                                                                                                              deviceMode: "pressMode" | "switchMode" | "customizeMode";
                                                                                                                                                                              power: string;
                                                                                                                                                                          }
                                                                                                                                                                          diff --git a/docs/types/ceilingLight.html b/docs/types/ceilingLight.html index 59b677db..5fcabef7 100644 --- a/docs/types/ceilingLight.html +++ b/docs/types/ceilingLight.html @@ -1 +1 @@ -ceilingLight | node-switchbot

                                                                                                                                                                          Type Alias ceilingLight

                                                                                                                                                                          ceilingLight: device & {}
                                                                                                                                                                          +ceilingLight | node-switchbot
                                                                                                                                                                          node-switchbot
                                                                                                                                                                            Preparing search index...

                                                                                                                                                                            Type Alias ceilingLight

                                                                                                                                                                            ceilingLight: device
                                                                                                                                                                            diff --git a/docs/types/ceilingLightPro.html b/docs/types/ceilingLightPro.html index af8b8ae2..5e710b22 100644 --- a/docs/types/ceilingLightPro.html +++ b/docs/types/ceilingLightPro.html @@ -1 +1 @@ -ceilingLightPro | node-switchbot

                                                                                                                                                                            Type Alias ceilingLightPro

                                                                                                                                                                            ceilingLightPro: device & {}
                                                                                                                                                                            +ceilingLightPro | node-switchbot
                                                                                                                                                                            node-switchbot
                                                                                                                                                                              Preparing search index...

                                                                                                                                                                              Type Alias ceilingLightPro

                                                                                                                                                                              ceilingLightPro: device
                                                                                                                                                                              diff --git a/docs/types/ceilingLightProServiceData.html b/docs/types/ceilingLightProServiceData.html index 546f567b..d25e3e57 100644 --- a/docs/types/ceilingLightProServiceData.html +++ b/docs/types/ceilingLightProServiceData.html @@ -1 +1 @@ -ceilingLightProServiceData | node-switchbot

                                                                                                                                                                              Type Alias ceilingLightProServiceData

                                                                                                                                                                              ceilingLightProServiceData: serviceData & {
                                                                                                                                                                                  blue: number;
                                                                                                                                                                                  brightness: number;
                                                                                                                                                                                  color_mode: number;
                                                                                                                                                                                  color_temperature: number;
                                                                                                                                                                                  delay: number;
                                                                                                                                                                                  green: number;
                                                                                                                                                                                  loop_index: number;
                                                                                                                                                                                  model: CeilingLightPro;
                                                                                                                                                                                  modelFriendlyName: CeilingLightPro;
                                                                                                                                                                                  modelName: CeilingLightPro;
                                                                                                                                                                                  power: boolean;
                                                                                                                                                                                  preset: number;
                                                                                                                                                                                  red: number;
                                                                                                                                                                                  speed: number;
                                                                                                                                                                                  state: boolean;
                                                                                                                                                                              }
                                                                                                                                                                              +ceilingLightProServiceData | node-switchbot
                                                                                                                                                                              node-switchbot
                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                Type Alias ceilingLightProServiceData

                                                                                                                                                                                ceilingLightProServiceData: BLEServiceData & {
                                                                                                                                                                                    blue: number;
                                                                                                                                                                                    brightness: number;
                                                                                                                                                                                    color_mode: number;
                                                                                                                                                                                    color_temperature: number;
                                                                                                                                                                                    delay: number;
                                                                                                                                                                                    green: number;
                                                                                                                                                                                    loop_index: number;
                                                                                                                                                                                    model: CeilingLightPro;
                                                                                                                                                                                    modelFriendlyName: CeilingLightPro;
                                                                                                                                                                                    modelName: CeilingLightPro;
                                                                                                                                                                                    power: boolean;
                                                                                                                                                                                    preset: number;
                                                                                                                                                                                    red: number;
                                                                                                                                                                                    speed: number;
                                                                                                                                                                                    state: boolean;
                                                                                                                                                                                }
                                                                                                                                                                                diff --git a/docs/types/ceilingLightProStatus.html b/docs/types/ceilingLightProStatus.html index 80813737..8e2d7e2d 100644 --- a/docs/types/ceilingLightProStatus.html +++ b/docs/types/ceilingLightProStatus.html @@ -1 +1 @@ -ceilingLightProStatus | node-switchbot

                                                                                                                                                                                Type Alias ceilingLightProStatus

                                                                                                                                                                                ceilingLightProStatus: deviceStatus & {
                                                                                                                                                                                    brightness: number;
                                                                                                                                                                                    colorTemperature: number;
                                                                                                                                                                                    power: boolean;
                                                                                                                                                                                }
                                                                                                                                                                                +ceilingLightProStatus | node-switchbot
                                                                                                                                                                                node-switchbot
                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                  Type Alias ceilingLightProStatus

                                                                                                                                                                                  ceilingLightProStatus: deviceStatus & {
                                                                                                                                                                                      brightness: number;
                                                                                                                                                                                      colorTemperature: number;
                                                                                                                                                                                      power: boolean;
                                                                                                                                                                                  }
                                                                                                                                                                                  diff --git a/docs/types/ceilingLightProWebhookContext.html b/docs/types/ceilingLightProWebhookContext.html index 9bd2bb83..7f683ff2 100644 --- a/docs/types/ceilingLightProWebhookContext.html +++ b/docs/types/ceilingLightProWebhookContext.html @@ -1 +1 @@ -ceilingLightProWebhookContext | node-switchbot

                                                                                                                                                                                  Type Alias ceilingLightProWebhookContext

                                                                                                                                                                                  ceilingLightProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                      brightness: number;
                                                                                                                                                                                      colorTemperature: number;
                                                                                                                                                                                      powerState: "ON" | "OFF";
                                                                                                                                                                                  }
                                                                                                                                                                                  +ceilingLightProWebhookContext | node-switchbot
                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                    Type Alias ceilingLightProWebhookContext

                                                                                                                                                                                    ceilingLightProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                        brightness: number;
                                                                                                                                                                                        colorTemperature: number;
                                                                                                                                                                                        powerState: "ON" | "OFF";
                                                                                                                                                                                    }
                                                                                                                                                                                    diff --git a/docs/types/ceilingLightServiceData.html b/docs/types/ceilingLightServiceData.html index 6e49987b..db992e46 100644 --- a/docs/types/ceilingLightServiceData.html +++ b/docs/types/ceilingLightServiceData.html @@ -1 +1 @@ -ceilingLightServiceData | node-switchbot

                                                                                                                                                                                    Type Alias ceilingLightServiceData

                                                                                                                                                                                    ceilingLightServiceData: serviceData & {
                                                                                                                                                                                        blue: number;
                                                                                                                                                                                        brightness: number;
                                                                                                                                                                                        color_mode: number;
                                                                                                                                                                                        color_temperature: number;
                                                                                                                                                                                        delay: number;
                                                                                                                                                                                        green: number;
                                                                                                                                                                                        loop_index: number;
                                                                                                                                                                                        model: CeilingLight;
                                                                                                                                                                                        modelFriendlyName: CeilingLight;
                                                                                                                                                                                        modelName: CeilingLight;
                                                                                                                                                                                        power: boolean;
                                                                                                                                                                                        preset: number;
                                                                                                                                                                                        red: number;
                                                                                                                                                                                        speed: number;
                                                                                                                                                                                        state: boolean;
                                                                                                                                                                                    }
                                                                                                                                                                                    +ceilingLightServiceData | node-switchbot
                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                      Type Alias ceilingLightServiceData

                                                                                                                                                                                      ceilingLightServiceData: BLEServiceData & {
                                                                                                                                                                                          blue: number;
                                                                                                                                                                                          brightness: number;
                                                                                                                                                                                          color_mode: number;
                                                                                                                                                                                          color_temperature: number;
                                                                                                                                                                                          delay: number;
                                                                                                                                                                                          green: number;
                                                                                                                                                                                          loop_index: number;
                                                                                                                                                                                          model: CeilingLight;
                                                                                                                                                                                          modelFriendlyName: CeilingLight;
                                                                                                                                                                                          modelName: CeilingLight;
                                                                                                                                                                                          power: boolean;
                                                                                                                                                                                          preset: number;
                                                                                                                                                                                          red: number;
                                                                                                                                                                                          speed: number;
                                                                                                                                                                                          state: boolean;
                                                                                                                                                                                      }
                                                                                                                                                                                      diff --git a/docs/types/ceilingLightStatus.html b/docs/types/ceilingLightStatus.html index 6a549a73..b2a79efb 100644 --- a/docs/types/ceilingLightStatus.html +++ b/docs/types/ceilingLightStatus.html @@ -1 +1 @@ -ceilingLightStatus | node-switchbot

                                                                                                                                                                                      Type Alias ceilingLightStatus

                                                                                                                                                                                      ceilingLightStatus: deviceStatus & {
                                                                                                                                                                                          brightness: number;
                                                                                                                                                                                          colorTemperature: number;
                                                                                                                                                                                          power: boolean;
                                                                                                                                                                                      }
                                                                                                                                                                                      +ceilingLightStatus | node-switchbot
                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                        Type Alias ceilingLightStatus

                                                                                                                                                                                        ceilingLightStatus: deviceStatus & {
                                                                                                                                                                                            brightness: number;
                                                                                                                                                                                            colorTemperature: number;
                                                                                                                                                                                            power: boolean;
                                                                                                                                                                                        }
                                                                                                                                                                                        diff --git a/docs/types/ceilingLightWebhookContext.html b/docs/types/ceilingLightWebhookContext.html index 3740b02a..90637276 100644 --- a/docs/types/ceilingLightWebhookContext.html +++ b/docs/types/ceilingLightWebhookContext.html @@ -1 +1 @@ -ceilingLightWebhookContext | node-switchbot

                                                                                                                                                                                        Type Alias ceilingLightWebhookContext

                                                                                                                                                                                        ceilingLightWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                            brightness: number;
                                                                                                                                                                                            colorTemperature: number;
                                                                                                                                                                                            powerState: "ON" | "OFF";
                                                                                                                                                                                        }
                                                                                                                                                                                        +ceilingLightWebhookContext | node-switchbot
                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                          Type Alias ceilingLightWebhookContext

                                                                                                                                                                                          ceilingLightWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                              brightness: number;
                                                                                                                                                                                              colorTemperature: number;
                                                                                                                                                                                              powerState: "ON" | "OFF";
                                                                                                                                                                                          }
                                                                                                                                                                                          diff --git a/docs/types/circulatorFanStatus.html b/docs/types/circulatorFanStatus.html index afa58eca..663eff1d 100644 --- a/docs/types/circulatorFanStatus.html +++ b/docs/types/circulatorFanStatus.html @@ -1 +1 @@ -circulatorFanStatus | node-switchbot

                                                                                                                                                                                          Type Alias circulatorFanStatus

                                                                                                                                                                                          circulatorFanStatus: deviceStatus & {
                                                                                                                                                                                              fanSpeed: number;
                                                                                                                                                                                              mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                                                              nightStatus: number;
                                                                                                                                                                                              oscillation: string;
                                                                                                                                                                                              power: string;
                                                                                                                                                                                              version: string;
                                                                                                                                                                                              verticalOscillation: string;
                                                                                                                                                                                          }
                                                                                                                                                                                          +circulatorFanStatus | node-switchbot
                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                            Type Alias circulatorFanStatus

                                                                                                                                                                                            circulatorFanStatus: deviceStatus & {
                                                                                                                                                                                                fanSpeed: number;
                                                                                                                                                                                                mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                                                                nightStatus: number;
                                                                                                                                                                                                oscillation: string;
                                                                                                                                                                                                power: string;
                                                                                                                                                                                                version: string;
                                                                                                                                                                                                verticalOscillation: string;
                                                                                                                                                                                            }
                                                                                                                                                                                            diff --git a/docs/types/circulatorFanWebhookContext.html b/docs/types/circulatorFanWebhookContext.html index c48c0526..94d12014 100644 --- a/docs/types/circulatorFanWebhookContext.html +++ b/docs/types/circulatorFanWebhookContext.html @@ -1 +1 @@ -circulatorFanWebhookContext | node-switchbot

                                                                                                                                                                                            Type Alias circulatorFanWebhookContext

                                                                                                                                                                                            circulatorFanWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                fanSpeed: number;
                                                                                                                                                                                                mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                                                                nightStatus: "off" | 1 | 2;
                                                                                                                                                                                                oscillation: "on" | "off";
                                                                                                                                                                                                powerState: "ON" | "OFF";
                                                                                                                                                                                                version: string;
                                                                                                                                                                                                verticalOscillation: "on" | "off";
                                                                                                                                                                                            }
                                                                                                                                                                                            +circulatorFanWebhookContext | node-switchbot
                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                              Type Alias circulatorFanWebhookContext

                                                                                                                                                                                              circulatorFanWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                  fanSpeed: number;
                                                                                                                                                                                                  mode: "direct" | "natural" | "sleep" | "baby";
                                                                                                                                                                                                  nightStatus: "off" | 1 | 2;
                                                                                                                                                                                                  oscillation: "on" | "off";
                                                                                                                                                                                                  powerState: "ON" | "OFF";
                                                                                                                                                                                                  version: string;
                                                                                                                                                                                                  verticalOscillation: "on" | "off";
                                                                                                                                                                                              }
                                                                                                                                                                                              diff --git a/docs/types/colorBulb.html b/docs/types/colorBulb.html index 65266f88..d410d00e 100644 --- a/docs/types/colorBulb.html +++ b/docs/types/colorBulb.html @@ -1 +1 @@ -colorBulb | node-switchbot

                                                                                                                                                                                              Type Alias colorBulb

                                                                                                                                                                                              colorBulb: device & {}
                                                                                                                                                                                              +colorBulb | node-switchbot
                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                Type Alias colorBulb

                                                                                                                                                                                                colorBulb: device
                                                                                                                                                                                                diff --git a/docs/types/colorBulbServiceData.html b/docs/types/colorBulbServiceData.html index 6e25646b..f2eefcf4 100644 --- a/docs/types/colorBulbServiceData.html +++ b/docs/types/colorBulbServiceData.html @@ -1 +1 @@ -colorBulbServiceData | node-switchbot

                                                                                                                                                                                                Type Alias colorBulbServiceData

                                                                                                                                                                                                colorBulbServiceData: serviceData & {
                                                                                                                                                                                                    blue: number;
                                                                                                                                                                                                    brightness: number;
                                                                                                                                                                                                    color_mode: number;
                                                                                                                                                                                                    color_temperature: number;
                                                                                                                                                                                                    delay: number;
                                                                                                                                                                                                    green: number;
                                                                                                                                                                                                    loop_index: number;
                                                                                                                                                                                                    model: ColorBulb;
                                                                                                                                                                                                    modelFriendlyName: ColorBulb;
                                                                                                                                                                                                    modelName: ColorBulb;
                                                                                                                                                                                                    power: boolean;
                                                                                                                                                                                                    preset: number;
                                                                                                                                                                                                    red: number;
                                                                                                                                                                                                    speed: number;
                                                                                                                                                                                                    state: boolean;
                                                                                                                                                                                                }
                                                                                                                                                                                                +colorBulbServiceData | node-switchbot
                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                  Type Alias colorBulbServiceData

                                                                                                                                                                                                  colorBulbServiceData: ColorLightServiceDataBase & {
                                                                                                                                                                                                      model: ColorBulb;
                                                                                                                                                                                                      modelFriendlyName: ColorBulb;
                                                                                                                                                                                                      modelName: ColorBulb;
                                                                                                                                                                                                  }
                                                                                                                                                                                                  diff --git a/docs/types/colorBulbStatus.html b/docs/types/colorBulbStatus.html index cf54b614..569bb87e 100644 --- a/docs/types/colorBulbStatus.html +++ b/docs/types/colorBulbStatus.html @@ -1 +1 @@ -colorBulbStatus | node-switchbot

                                                                                                                                                                                                  Type Alias colorBulbStatus

                                                                                                                                                                                                  colorBulbStatus: deviceStatus & {
                                                                                                                                                                                                      brightness: number;
                                                                                                                                                                                                      color: string;
                                                                                                                                                                                                      colorTemperature: number;
                                                                                                                                                                                                      power: string;
                                                                                                                                                                                                  }
                                                                                                                                                                                                  +colorBulbStatus | node-switchbot
                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                    Type Alias colorBulbStatus

                                                                                                                                                                                                    colorBulbStatus: deviceStatus & {
                                                                                                                                                                                                        brightness: number;
                                                                                                                                                                                                        color: string;
                                                                                                                                                                                                        colorTemperature: number;
                                                                                                                                                                                                        power: string;
                                                                                                                                                                                                    }
                                                                                                                                                                                                    diff --git a/docs/types/colorBulbWebhookContext.html b/docs/types/colorBulbWebhookContext.html index bed74f8f..c9f9258d 100644 --- a/docs/types/colorBulbWebhookContext.html +++ b/docs/types/colorBulbWebhookContext.html @@ -1 +1 @@ -colorBulbWebhookContext | node-switchbot

                                                                                                                                                                                                    Type Alias colorBulbWebhookContext

                                                                                                                                                                                                    colorBulbWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                        brightness: number;
                                                                                                                                                                                                        color: string;
                                                                                                                                                                                                        colorTemperature: number;
                                                                                                                                                                                                        powerState: "ON" | "OFF";
                                                                                                                                                                                                    }
                                                                                                                                                                                                    +colorBulbWebhookContext | node-switchbot
                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                      Type Alias colorBulbWebhookContext

                                                                                                                                                                                                      colorBulbWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                          brightness: number;
                                                                                                                                                                                                          color: string;
                                                                                                                                                                                                          colorTemperature: number;
                                                                                                                                                                                                          powerState: "ON" | "OFF";
                                                                                                                                                                                                      }
                                                                                                                                                                                                      diff --git a/docs/types/contactSensor.html b/docs/types/contactSensor.html index 45621b9f..c37d4baa 100644 --- a/docs/types/contactSensor.html +++ b/docs/types/contactSensor.html @@ -1 +1 @@ -contactSensor | node-switchbot

                                                                                                                                                                                                      Type Alias contactSensor

                                                                                                                                                                                                      contactSensor: device & {}
                                                                                                                                                                                                      +contactSensor | node-switchbot
                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                        Type Alias contactSensor

                                                                                                                                                                                                        contactSensor: device
                                                                                                                                                                                                        diff --git a/docs/types/contactSensorServiceData.html b/docs/types/contactSensorServiceData.html index 5c277901..4705a186 100644 --- a/docs/types/contactSensorServiceData.html +++ b/docs/types/contactSensorServiceData.html @@ -1 +1 @@ -contactSensorServiceData | node-switchbot

                                                                                                                                                                                                        Type Alias contactSensorServiceData

                                                                                                                                                                                                        contactSensorServiceData: serviceData & {
                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                            button_count: number;
                                                                                                                                                                                                            contact_open: boolean;
                                                                                                                                                                                                            contact_timeout: boolean;
                                                                                                                                                                                                            doorState: string;
                                                                                                                                                                                                            lightLevel: string;
                                                                                                                                                                                                            model: ContactSensor;
                                                                                                                                                                                                            modelFriendlyName: ContactSensor;
                                                                                                                                                                                                            modelName: ContactSensor;
                                                                                                                                                                                                            movement: boolean;
                                                                                                                                                                                                            tested: boolean;
                                                                                                                                                                                                        }
                                                                                                                                                                                                        +contactSensorServiceData | node-switchbot
                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                          Type Alias contactSensorServiceData

                                                                                                                                                                                                          contactSensorServiceData: BLEServiceData & {
                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                              button_count: number;
                                                                                                                                                                                                              contact_open: boolean;
                                                                                                                                                                                                              contact_timeout: boolean;
                                                                                                                                                                                                              doorState: string;
                                                                                                                                                                                                              lightLevel: string;
                                                                                                                                                                                                              model: ContactSensor;
                                                                                                                                                                                                              modelFriendlyName: ContactSensor;
                                                                                                                                                                                                              modelName: ContactSensor;
                                                                                                                                                                                                              movement: boolean;
                                                                                                                                                                                                              tested: boolean;
                                                                                                                                                                                                          }
                                                                                                                                                                                                          diff --git a/docs/types/contactSensorStatus.html b/docs/types/contactSensorStatus.html index 1a772719..c6464d78 100644 --- a/docs/types/contactSensorStatus.html +++ b/docs/types/contactSensorStatus.html @@ -1 +1 @@ -contactSensorStatus | node-switchbot

                                                                                                                                                                                                          Type Alias contactSensorStatus

                                                                                                                                                                                                          contactSensorStatus: deviceStatus & {
                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                              brightness: "bright" | "dim";
                                                                                                                                                                                                              moveDetected: boolean;
                                                                                                                                                                                                              openState: "open" | "close" | "timeOutNotClose";
                                                                                                                                                                                                          }
                                                                                                                                                                                                          +contactSensorStatus | node-switchbot
                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                            Type Alias contactSensorStatus

                                                                                                                                                                                                            contactSensorStatus: deviceStatus & {
                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                brightness: "bright" | "dim";
                                                                                                                                                                                                                moveDetected: boolean;
                                                                                                                                                                                                                openState: "open" | "close" | "timeOutNotClose";
                                                                                                                                                                                                            }
                                                                                                                                                                                                            diff --git a/docs/types/contactSensorWebhookContext.html b/docs/types/contactSensorWebhookContext.html index eba4215f..dd90dcb7 100644 --- a/docs/types/contactSensorWebhookContext.html +++ b/docs/types/contactSensorWebhookContext.html @@ -1 +1 @@ -contactSensorWebhookContext | node-switchbot

                                                                                                                                                                                                            Type Alias contactSensorWebhookContext

                                                                                                                                                                                                            contactSensorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                brightness: "dim" | "bright";
                                                                                                                                                                                                                detectionState: "NOT_DETECTED" | "DETECTED";
                                                                                                                                                                                                                doorMode: "IN_DOOR" | "OUT_DOOR";
                                                                                                                                                                                                                openState: "open" | "close" | "timeOutNotClose";
                                                                                                                                                                                                            }
                                                                                                                                                                                                            +contactSensorWebhookContext | node-switchbot
                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                              Type Alias contactSensorWebhookContext

                                                                                                                                                                                                              contactSensorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                  brightness: "dim" | "bright";
                                                                                                                                                                                                                  detectionState: "NOT_DETECTED" | "DETECTED";
                                                                                                                                                                                                                  doorMode: "IN_DOOR" | "OUT_DOOR";
                                                                                                                                                                                                                  openState: "open" | "close" | "timeOutNotClose";
                                                                                                                                                                                                              }
                                                                                                                                                                                                              diff --git a/docs/types/curtain.html b/docs/types/curtain.html index c2639afa..1a996fb9 100644 --- a/docs/types/curtain.html +++ b/docs/types/curtain.html @@ -1 +1 @@ -curtain | node-switchbot

                                                                                                                                                                                                              Type Alias curtain

                                                                                                                                                                                                              curtain: device & {
                                                                                                                                                                                                                  calibrate: boolean;
                                                                                                                                                                                                                  curtainDevicesIds: string[];
                                                                                                                                                                                                                  group: boolean;
                                                                                                                                                                                                                  master: boolean;
                                                                                                                                                                                                                  openDirection: string;
                                                                                                                                                                                                              }
                                                                                                                                                                                                              +curtain | node-switchbot
                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                Type Alias curtain

                                                                                                                                                                                                                curtain: device & {
                                                                                                                                                                                                                    calibrate: boolean;
                                                                                                                                                                                                                    curtainDevicesIds: string[];
                                                                                                                                                                                                                    group: boolean;
                                                                                                                                                                                                                    master: boolean;
                                                                                                                                                                                                                    openDirection: string;
                                                                                                                                                                                                                }
                                                                                                                                                                                                                diff --git a/docs/types/curtain3.html b/docs/types/curtain3.html index efba7553..75b84bef 100644 --- a/docs/types/curtain3.html +++ b/docs/types/curtain3.html @@ -1 +1 @@ -curtain3 | node-switchbot

                                                                                                                                                                                                                Type Alias curtain3

                                                                                                                                                                                                                curtain3: device & {
                                                                                                                                                                                                                    calibrate: boolean;
                                                                                                                                                                                                                    curtainDevicesIds: string[];
                                                                                                                                                                                                                    group: boolean;
                                                                                                                                                                                                                    master: boolean;
                                                                                                                                                                                                                    openDirection?: string;
                                                                                                                                                                                                                }
                                                                                                                                                                                                                +curtain3 | node-switchbot
                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                  Type Alias curtain3

                                                                                                                                                                                                                  curtain3: device & {
                                                                                                                                                                                                                      calibrate: boolean;
                                                                                                                                                                                                                      curtainDevicesIds: string[];
                                                                                                                                                                                                                      group: boolean;
                                                                                                                                                                                                                      master: boolean;
                                                                                                                                                                                                                      openDirection?: string;
                                                                                                                                                                                                                  }
                                                                                                                                                                                                                  diff --git a/docs/types/curtain3ServiceData.html b/docs/types/curtain3ServiceData.html index 0c344724..8830daa6 100644 --- a/docs/types/curtain3ServiceData.html +++ b/docs/types/curtain3ServiceData.html @@ -1 +1 @@ -curtain3ServiceData | node-switchbot

                                                                                                                                                                                                                  Type Alias curtain3ServiceData

                                                                                                                                                                                                                  curtain3ServiceData: serviceData & {
                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                      calibration: boolean;
                                                                                                                                                                                                                      deviceChain: number;
                                                                                                                                                                                                                      inMotion: boolean;
                                                                                                                                                                                                                      lightLevel: number;
                                                                                                                                                                                                                      model: Curtain3;
                                                                                                                                                                                                                      modelFriendlyName: Curtain3;
                                                                                                                                                                                                                      modelName: Curtain3;
                                                                                                                                                                                                                      position: number;
                                                                                                                                                                                                                  }
                                                                                                                                                                                                                  +curtain3ServiceData | node-switchbot
                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                    Type Alias curtain3ServiceData

                                                                                                                                                                                                                    curtain3ServiceData: BLEServiceData & {
                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                        calibration: boolean;
                                                                                                                                                                                                                        deviceChain: number;
                                                                                                                                                                                                                        inMotion: boolean;
                                                                                                                                                                                                                        lightLevel: number;
                                                                                                                                                                                                                        model: Curtain3;
                                                                                                                                                                                                                        modelFriendlyName: Curtain3;
                                                                                                                                                                                                                        modelName: Curtain3;
                                                                                                                                                                                                                        position: number;
                                                                                                                                                                                                                    }
                                                                                                                                                                                                                    diff --git a/docs/types/curtain3WebhookContext.html b/docs/types/curtain3WebhookContext.html index 73c9406f..61aadd65 100644 --- a/docs/types/curtain3WebhookContext.html +++ b/docs/types/curtain3WebhookContext.html @@ -1 +1 @@ -curtain3WebhookContext | node-switchbot

                                                                                                                                                                                                                    Type Alias curtain3WebhookContext

                                                                                                                                                                                                                    curtain3WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                        calibrate: boolean;
                                                                                                                                                                                                                        group: boolean;
                                                                                                                                                                                                                        slidePosition: number;
                                                                                                                                                                                                                    }
                                                                                                                                                                                                                    +curtain3WebhookContext | node-switchbot
                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                      Type Alias curtain3WebhookContext

                                                                                                                                                                                                                      curtain3WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                          calibrate: boolean;
                                                                                                                                                                                                                          group: boolean;
                                                                                                                                                                                                                          slidePosition: number;
                                                                                                                                                                                                                      }
                                                                                                                                                                                                                      diff --git a/docs/types/curtainServiceData.html b/docs/types/curtainServiceData.html index df0e5b13..1d7cc4a1 100644 --- a/docs/types/curtainServiceData.html +++ b/docs/types/curtainServiceData.html @@ -1 +1 @@ -curtainServiceData | node-switchbot

                                                                                                                                                                                                                      Type Alias curtainServiceData

                                                                                                                                                                                                                      curtainServiceData: serviceData & {
                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                          calibration: boolean;
                                                                                                                                                                                                                          deviceChain: number;
                                                                                                                                                                                                                          inMotion: boolean;
                                                                                                                                                                                                                          lightLevel: number;
                                                                                                                                                                                                                          model: Curtain;
                                                                                                                                                                                                                          modelFriendlyName: Curtain;
                                                                                                                                                                                                                          modelName: Curtain;
                                                                                                                                                                                                                          position: number;
                                                                                                                                                                                                                      }
                                                                                                                                                                                                                      +curtainServiceData | node-switchbot
                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                        Type Alias curtainServiceData

                                                                                                                                                                                                                        curtainServiceData: BLEServiceData & {
                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                            calibration: boolean;
                                                                                                                                                                                                                            deviceChain: number;
                                                                                                                                                                                                                            inMotion: boolean;
                                                                                                                                                                                                                            lightLevel: number;
                                                                                                                                                                                                                            model: Curtain;
                                                                                                                                                                                                                            modelFriendlyName: Curtain;
                                                                                                                                                                                                                            modelName: Curtain;
                                                                                                                                                                                                                            position: number;
                                                                                                                                                                                                                        }
                                                                                                                                                                                                                        diff --git a/docs/types/curtainStatus.html b/docs/types/curtainStatus.html index 6f42acc6..706862c3 100644 --- a/docs/types/curtainStatus.html +++ b/docs/types/curtainStatus.html @@ -1 +1 @@ -curtainStatus | node-switchbot

                                                                                                                                                                                                                        Type Alias curtainStatus

                                                                                                                                                                                                                        curtainStatus: deviceStatus & {
                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                            calibrate: boolean;
                                                                                                                                                                                                                            group: boolean;
                                                                                                                                                                                                                            lightLevel?: "bright" | "dim";
                                                                                                                                                                                                                            moving: boolean;
                                                                                                                                                                                                                            slidePosition: number;
                                                                                                                                                                                                                        }
                                                                                                                                                                                                                        +curtainStatus | node-switchbot
                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                          Type Alias curtainStatus

                                                                                                                                                                                                                          curtainStatus: deviceStatus & {
                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                              calibrate: boolean;
                                                                                                                                                                                                                              group: boolean;
                                                                                                                                                                                                                              lightLevel?: "bright" | "dim";
                                                                                                                                                                                                                              moving: boolean;
                                                                                                                                                                                                                              slidePosition: number;
                                                                                                                                                                                                                          }
                                                                                                                                                                                                                          diff --git a/docs/types/curtainWebhookContext.html b/docs/types/curtainWebhookContext.html index a8214c90..05cdb235 100644 --- a/docs/types/curtainWebhookContext.html +++ b/docs/types/curtainWebhookContext.html @@ -1 +1 @@ -curtainWebhookContext | node-switchbot

                                                                                                                                                                                                                          Type Alias curtainWebhookContext

                                                                                                                                                                                                                          curtainWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                              calibrate: boolean;
                                                                                                                                                                                                                              group: boolean;
                                                                                                                                                                                                                              slidePosition: number;
                                                                                                                                                                                                                          }
                                                                                                                                                                                                                          +curtainWebhookContext | node-switchbot
                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                            Type Alias curtainWebhookContext

                                                                                                                                                                                                                            curtainWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                calibrate: boolean;
                                                                                                                                                                                                                                group: boolean;
                                                                                                                                                                                                                                slidePosition: number;
                                                                                                                                                                                                                            }
                                                                                                                                                                                                                            diff --git a/docs/types/floorCleaningRobotS10.html b/docs/types/floorCleaningRobotS10.html index 32d5c86a..41845dcf 100644 --- a/docs/types/floorCleaningRobotS10.html +++ b/docs/types/floorCleaningRobotS10.html @@ -1 +1 @@ -floorCleaningRobotS10 | node-switchbot

                                                                                                                                                                                                                            Type Alias floorCleaningRobotS10

                                                                                                                                                                                                                            floorCleaningRobotS10: device & {}
                                                                                                                                                                                                                            +floorCleaningRobotS10 | node-switchbot
                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                              Type Alias floorCleaningRobotS10

                                                                                                                                                                                                                              floorCleaningRobotS10: device
                                                                                                                                                                                                                              diff --git a/docs/types/floorCleaningRobotS10Status.html b/docs/types/floorCleaningRobotS10Status.html index 2e5f6563..326d315c 100644 --- a/docs/types/floorCleaningRobotS10Status.html +++ b/docs/types/floorCleaningRobotS10Status.html @@ -1 +1 @@ -floorCleaningRobotS10Status | node-switchbot

                                                                                                                                                                                                                              Type Alias floorCleaningRobotS10Status

                                                                                                                                                                                                                              floorCleaningRobotS10Status: deviceStatus & {
                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                  onlineStatus: string;
                                                                                                                                                                                                                                  taskType: string;
                                                                                                                                                                                                                                  waterBaseBattery: number;
                                                                                                                                                                                                                                  workingStatus: string;
                                                                                                                                                                                                                              }
                                                                                                                                                                                                                              +floorCleaningRobotS10Status | node-switchbot
                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                Type Alias floorCleaningRobotS10Status

                                                                                                                                                                                                                                floorCleaningRobotS10Status: deviceStatus & {
                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                    onlineStatus: string;
                                                                                                                                                                                                                                    taskType: string;
                                                                                                                                                                                                                                    waterBaseBattery: number;
                                                                                                                                                                                                                                    workingStatus: string;
                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                diff --git a/docs/types/floorCleaningRobotS10WebhookContext.html b/docs/types/floorCleaningRobotS10WebhookContext.html index 1b1e7c75..5bc6cf1d 100644 --- a/docs/types/floorCleaningRobotS10WebhookContext.html +++ b/docs/types/floorCleaningRobotS10WebhookContext.html @@ -1 +1 @@ -floorCleaningRobotS10WebhookContext | node-switchbot

                                                                                                                                                                                                                                Type Alias floorCleaningRobotS10WebhookContext

                                                                                                                                                                                                                                floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                    onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                    taskType:
                                                                                                                                                                                                                                        | "standBy"
                                                                                                                                                                                                                                        | "explore"
                                                                                                                                                                                                                                        | "cleanAll"
                                                                                                                                                                                                                                        | "cleanArea"
                                                                                                                                                                                                                                        | "cleanRoom"
                                                                                                                                                                                                                                        | "fillWater"
                                                                                                                                                                                                                                        | "deepWashing"
                                                                                                                                                                                                                                        | "backToCharge"
                                                                                                                                                                                                                                        | "markingWaterBase"
                                                                                                                                                                                                                                        | "drying"
                                                                                                                                                                                                                                        | "collectDust"
                                                                                                                                                                                                                                        | "remoteControl"
                                                                                                                                                                                                                                        | "cleanWithExplorer"
                                                                                                                                                                                                                                        | "fillWaterForHumi"
                                                                                                                                                                                                                                        | "markingHumi";
                                                                                                                                                                                                                                    waterBaseBattery: number;
                                                                                                                                                                                                                                    workingStatus: | "Standby"
                                                                                                                                                                                                                                    | "Clearing"
                                                                                                                                                                                                                                    | "Paused"
                                                                                                                                                                                                                                    | "GotoChargeBase"
                                                                                                                                                                                                                                    | "Charging"
                                                                                                                                                                                                                                    | "ChargeDone"
                                                                                                                                                                                                                                    | "Dormant"
                                                                                                                                                                                                                                    | "InTrouble"
                                                                                                                                                                                                                                    | "InRemoteControl"
                                                                                                                                                                                                                                    | "InDustCollecting";
                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                +floorCleaningRobotS10WebhookContext | node-switchbot
                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                  Type Alias floorCleaningRobotS10WebhookContext

                                                                                                                                                                                                                                  floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                      onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                      taskType:
                                                                                                                                                                                                                                          | "standBy"
                                                                                                                                                                                                                                          | "explore"
                                                                                                                                                                                                                                          | "cleanAll"
                                                                                                                                                                                                                                          | "cleanArea"
                                                                                                                                                                                                                                          | "cleanRoom"
                                                                                                                                                                                                                                          | "fillWater"
                                                                                                                                                                                                                                          | "deepWashing"
                                                                                                                                                                                                                                          | "backToCharge"
                                                                                                                                                                                                                                          | "markingWaterBase"
                                                                                                                                                                                                                                          | "drying"
                                                                                                                                                                                                                                          | "collectDust"
                                                                                                                                                                                                                                          | "remoteControl"
                                                                                                                                                                                                                                          | "cleanWithExplorer"
                                                                                                                                                                                                                                          | "fillWaterForHumi"
                                                                                                                                                                                                                                          | "markingHumi";
                                                                                                                                                                                                                                      waterBaseBattery: number;
                                                                                                                                                                                                                                      workingStatus: | "Standby"
                                                                                                                                                                                                                                      | "Clearing"
                                                                                                                                                                                                                                      | "Paused"
                                                                                                                                                                                                                                      | "GotoChargeBase"
                                                                                                                                                                                                                                      | "Charging"
                                                                                                                                                                                                                                      | "ChargeDone"
                                                                                                                                                                                                                                      | "Dormant"
                                                                                                                                                                                                                                      | "InTrouble"
                                                                                                                                                                                                                                      | "InRemoteControl"
                                                                                                                                                                                                                                      | "InDustCollecting";
                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                  diff --git a/docs/types/hub2.html b/docs/types/hub2.html index 9f0e6a88..91f6cb6c 100644 --- a/docs/types/hub2.html +++ b/docs/types/hub2.html @@ -1 +1 @@ -hub2 | node-switchbot

                                                                                                                                                                                                                                  Type Alias hub2

                                                                                                                                                                                                                                  hub2: device & {}
                                                                                                                                                                                                                                  +hub2 | node-switchbot
                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                    Type Alias hub2

                                                                                                                                                                                                                                    hub2: device
                                                                                                                                                                                                                                    diff --git a/docs/types/hub2ServiceData.html b/docs/types/hub2ServiceData.html index c3c56591..97bae20a 100644 --- a/docs/types/hub2ServiceData.html +++ b/docs/types/hub2ServiceData.html @@ -1 +1 @@ -hub2ServiceData | node-switchbot

                                                                                                                                                                                                                                    Type Alias hub2ServiceData

                                                                                                                                                                                                                                    hub2ServiceData: serviceData & {
                                                                                                                                                                                                                                        celsius: number;
                                                                                                                                                                                                                                        fahrenheit: number;
                                                                                                                                                                                                                                        fahrenheit_mode: boolean;
                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                        lightLevel: number;
                                                                                                                                                                                                                                        model: Hub2;
                                                                                                                                                                                                                                        modelFriendlyName: Hub2;
                                                                                                                                                                                                                                        modelName: Hub2;
                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                    +hub2ServiceData | node-switchbot
                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                      Type Alias hub2ServiceData

                                                                                                                                                                                                                                      hub2ServiceData: BLEServiceData & {
                                                                                                                                                                                                                                          celsius: number;
                                                                                                                                                                                                                                          fahrenheit: number;
                                                                                                                                                                                                                                          fahrenheit_mode: boolean;
                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                          lightLevel: number;
                                                                                                                                                                                                                                          model: Hub2;
                                                                                                                                                                                                                                          modelFriendlyName: Hub2;
                                                                                                                                                                                                                                          modelName: Hub2;
                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                      diff --git a/docs/types/hub2Status.html b/docs/types/hub2Status.html index 1f95e6ff..547a6584 100644 --- a/docs/types/hub2Status.html +++ b/docs/types/hub2Status.html @@ -1 +1 @@ -hub2Status | node-switchbot

                                                                                                                                                                                                                                      Type Alias hub2Status

                                                                                                                                                                                                                                      hub2Status: deviceStatus & {
                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                          lightLevel: number;
                                                                                                                                                                                                                                          temperature: number;
                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                      +hub2Status | node-switchbot
                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                        Type Alias hub2Status

                                                                                                                                                                                                                                        hub2Status: deviceStatus & {
                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                            lightLevel: number;
                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                        diff --git a/docs/types/hub2WebhookContext.html b/docs/types/hub2WebhookContext.html index 8a2476c8..ee3410d8 100644 --- a/docs/types/hub2WebhookContext.html +++ b/docs/types/hub2WebhookContext.html @@ -1 +1 @@ -hub2WebhookContext | node-switchbot

                                                                                                                                                                                                                                        Type Alias hub2WebhookContext

                                                                                                                                                                                                                                        hub2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                            lightLevel: number;
                                                                                                                                                                                                                                            scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                        +hub2WebhookContext | node-switchbot
                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                          Type Alias hub2WebhookContext

                                                                                                                                                                                                                                          hub2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                              humidity: number;
                                                                                                                                                                                                                                              lightLevel: number;
                                                                                                                                                                                                                                              scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                              temperature: number;
                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                          diff --git a/docs/types/hub3ServiceData.html b/docs/types/hub3ServiceData.html new file mode 100644 index 00000000..a7684244 --- /dev/null +++ b/docs/types/hub3ServiceData.html @@ -0,0 +1 @@ +hub3ServiceData | node-switchbot
                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                            Type Alias hub3ServiceData

                                                                                                                                                                                                                                            hub3ServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                celsius: number;
                                                                                                                                                                                                                                                fahrenheit: number;
                                                                                                                                                                                                                                                fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                humidity: number;
                                                                                                                                                                                                                                                lightLevel: number;
                                                                                                                                                                                                                                                model: Hub3;
                                                                                                                                                                                                                                                modelFriendlyName: Hub3;
                                                                                                                                                                                                                                                modelName: Hub3;
                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                            diff --git a/docs/types/humidifier.html b/docs/types/humidifier.html index 339ee067..8294f3d1 100644 --- a/docs/types/humidifier.html +++ b/docs/types/humidifier.html @@ -1 +1 @@ -humidifier | node-switchbot

                                                                                                                                                                                                                                            Type Alias humidifier

                                                                                                                                                                                                                                            humidifier: device & {}
                                                                                                                                                                                                                                            +humidifier | node-switchbot
                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                              Type Alias humidifier

                                                                                                                                                                                                                                              humidifier: device
                                                                                                                                                                                                                                              diff --git a/docs/types/humidifier2ServiceData.html b/docs/types/humidifier2ServiceData.html index 3ff3c5da..f76ed02b 100644 --- a/docs/types/humidifier2ServiceData.html +++ b/docs/types/humidifier2ServiceData.html @@ -1 +1 @@ -humidifier2ServiceData | node-switchbot

                                                                                                                                                                                                                                              Type Alias humidifier2ServiceData

                                                                                                                                                                                                                                              humidifier2ServiceData: serviceData & {
                                                                                                                                                                                                                                                  autoMode: boolean;
                                                                                                                                                                                                                                                  childLock: boolean;
                                                                                                                                                                                                                                                  filterAlert: boolean;
                                                                                                                                                                                                                                                  filterMissing: boolean;
                                                                                                                                                                                                                                                  filterRunTime: number;
                                                                                                                                                                                                                                                  humidity: number;
                                                                                                                                                                                                                                                  model: Humidifier2;
                                                                                                                                                                                                                                                  modelFriendlyName: Humidifier2;
                                                                                                                                                                                                                                                  modelName: Humidifier2;
                                                                                                                                                                                                                                                  onState: boolean;
                                                                                                                                                                                                                                                  overHumidifyProtection: boolean;
                                                                                                                                                                                                                                                  percentage: number;
                                                                                                                                                                                                                                                  tankRemoved: boolean;
                                                                                                                                                                                                                                                  temperature: number;
                                                                                                                                                                                                                                                  tiltedAlert: boolean;
                                                                                                                                                                                                                                                  waterLevel: number;
                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                              +humidifier2ServiceData | node-switchbot
                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                Type Alias humidifier2ServiceData

                                                                                                                                                                                                                                                humidifier2ServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                    autoMode: boolean;
                                                                                                                                                                                                                                                    childLock: boolean;
                                                                                                                                                                                                                                                    filterAlert: boolean;
                                                                                                                                                                                                                                                    filterMissing: boolean;
                                                                                                                                                                                                                                                    filterRunTime: number;
                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                    model: Humidifier2;
                                                                                                                                                                                                                                                    modelFriendlyName: Humidifier2;
                                                                                                                                                                                                                                                    modelName: Humidifier2;
                                                                                                                                                                                                                                                    onState: boolean;
                                                                                                                                                                                                                                                    overHumidifyProtection: boolean;
                                                                                                                                                                                                                                                    percentage: number;
                                                                                                                                                                                                                                                    tankRemoved: boolean;
                                                                                                                                                                                                                                                    temperature: number;
                                                                                                                                                                                                                                                    tiltedAlert: boolean;
                                                                                                                                                                                                                                                    waterLevel: number;
                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                diff --git a/docs/types/humidifier2Status.html b/docs/types/humidifier2Status.html index 0c23323a..d75f2b16 100644 --- a/docs/types/humidifier2Status.html +++ b/docs/types/humidifier2Status.html @@ -1 +1 @@ -humidifier2Status | node-switchbot

                                                                                                                                                                                                                                                Type Alias humidifier2Status

                                                                                                                                                                                                                                                humidifier2Status: deviceStatus & {
                                                                                                                                                                                                                                                    auto: boolean;
                                                                                                                                                                                                                                                    childLock: boolean;
                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                    lackWater: boolean;
                                                                                                                                                                                                                                                    nebulizationEfficiency: number;
                                                                                                                                                                                                                                                    power: string;
                                                                                                                                                                                                                                                    sound: boolean;
                                                                                                                                                                                                                                                    temperature: number;
                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                +humidifier2Status | node-switchbot
                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                  Type Alias humidifier2Status

                                                                                                                                                                                                                                                  humidifier2Status: deviceStatus & {
                                                                                                                                                                                                                                                      auto: boolean;
                                                                                                                                                                                                                                                      childLock: boolean;
                                                                                                                                                                                                                                                      humidity: number;
                                                                                                                                                                                                                                                      lackWater: boolean;
                                                                                                                                                                                                                                                      nebulizationEfficiency: number;
                                                                                                                                                                                                                                                      power: string;
                                                                                                                                                                                                                                                      sound: boolean;
                                                                                                                                                                                                                                                      temperature: number;
                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                  diff --git a/docs/types/humidifier2WebhookContext.html b/docs/types/humidifier2WebhookContext.html index 6e50b557..bf94c43b 100644 --- a/docs/types/humidifier2WebhookContext.html +++ b/docs/types/humidifier2WebhookContext.html @@ -1 +1 @@ -humidifier2WebhookContext | node-switchbot

                                                                                                                                                                                                                                                  Type Alias humidifier2WebhookContext

                                                                                                                                                                                                                                                  humidifier2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                      humidity: number;
                                                                                                                                                                                                                                                      scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                      temperature: number;
                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                  +humidifier2WebhookContext | node-switchbot
                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                    Type Alias humidifier2WebhookContext

                                                                                                                                                                                                                                                    humidifier2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                        scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                        temperature: number;
                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                    diff --git a/docs/types/humidifierServiceData.html b/docs/types/humidifierServiceData.html index cc2afa74..b15f9ae8 100644 --- a/docs/types/humidifierServiceData.html +++ b/docs/types/humidifierServiceData.html @@ -1 +1 @@ -humidifierServiceData | node-switchbot

                                                                                                                                                                                                                                                    Type Alias humidifierServiceData

                                                                                                                                                                                                                                                    humidifierServiceData: serviceData & {
                                                                                                                                                                                                                                                        autoMode: boolean;
                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                        model: Humidifier;
                                                                                                                                                                                                                                                        modelFriendlyName: Humidifier;
                                                                                                                                                                                                                                                        modelName: Humidifier;
                                                                                                                                                                                                                                                        onState: boolean;
                                                                                                                                                                                                                                                        percentage: number;
                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                    +humidifierServiceData | node-switchbot
                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                      Type Alias humidifierServiceData

                                                                                                                                                                                                                                                      humidifierServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                          autoMode: boolean;
                                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                                          model: Humidifier;
                                                                                                                                                                                                                                                          modelFriendlyName: Humidifier;
                                                                                                                                                                                                                                                          modelName: Humidifier;
                                                                                                                                                                                                                                                          onState: boolean;
                                                                                                                                                                                                                                                          percentage: number;
                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                      diff --git a/docs/types/humidifierStatus.html b/docs/types/humidifierStatus.html index faeb673f..54c56e61 100644 --- a/docs/types/humidifierStatus.html +++ b/docs/types/humidifierStatus.html @@ -1 +1 @@ -humidifierStatus | node-switchbot

                                                                                                                                                                                                                                                      Type Alias humidifierStatus

                                                                                                                                                                                                                                                      humidifierStatus: deviceStatus & {
                                                                                                                                                                                                                                                          auto: boolean;
                                                                                                                                                                                                                                                          childLock: boolean;
                                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                                          lackWater: boolean;
                                                                                                                                                                                                                                                          nebulizationEfficiency: number;
                                                                                                                                                                                                                                                          power: string;
                                                                                                                                                                                                                                                          sound: boolean;
                                                                                                                                                                                                                                                          temperature: number;
                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                      +humidifierStatus | node-switchbot
                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                        Type Alias humidifierStatus

                                                                                                                                                                                                                                                        humidifierStatus: deviceStatus & {
                                                                                                                                                                                                                                                            auto: boolean;
                                                                                                                                                                                                                                                            childLock: boolean;
                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                            lackWater: boolean;
                                                                                                                                                                                                                                                            nebulizationEfficiency: number;
                                                                                                                                                                                                                                                            power: string;
                                                                                                                                                                                                                                                            sound: boolean;
                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                        diff --git a/docs/types/humidifierWebhookContext.html b/docs/types/humidifierWebhookContext.html index dd71481e..44b62bbe 100644 --- a/docs/types/humidifierWebhookContext.html +++ b/docs/types/humidifierWebhookContext.html @@ -1 +1 @@ -humidifierWebhookContext | node-switchbot

                                                                                                                                                                                                                                                        Type Alias humidifierWebhookContext

                                                                                                                                                                                                                                                        humidifierWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                            scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                        +humidifierWebhookContext | node-switchbot
                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                          Type Alias humidifierWebhookContext

                                                                                                                                                                                                                                                          humidifierWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                              humidity: number;
                                                                                                                                                                                                                                                              scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                              temperature: number;
                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                          diff --git a/docs/types/indoorCam.html b/docs/types/indoorCam.html index 3a34af8b..8177f205 100644 --- a/docs/types/indoorCam.html +++ b/docs/types/indoorCam.html @@ -1 +1 @@ -indoorCam | node-switchbot

                                                                                                                                                                                                                                                          Type Alias indoorCam

                                                                                                                                                                                                                                                          indoorCam: device & {}
                                                                                                                                                                                                                                                          +IndoorCam | node-switchbot
                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                            Type Alias IndoorCam

                                                                                                                                                                                                                                                            IndoorCam: device
                                                                                                                                                                                                                                                            diff --git a/docs/types/indoorCameraWebhookContext.html b/docs/types/indoorCameraWebhookContext.html index c5b49c3b..fa9d1b2d 100644 --- a/docs/types/indoorCameraWebhookContext.html +++ b/docs/types/indoorCameraWebhookContext.html @@ -1 +1 @@ -indoorCameraWebhookContext | node-switchbot

                                                                                                                                                                                                                                                            Type Alias indoorCameraWebhookContext

                                                                                                                                                                                                                                                            indoorCameraWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                detectionState: "DETECTED";
                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                            +indoorCameraWebhookContext | node-switchbot
                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                              Type Alias indoorCameraWebhookContext

                                                                                                                                                                                                                                                              indoorCameraWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                  detectionState: "DETECTED";
                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                              diff --git a/docs/types/keypad.html b/docs/types/keypad.html index e46c1a60..be4f1e84 100644 --- a/docs/types/keypad.html +++ b/docs/types/keypad.html @@ -1 +1 @@ -keypad | node-switchbot

                                                                                                                                                                                                                                                              Type Alias keypad

                                                                                                                                                                                                                                                              keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
                                                                                                                                                                                                                                                              +keypad | node-switchbot
                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                Type Alias keypad

                                                                                                                                                                                                                                                                keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
                                                                                                                                                                                                                                                                diff --git a/docs/types/keypadDetectorServiceData.html b/docs/types/keypadDetectorServiceData.html index d77328bf..a2ce976f 100644 --- a/docs/types/keypadDetectorServiceData.html +++ b/docs/types/keypadDetectorServiceData.html @@ -1 +1 @@ -keypadDetectorServiceData | node-switchbot

                                                                                                                                                                                                                                                                Type Alias keypadDetectorServiceData

                                                                                                                                                                                                                                                                keypadDetectorServiceData: serviceData & {
                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                    event: boolean;
                                                                                                                                                                                                                                                                    low_battery: boolean;
                                                                                                                                                                                                                                                                    model: Keypad;
                                                                                                                                                                                                                                                                    modelFriendlyName: Keypad;
                                                                                                                                                                                                                                                                    modelName: Keypad;
                                                                                                                                                                                                                                                                    tampered: boolean;
                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                +keypadDetectorServiceData | node-switchbot
                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                  Type Alias keypadDetectorServiceData

                                                                                                                                                                                                                                                                  keypadDetectorServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                      event: boolean;
                                                                                                                                                                                                                                                                      low_battery: boolean;
                                                                                                                                                                                                                                                                      model: Keypad;
                                                                                                                                                                                                                                                                      modelFriendlyName: Keypad;
                                                                                                                                                                                                                                                                      modelName: Keypad;
                                                                                                                                                                                                                                                                      tampered: boolean;
                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                  diff --git a/docs/types/keypadTouch.html b/docs/types/keypadTouch.html index b2d39879..1f54a5d1 100644 --- a/docs/types/keypadTouch.html +++ b/docs/types/keypadTouch.html @@ -1 +1 @@ -keypadTouch | node-switchbot

                                                                                                                                                                                                                                                                  Type Alias keypadTouch

                                                                                                                                                                                                                                                                  keypadTouch: device & {
                                                                                                                                                                                                                                                                      keyList: keyList;
                                                                                                                                                                                                                                                                      lockDeviceId: string;
                                                                                                                                                                                                                                                                      remoteType: string;
                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                  +keypadTouch | node-switchbot
                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                    Type Alias keypadTouch

                                                                                                                                                                                                                                                                    keypadTouch: device & {
                                                                                                                                                                                                                                                                        keyList: keyList;
                                                                                                                                                                                                                                                                        lockDeviceId: string;
                                                                                                                                                                                                                                                                        remoteType: string;
                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                    diff --git a/docs/types/keypadTouchWebhookContext.html b/docs/types/keypadTouchWebhookContext.html index 106bf1fd..299c602c 100644 --- a/docs/types/keypadTouchWebhookContext.html +++ b/docs/types/keypadTouchWebhookContext.html @@ -1 +1 @@ -keypadTouchWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                    Type Alias keypadTouchWebhookContext

                                                                                                                                                                                                                                                                    keypadTouchWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                        commandId: string;
                                                                                                                                                                                                                                                                        eventName: "createKey" | "deleteKey";
                                                                                                                                                                                                                                                                        result: "success" | "failed" | "timeout";
                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                    +keypadTouchWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                      Type Alias keypadTouchWebhookContext

                                                                                                                                                                                                                                                                      keypadTouchWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                          commandId: string;
                                                                                                                                                                                                                                                                          eventName: "createKey" | "deleteKey";
                                                                                                                                                                                                                                                                          result: "success" | "failed" | "timeout";
                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                      diff --git a/docs/types/keypadWebhookContext.html b/docs/types/keypadWebhookContext.html index 714cdb35..010867c5 100644 --- a/docs/types/keypadWebhookContext.html +++ b/docs/types/keypadWebhookContext.html @@ -1 +1 @@ -keypadWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                      Type Alias keypadWebhookContext

                                                                                                                                                                                                                                                                      keypadWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                          commandId: string;
                                                                                                                                                                                                                                                                          eventName: "createKey" | "deleteKey";
                                                                                                                                                                                                                                                                          result: "success" | "failed" | "timeout";
                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                      +keypadWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                        Type Alias keypadWebhookContext

                                                                                                                                                                                                                                                                        keypadWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                            commandId: string;
                                                                                                                                                                                                                                                                            eventName: "createKey" | "deleteKey";
                                                                                                                                                                                                                                                                            result: "success" | "failed" | "timeout";
                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                        diff --git a/docs/types/lock.html b/docs/types/lock.html index ce823e58..228439ea 100644 --- a/docs/types/lock.html +++ b/docs/types/lock.html @@ -1 +1 @@ -lock | node-switchbot

                                                                                                                                                                                                                                                                        Type Alias lock

                                                                                                                                                                                                                                                                        lock: device & {
                                                                                                                                                                                                                                                                            group: boolean;
                                                                                                                                                                                                                                                                            groupName: string;
                                                                                                                                                                                                                                                                            lockDevicesIds: string[];
                                                                                                                                                                                                                                                                            master: boolean;
                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                        +lock | node-switchbot
                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                          Type Alias lock

                                                                                                                                                                                                                                                                          lock: device & {
                                                                                                                                                                                                                                                                              group: boolean;
                                                                                                                                                                                                                                                                              groupName: string;
                                                                                                                                                                                                                                                                              lockDevicesIds: string[];
                                                                                                                                                                                                                                                                              master: boolean;
                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                          diff --git a/docs/types/lockPro.html b/docs/types/lockPro.html index c7c53d19..94f6704f 100644 --- a/docs/types/lockPro.html +++ b/docs/types/lockPro.html @@ -1 +1 @@ -lockPro | node-switchbot

                                                                                                                                                                                                                                                                          Type Alias lockPro

                                                                                                                                                                                                                                                                          lockPro: device & {
                                                                                                                                                                                                                                                                              group: boolean;
                                                                                                                                                                                                                                                                              groupName: string;
                                                                                                                                                                                                                                                                              lockDevicesIds: string[];
                                                                                                                                                                                                                                                                              master: boolean;
                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                          +lockPro | node-switchbot
                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                            Type Alias lockPro

                                                                                                                                                                                                                                                                            lockPro: device & {
                                                                                                                                                                                                                                                                                group: boolean;
                                                                                                                                                                                                                                                                                groupName: string;
                                                                                                                                                                                                                                                                                lockDevicesIds: string[];
                                                                                                                                                                                                                                                                                master: boolean;
                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                            diff --git a/docs/types/lockProServiceData.html b/docs/types/lockProServiceData.html index 52186c1a..f55b9177 100644 --- a/docs/types/lockProServiceData.html +++ b/docs/types/lockProServiceData.html @@ -1 +1 @@ -lockProServiceData | node-switchbot

                                                                                                                                                                                                                                                                            Type Alias lockProServiceData

                                                                                                                                                                                                                                                                            lockProServiceData: serviceData & {
                                                                                                                                                                                                                                                                                auto_lock_paused: boolean;
                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                calibration: boolean;
                                                                                                                                                                                                                                                                                door_open: boolean;
                                                                                                                                                                                                                                                                                double_lock_mode: boolean;
                                                                                                                                                                                                                                                                                model: LockPro;
                                                                                                                                                                                                                                                                                modelFriendlyName: LockPro;
                                                                                                                                                                                                                                                                                modelName: LockPro;
                                                                                                                                                                                                                                                                                night_latch: boolean;
                                                                                                                                                                                                                                                                                status: string;
                                                                                                                                                                                                                                                                                unclosed_alarm: boolean;
                                                                                                                                                                                                                                                                                unlocked_alarm: boolean;
                                                                                                                                                                                                                                                                                update_from_secondary_lock: boolean;
                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                            +lockProServiceData | node-switchbot
                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                              Type Alias lockProServiceData

                                                                                                                                                                                                                                                                              lockProServiceData: LockBaseServiceData & {
                                                                                                                                                                                                                                                                                  model: LockPro;
                                                                                                                                                                                                                                                                                  modelFriendlyName: LockPro;
                                                                                                                                                                                                                                                                                  modelName: LockPro;
                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                              diff --git a/docs/types/lockProStatus.html b/docs/types/lockProStatus.html index 50d930bd..6b6e01c1 100644 --- a/docs/types/lockProStatus.html +++ b/docs/types/lockProStatus.html @@ -1 +1 @@ -lockProStatus | node-switchbot

                                                                                                                                                                                                                                                                              Type Alias lockProStatus

                                                                                                                                                                                                                                                                              lockProStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                  doorState: string;
                                                                                                                                                                                                                                                                                  lockState: string;
                                                                                                                                                                                                                                                                                  moveDetected: boolean;
                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                              +lockProStatus | node-switchbot
                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                Type Alias lockProStatus

                                                                                                                                                                                                                                                                                lockProStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                    doorState: string;
                                                                                                                                                                                                                                                                                    lockState: string;
                                                                                                                                                                                                                                                                                    moveDetected: boolean;
                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                diff --git a/docs/types/lockProWebhookContext.html b/docs/types/lockProWebhookContext.html index 32981e85..1ac07466 100644 --- a/docs/types/lockProWebhookContext.html +++ b/docs/types/lockProWebhookContext.html @@ -1 +1 @@ -lockProWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                Type Alias lockProWebhookContext

                                                                                                                                                                                                                                                                                lockProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                    lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                +lockProWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                  Type Alias lockProWebhookContext

                                                                                                                                                                                                                                                                                  lockProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                                      lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                  diff --git a/docs/types/lockServiceData.html b/docs/types/lockServiceData.html index 49564b89..82a69c38 100644 --- a/docs/types/lockServiceData.html +++ b/docs/types/lockServiceData.html @@ -1 +1 @@ -lockServiceData | node-switchbot

                                                                                                                                                                                                                                                                                  Type Alias lockServiceData

                                                                                                                                                                                                                                                                                  lockServiceData: serviceData & {
                                                                                                                                                                                                                                                                                      auto_lock_paused: boolean;
                                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                                      calibration: boolean;
                                                                                                                                                                                                                                                                                      door_open: boolean;
                                                                                                                                                                                                                                                                                      double_lock_mode: boolean;
                                                                                                                                                                                                                                                                                      model: Lock;
                                                                                                                                                                                                                                                                                      modelFriendlyName: Lock;
                                                                                                                                                                                                                                                                                      modelName: Lock;
                                                                                                                                                                                                                                                                                      night_latch: boolean;
                                                                                                                                                                                                                                                                                      status: string;
                                                                                                                                                                                                                                                                                      unclosed_alarm: boolean;
                                                                                                                                                                                                                                                                                      unlocked_alarm: boolean;
                                                                                                                                                                                                                                                                                      update_from_secondary_lock: boolean;
                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                  +lockServiceData | node-switchbot
                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                    Type Alias lockServiceData

                                                                                                                                                                                                                                                                                    lockServiceData: LockBaseServiceData & {
                                                                                                                                                                                                                                                                                        model: Lock;
                                                                                                                                                                                                                                                                                        modelFriendlyName: Lock;
                                                                                                                                                                                                                                                                                        modelName: Lock;
                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                    diff --git a/docs/types/lockStatus.html b/docs/types/lockStatus.html index 6213cfe0..3865a5a1 100644 --- a/docs/types/lockStatus.html +++ b/docs/types/lockStatus.html @@ -1 +1 @@ -lockStatus | node-switchbot

                                                                                                                                                                                                                                                                                    Type Alias lockStatus

                                                                                                                                                                                                                                                                                    lockStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                                                                                        doorState: string;
                                                                                                                                                                                                                                                                                        lockState: string;
                                                                                                                                                                                                                                                                                        moveDetected: boolean;
                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                    +lockStatus | node-switchbot
                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                      Type Alias lockStatus

                                                                                                                                                                                                                                                                                      lockStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                          doorState: string;
                                                                                                                                                                                                                                                                                          lockState: string;
                                                                                                                                                                                                                                                                                          moveDetected: boolean;
                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                      diff --git a/docs/types/lockWebhookContext.html b/docs/types/lockWebhookContext.html index 88c98eb8..631865a4 100644 --- a/docs/types/lockWebhookContext.html +++ b/docs/types/lockWebhookContext.html @@ -1 +1 @@ -lockWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                      Type Alias lockWebhookContext

                                                                                                                                                                                                                                                                                      lockWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                          lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                      +lockWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                        Type Alias lockWebhookContext

                                                                                                                                                                                                                                                                                        lockWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                            lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                        diff --git a/docs/types/meter.html b/docs/types/meter.html index f45aaf81..e1deded5 100644 --- a/docs/types/meter.html +++ b/docs/types/meter.html @@ -1 +1 @@ -meter | node-switchbot

                                                                                                                                                                                                                                                                                        Type Alias meter

                                                                                                                                                                                                                                                                                        meter: device & {}
                                                                                                                                                                                                                                                                                        +meter | node-switchbot
                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                          Type Alias meter

                                                                                                                                                                                                                                                                                          meter: device
                                                                                                                                                                                                                                                                                          diff --git a/docs/types/meterPlus.html b/docs/types/meterPlus.html index b9ea1a3d..5ef543b0 100644 --- a/docs/types/meterPlus.html +++ b/docs/types/meterPlus.html @@ -1 +1 @@ -meterPlus | node-switchbot

                                                                                                                                                                                                                                                                                          Type Alias meterPlus

                                                                                                                                                                                                                                                                                          meterPlus: device & {}
                                                                                                                                                                                                                                                                                          +meterPlus | node-switchbot
                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                            Type Alias meterPlus

                                                                                                                                                                                                                                                                                            meterPlus: device
                                                                                                                                                                                                                                                                                            diff --git a/docs/types/meterPlusServiceData.html b/docs/types/meterPlusServiceData.html index a40acf36..4ddfe5bc 100644 --- a/docs/types/meterPlusServiceData.html +++ b/docs/types/meterPlusServiceData.html @@ -1 +1 @@ -meterPlusServiceData | node-switchbot

                                                                                                                                                                                                                                                                                            Type Alias meterPlusServiceData

                                                                                                                                                                                                                                                                                            meterPlusServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                celsius: number;
                                                                                                                                                                                                                                                                                                fahrenheit: number;
                                                                                                                                                                                                                                                                                                fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                                                                humidity: number;
                                                                                                                                                                                                                                                                                                model: MeterPlus;
                                                                                                                                                                                                                                                                                                modelFriendlyName: MeterPlus;
                                                                                                                                                                                                                                                                                                modelName: MeterPlus;
                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                            +meterPlusServiceData | node-switchbot
                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                              Type Alias meterPlusServiceData

                                                                                                                                                                                                                                                                                              meterPlusServiceData: TemperatureServiceDataBase & {
                                                                                                                                                                                                                                                                                                  model: MeterPlus;
                                                                                                                                                                                                                                                                                                  modelFriendlyName: MeterPlus;
                                                                                                                                                                                                                                                                                                  modelName: MeterPlus;
                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                              diff --git a/docs/types/meterPlusStatus.html b/docs/types/meterPlusStatus.html index d7c18539..01bba776 100644 --- a/docs/types/meterPlusStatus.html +++ b/docs/types/meterPlusStatus.html @@ -1 +1 @@ -meterPlusStatus | node-switchbot

                                                                                                                                                                                                                                                                                              Type Alias meterPlusStatus

                                                                                                                                                                                                                                                                                              meterPlusStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                  humidity: number;
                                                                                                                                                                                                                                                                                                  temperature: number;
                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                              +meterPlusStatus | node-switchbot
                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                Type Alias meterPlusStatus

                                                                                                                                                                                                                                                                                                meterPlusStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                                                                    temperature: number;
                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                diff --git a/docs/types/meterPlusWebhookContext.html b/docs/types/meterPlusWebhookContext.html index 94e2d395..17a47e58 100644 --- a/docs/types/meterPlusWebhookContext.html +++ b/docs/types/meterPlusWebhookContext.html @@ -1 +1 @@ -meterPlusWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                Type Alias meterPlusWebhookContext

                                                                                                                                                                                                                                                                                                meterPlusWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                                                                    scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                    temperature: number;
                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                +meterPlusWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                  Type Alias meterPlusWebhookContext

                                                                                                                                                                                                                                                                                                  meterPlusWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                                                      humidity: number;
                                                                                                                                                                                                                                                                                                      scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                      temperature: number;
                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/meterPro.html b/docs/types/meterPro.html index 4426facd..c961345a 100644 --- a/docs/types/meterPro.html +++ b/docs/types/meterPro.html @@ -1 +1 @@ -meterPro | node-switchbot

                                                                                                                                                                                                                                                                                                  Type Alias meterPro

                                                                                                                                                                                                                                                                                                  meterPro: device & {}
                                                                                                                                                                                                                                                                                                  +meterPro | node-switchbot
                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                    Type Alias meterPro

                                                                                                                                                                                                                                                                                                    meterPro: device
                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/meterProCO2ServiceData.html b/docs/types/meterProCO2ServiceData.html index 3cfafe10..358a9048 100644 --- a/docs/types/meterProCO2ServiceData.html +++ b/docs/types/meterProCO2ServiceData.html @@ -1 +1 @@ -meterProCO2ServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                    Type Alias meterProCO2ServiceData

                                                                                                                                                                                                                                                                                                    meterProCO2ServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                                                                                                        celsius: number;
                                                                                                                                                                                                                                                                                                        co2: number;
                                                                                                                                                                                                                                                                                                        fahrenheit: number;
                                                                                                                                                                                                                                                                                                        fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                                                                        model: MeterProCO2;
                                                                                                                                                                                                                                                                                                        modelFriendlyName: MeterProCO2;
                                                                                                                                                                                                                                                                                                        modelName: MeterProCO2;
                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                    +meterProCO2ServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                      Type Alias meterProCO2ServiceData

                                                                                                                                                                                                                                                                                                      meterProCO2ServiceData: TemperatureServiceDataBase & {
                                                                                                                                                                                                                                                                                                          co2: number;
                                                                                                                                                                                                                                                                                                          model: MeterProCO2;
                                                                                                                                                                                                                                                                                                          modelFriendlyName: MeterProCO2;
                                                                                                                                                                                                                                                                                                          modelName: MeterProCO2;
                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/meterProCO2Status.html b/docs/types/meterProCO2Status.html index c597e912..bb7df66c 100644 --- a/docs/types/meterProCO2Status.html +++ b/docs/types/meterProCO2Status.html @@ -1 +1 @@ -meterProCO2Status | node-switchbot

                                                                                                                                                                                                                                                                                                      Type Alias meterProCO2Status

                                                                                                                                                                                                                                                                                                      meterProCO2Status: deviceStatus & {
                                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                                          CO2: number;
                                                                                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                                                                                          temperature: number;
                                                                                                                                                                                                                                                                                                          version: string;
                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                      +meterProCO2Status | node-switchbot
                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                        Type Alias meterProCO2Status

                                                                                                                                                                                                                                                                                                        meterProCO2Status: deviceStatus & {
                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                            CO2: number;
                                                                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                                                                            version: string;
                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/meterProCO2WebhookContext.html b/docs/types/meterProCO2WebhookContext.html index 3bc38cae..e57ab934 100644 --- a/docs/types/meterProCO2WebhookContext.html +++ b/docs/types/meterProCO2WebhookContext.html @@ -1 +1 @@ -meterProCO2WebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                        Type Alias meterProCO2WebhookContext

                                                                                                                                                                                                                                                                                                        meterProCO2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                            CO2: number;
                                                                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                                                                            scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                        +meterProCO2WebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                          Type Alias meterProCO2WebhookContext

                                                                                                                                                                                                                                                                                                          meterProCO2WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                              CO2: number;
                                                                                                                                                                                                                                                                                                              humidity: number;
                                                                                                                                                                                                                                                                                                              scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                              temperature: number;
                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/meterProServiceData.html b/docs/types/meterProServiceData.html index ff05e568..28591a85 100644 --- a/docs/types/meterProServiceData.html +++ b/docs/types/meterProServiceData.html @@ -1 +1 @@ -meterProServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                          Type Alias meterProServiceData

                                                                                                                                                                                                                                                                                                          meterProServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                              celsius: number;
                                                                                                                                                                                                                                                                                                              fahrenheit: number;
                                                                                                                                                                                                                                                                                                              fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                                                                              humidity: number;
                                                                                                                                                                                                                                                                                                              model: MeterPro;
                                                                                                                                                                                                                                                                                                              modelFriendlyName: MeterPro;
                                                                                                                                                                                                                                                                                                              modelName: MeterPro;
                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                          +meterProServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                            Type Alias meterProServiceData

                                                                                                                                                                                                                                                                                                            meterProServiceData: TemperatureServiceDataBase & {
                                                                                                                                                                                                                                                                                                                model: MeterPro;
                                                                                                                                                                                                                                                                                                                modelFriendlyName: MeterPro;
                                                                                                                                                                                                                                                                                                                modelName: MeterPro;
                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/meterProStatus.html b/docs/types/meterProStatus.html index b7e08b50..79bfbdc4 100644 --- a/docs/types/meterProStatus.html +++ b/docs/types/meterProStatus.html @@ -1 +1 @@ -meterProStatus | node-switchbot

                                                                                                                                                                                                                                                                                                            Type Alias meterProStatus

                                                                                                                                                                                                                                                                                                            meterProStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                humidity: number;
                                                                                                                                                                                                                                                                                                                temperature: number;
                                                                                                                                                                                                                                                                                                                version: string;
                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                            +meterProStatus | node-switchbot
                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                              Type Alias meterProStatus

                                                                                                                                                                                                                                                                                                              meterProStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                  humidity: number;
                                                                                                                                                                                                                                                                                                                  temperature: number;
                                                                                                                                                                                                                                                                                                                  version: string;
                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/meterProWebhookContext.html b/docs/types/meterProWebhookContext.html index 170bdbc7..0b2fdfd9 100644 --- a/docs/types/meterProWebhookContext.html +++ b/docs/types/meterProWebhookContext.html @@ -1 +1 @@ -meterProWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                              Type Alias meterProWebhookContext

                                                                                                                                                                                                                                                                                                              meterProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                  humidity: number;
                                                                                                                                                                                                                                                                                                                  scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                  temperature: number;
                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                              +meterProWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                Type Alias meterProWebhookContext

                                                                                                                                                                                                                                                                                                                meterProWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                                                                                    scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                    temperature: number;
                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/meterServiceData.html b/docs/types/meterServiceData.html index 16d6730e..f383a3df 100644 --- a/docs/types/meterServiceData.html +++ b/docs/types/meterServiceData.html @@ -1 +1 @@ -meterServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                Type Alias meterServiceData

                                                                                                                                                                                                                                                                                                                meterServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                                    celsius: number;
                                                                                                                                                                                                                                                                                                                    fahrenheit: number;
                                                                                                                                                                                                                                                                                                                    fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                                                                                    humidity: number;
                                                                                                                                                                                                                                                                                                                    model: Meter;
                                                                                                                                                                                                                                                                                                                    modelFriendlyName: Meter;
                                                                                                                                                                                                                                                                                                                    modelName: Meter;
                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                +meterServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                  Type Alias meterServiceData

                                                                                                                                                                                                                                                                                                                  meterServiceData: TemperatureServiceDataBase & {
                                                                                                                                                                                                                                                                                                                      model: Meter;
                                                                                                                                                                                                                                                                                                                      modelFriendlyName: Meter;
                                                                                                                                                                                                                                                                                                                      modelName: Meter;
                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/meterStatus.html b/docs/types/meterStatus.html index 4979528f..f6053c09 100644 --- a/docs/types/meterStatus.html +++ b/docs/types/meterStatus.html @@ -1 +1 @@ -meterStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                  Type Alias meterStatus

                                                                                                                                                                                                                                                                                                                  meterStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                                                                      humidity: number;
                                                                                                                                                                                                                                                                                                                      temperature: number;
                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                  +meterStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                    Type Alias meterStatus

                                                                                                                                                                                                                                                                                                                    meterStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                                                                                        temperature: number;
                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/meterWebhookContext.html b/docs/types/meterWebhookContext.html index e0b9a57c..64fb6914 100644 --- a/docs/types/meterWebhookContext.html +++ b/docs/types/meterWebhookContext.html @@ -1 +1 @@ -meterWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                    Type Alias meterWebhookContext

                                                                                                                                                                                                                                                                                                                    meterWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                                                                                        scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                        temperature: number;
                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                    +meterWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                      Type Alias meterWebhookContext

                                                                                                                                                                                                                                                                                                                      meterWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                                                                                                          scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                          temperature: number;
                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/motionSensor.html b/docs/types/motionSensor.html index fa3b4efe..6b8ea103 100644 --- a/docs/types/motionSensor.html +++ b/docs/types/motionSensor.html @@ -1 +1 @@ -motionSensor | node-switchbot

                                                                                                                                                                                                                                                                                                                      Type Alias motionSensor

                                                                                                                                                                                                                                                                                                                      motionSensor: device & {}
                                                                                                                                                                                                                                                                                                                      +motionSensor | node-switchbot
                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                        Type Alias motionSensor

                                                                                                                                                                                                                                                                                                                        motionSensor: device
                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/motionSensorServiceData.html b/docs/types/motionSensorServiceData.html index ef820690..78766285 100644 --- a/docs/types/motionSensorServiceData.html +++ b/docs/types/motionSensorServiceData.html @@ -1 +1 @@ -motionSensorServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                        Type Alias motionSensorServiceData

                                                                                                                                                                                                                                                                                                                        motionSensorServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                                            iot: number;
                                                                                                                                                                                                                                                                                                                            is_light: boolean;
                                                                                                                                                                                                                                                                                                                            led: number;
                                                                                                                                                                                                                                                                                                                            lightLevel: string;
                                                                                                                                                                                                                                                                                                                            model: MotionSensor;
                                                                                                                                                                                                                                                                                                                            modelFriendlyName: MotionSensor;
                                                                                                                                                                                                                                                                                                                            modelName: MotionSensor;
                                                                                                                                                                                                                                                                                                                            movement: boolean;
                                                                                                                                                                                                                                                                                                                            sense_distance: number;
                                                                                                                                                                                                                                                                                                                            tested: boolean;
                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                        +motionSensorServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                          Type Alias motionSensorServiceData

                                                                                                                                                                                                                                                                                                                          motionSensorServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                              iot: number;
                                                                                                                                                                                                                                                                                                                              is_light: boolean;
                                                                                                                                                                                                                                                                                                                              led: number;
                                                                                                                                                                                                                                                                                                                              lightLevel: string;
                                                                                                                                                                                                                                                                                                                              model: MotionSensor;
                                                                                                                                                                                                                                                                                                                              modelFriendlyName: MotionSensor;
                                                                                                                                                                                                                                                                                                                              modelName: MotionSensor;
                                                                                                                                                                                                                                                                                                                              movement: boolean;
                                                                                                                                                                                                                                                                                                                              sense_distance: number;
                                                                                                                                                                                                                                                                                                                              tested: boolean;
                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/motionSensorStatus.html b/docs/types/motionSensorStatus.html index 9078cbdd..bef1fde0 100644 --- a/docs/types/motionSensorStatus.html +++ b/docs/types/motionSensorStatus.html @@ -1 +1 @@ -motionSensorStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                          Type Alias motionSensorStatus

                                                                                                                                                                                                                                                                                                                          motionSensorStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                              brightness: "bright" | "dim";
                                                                                                                                                                                                                                                                                                                              moveDetected: boolean;
                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                          +motionSensorStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                            Type Alias motionSensorStatus

                                                                                                                                                                                                                                                                                                                            motionSensorStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                                brightness: "bright" | "dim";
                                                                                                                                                                                                                                                                                                                                moveDetected: boolean;
                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/motionSensorWebhookContext.html b/docs/types/motionSensorWebhookContext.html index b08e2221..8bf82890 100644 --- a/docs/types/motionSensorWebhookContext.html +++ b/docs/types/motionSensorWebhookContext.html @@ -1 +1 @@ -motionSensorWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                            Type Alias motionSensorWebhookContext

                                                                                                                                                                                                                                                                                                                            motionSensorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                                detectionState: "NOT_DETECTED" | "DETECTED";
                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                            +motionSensorWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                              Type Alias motionSensorWebhookContext

                                                                                                                                                                                                                                                                                                                              motionSensorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                                  detectionState: "NOT_DETECTED" | "DETECTED";
                                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/onadvertisement.html b/docs/types/onadvertisement.html index 1414376d..62fc098f 100644 --- a/docs/types/onadvertisement.html +++ b/docs/types/onadvertisement.html @@ -1 +1 @@ -onadvertisement | node-switchbot

                                                                                                                                                                                                                                                                                                                              Type Alias onadvertisement

                                                                                                                                                                                                                                                                                                                              onadvertisement: (ad: ad) => Promise<void> | void

                                                                                                                                                                                                                                                                                                                              Type declaration

                                                                                                                                                                                                                                                                                                                                • (ad: ad): Promise<void> | void
                                                                                                                                                                                                                                                                                                                                • Parameters

                                                                                                                                                                                                                                                                                                                                  Returns Promise<void> | void

                                                                                                                                                                                                                                                                                                                              +onadvertisement | node-switchbot
                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                Type Alias onadvertisement

                                                                                                                                                                                                                                                                                                                                onadvertisement: (ad: ad) => Promise<void> | void

                                                                                                                                                                                                                                                                                                                                Type Declaration

                                                                                                                                                                                                                                                                                                                                  • (ad: ad): Promise<void> | void
                                                                                                                                                                                                                                                                                                                                  • Parameters

                                                                                                                                                                                                                                                                                                                                    Returns Promise<void> | void

                                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/ondiscover.html b/docs/types/ondiscover.html index fb212b01..ec5c3255 100644 --- a/docs/types/ondiscover.html +++ b/docs/types/ondiscover.html @@ -1 +1 @@ -ondiscover | node-switchbot

                                                                                                                                                                                                                                                                                                                                Type Alias ondiscover

                                                                                                                                                                                                                                                                                                                                ondiscover: (device: SwitchbotDevice) => Promise<void> | void

                                                                                                                                                                                                                                                                                                                                Type declaration

                                                                                                                                                                                                                                                                                                                                +ondiscover | node-switchbot
                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                  Type Alias ondiscover

                                                                                                                                                                                                                                                                                                                                  ondiscover: (device: SwitchbotDevice) => Promise<void> | void

                                                                                                                                                                                                                                                                                                                                  Type Declaration

                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/outdoorMeter.html b/docs/types/outdoorMeter.html index 889304a9..724a9c6c 100644 --- a/docs/types/outdoorMeter.html +++ b/docs/types/outdoorMeter.html @@ -1 +1 @@ -outdoorMeter | node-switchbot

                                                                                                                                                                                                                                                                                                                                  Type Alias outdoorMeter

                                                                                                                                                                                                                                                                                                                                  outdoorMeter: device & {}
                                                                                                                                                                                                                                                                                                                                  +outdoorMeter | node-switchbot
                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                    Type Alias outdoorMeter

                                                                                                                                                                                                                                                                                                                                    outdoorMeter: device
                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/outdoorMeterServiceData.html b/docs/types/outdoorMeterServiceData.html index 46a36026..b5fbbb23 100644 --- a/docs/types/outdoorMeterServiceData.html +++ b/docs/types/outdoorMeterServiceData.html @@ -1 +1 @@ -outdoorMeterServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                    Type Alias outdoorMeterServiceData

                                                                                                                                                                                                                                                                                                                                    outdoorMeterServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                        battery: number;
                                                                                                                                                                                                                                                                                                                                        celsius: number;
                                                                                                                                                                                                                                                                                                                                        fahrenheit: number;
                                                                                                                                                                                                                                                                                                                                        fahrenheit_mode: boolean;
                                                                                                                                                                                                                                                                                                                                        humidity: number;
                                                                                                                                                                                                                                                                                                                                        model: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                        modelFriendlyName: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                        modelName: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                    +outdoorMeterServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                                      Type Alias outdoorMeterServiceData

                                                                                                                                                                                                                                                                                                                                      outdoorMeterServiceData: TemperatureServiceDataBase & {
                                                                                                                                                                                                                                                                                                                                          model: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                          modelFriendlyName: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                          modelName: OutdoorMeter;
                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/outdoorMeterStatus.html b/docs/types/outdoorMeterStatus.html index 4cd8eb08..44785d5a 100644 --- a/docs/types/outdoorMeterStatus.html +++ b/docs/types/outdoorMeterStatus.html @@ -1 +1 @@ -outdoorMeterStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                      Type Alias outdoorMeterStatus

                                                                                                                                                                                                                                                                                                                                      outdoorMeterStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                                                                          humidity: number;
                                                                                                                                                                                                                                                                                                                                          temperature: number;
                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                      +outdoorMeterStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                                        Type Alias outdoorMeterStatus

                                                                                                                                                                                                                                                                                                                                        outdoorMeterStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/outdoorMeterWebhookContext.html b/docs/types/outdoorMeterWebhookContext.html index 5b4aaf23..6ef3a48b 100644 --- a/docs/types/outdoorMeterWebhookContext.html +++ b/docs/types/outdoorMeterWebhookContext.html @@ -1 +1 @@ -outdoorMeterWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                        Type Alias outdoorMeterWebhookContext

                                                                                                                                                                                                                                                                                                                                        outdoorMeterWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                                                            humidity: number;
                                                                                                                                                                                                                                                                                                                                            scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                                            temperature: number;
                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                        +outdoorMeterWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                                          Type Alias outdoorMeterWebhookContext

                                                                                                                                                                                                                                                                                                                                          outdoorMeterWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                                              humidity: number;
                                                                                                                                                                                                                                                                                                                                              scale: "CELSIUS" | "FAHRENHEIT";
                                                                                                                                                                                                                                                                                                                                              temperature: number;
                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/panTiltCamWebhookContext.html b/docs/types/panTiltCamWebhookContext.html index bbfe7801..4b37c834 100644 --- a/docs/types/panTiltCamWebhookContext.html +++ b/docs/types/panTiltCamWebhookContext.html @@ -1 +1 @@ -panTiltCamWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                          Type Alias panTiltCamWebhookContext

                                                                                                                                                                                                                                                                                                                                          panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
                                                                                                                                                                                                                                                                                                                                          +panTiltCamWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                                            Type Alias panTiltCamWebhookContext

                                                                                                                                                                                                                                                                                                                                            panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
                                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/pantiltCam.html b/docs/types/pantiltCam.html index 8c93ceff..a421da8f 100644 --- a/docs/types/pantiltCam.html +++ b/docs/types/pantiltCam.html @@ -1 +1 @@ -pantiltCam | node-switchbot

                                                                                                                                                                                                                                                                                                                                            Type Alias pantiltCam

                                                                                                                                                                                                                                                                                                                                            pantiltCam: device & {}
                                                                                                                                                                                                                                                                                                                                            +pantiltCam | node-switchbot
                                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                                              Type Alias pantiltCam

                                                                                                                                                                                                                                                                                                                                              pantiltCam: device
                                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/pantiltCam2k.html b/docs/types/pantiltCam2k.html index 16857032..e41f2050 100644 --- a/docs/types/pantiltCam2k.html +++ b/docs/types/pantiltCam2k.html @@ -1 +1 @@ -pantiltCam2k | node-switchbot

                                                                                                                                                                                                                                                                                                                                              Type Alias pantiltCam2k

                                                                                                                                                                                                                                                                                                                                              pantiltCam2k: device & {}
                                                                                                                                                                                                                                                                                                                                              +pantiltCam2k | node-switchbot
                                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                                Type Alias pantiltCam2k

                                                                                                                                                                                                                                                                                                                                                pantiltCam2k: device
                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/plug.html b/docs/types/plug.html index e5357782..fb509eab 100644 --- a/docs/types/plug.html +++ b/docs/types/plug.html @@ -1 +1 @@ -plug | node-switchbot

                                                                                                                                                                                                                                                                                                                                                Type Alias plug

                                                                                                                                                                                                                                                                                                                                                plug: device & {}
                                                                                                                                                                                                                                                                                                                                                +plug | node-switchbot
                                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                                  Type Alias plug

                                                                                                                                                                                                                                                                                                                                                  plug: device
                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/plugMini.html b/docs/types/plugMini.html index 5a79faea..8d5d2920 100644 --- a/docs/types/plugMini.html +++ b/docs/types/plugMini.html @@ -1 +1 @@ -plugMini | node-switchbot

                                                                                                                                                                                                                                                                                                                                                  Type Alias plugMini

                                                                                                                                                                                                                                                                                                                                                  plugMini: device & {}
                                                                                                                                                                                                                                                                                                                                                  +plugMini | node-switchbot
                                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                                    Type Alias plugMini

                                                                                                                                                                                                                                                                                                                                                    plugMini: device
                                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/plugMiniJPServiceData.html b/docs/types/plugMiniJPServiceData.html index 077fff3b..0c8592ba 100644 --- a/docs/types/plugMiniJPServiceData.html +++ b/docs/types/plugMiniJPServiceData.html @@ -1 +1 @@ -plugMiniJPServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                    Type Alias plugMiniJPServiceData

                                                                                                                                                                                                                                                                                                                                                    plugMiniJPServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                        currentPower: number;
                                                                                                                                                                                                                                                                                                                                                        delay: boolean;
                                                                                                                                                                                                                                                                                                                                                        model: PlugMiniJP;
                                                                                                                                                                                                                                                                                                                                                        modelFriendlyName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                        modelName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                        overload: boolean;
                                                                                                                                                                                                                                                                                                                                                        state: string;
                                                                                                                                                                                                                                                                                                                                                        syncUtcTime: boolean;
                                                                                                                                                                                                                                                                                                                                                        timer: boolean;
                                                                                                                                                                                                                                                                                                                                                        wifiRssi: number;
                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                    +plugMiniJPServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                                                      Type Alias plugMiniJPServiceData

                                                                                                                                                                                                                                                                                                                                                      plugMiniJPServiceData: PlugMiniServiceDataBase & {
                                                                                                                                                                                                                                                                                                                                                          model: PlugMiniJP;
                                                                                                                                                                                                                                                                                                                                                          modelFriendlyName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                          modelName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/plugMiniJPWebhookContext.html b/docs/types/plugMiniJPWebhookContext.html index 9a01f3e1..e2962c8a 100644 --- a/docs/types/plugMiniJPWebhookContext.html +++ b/docs/types/plugMiniJPWebhookContext.html @@ -1 +1 @@ -plugMiniJPWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                      Type Alias plugMiniJPWebhookContext

                                                                                                                                                                                                                                                                                                                                                      plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                      +plugMiniJPWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                                                        Type Alias plugMiniJPWebhookContext

                                                                                                                                                                                                                                                                                                                                                        plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/plugMiniStatus.html b/docs/types/plugMiniStatus.html index 113fa216..54897e4f 100644 --- a/docs/types/plugMiniStatus.html +++ b/docs/types/plugMiniStatus.html @@ -1 +1 @@ -plugMiniStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                        Type Alias plugMiniStatus

                                                                                                                                                                                                                                                                                                                                                        plugMiniStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                            electricCurrent: Float64Array;
                                                                                                                                                                                                                                                                                                                                                            electricityOfDay: number;
                                                                                                                                                                                                                                                                                                                                                            power: string;
                                                                                                                                                                                                                                                                                                                                                            voltage: Float64Array;
                                                                                                                                                                                                                                                                                                                                                            weight: Float64Array;
                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                        +plugMiniStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                                                          Type Alias plugMiniStatus

                                                                                                                                                                                                                                                                                                                                                          plugMiniStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                              electricCurrent: Float64Array;
                                                                                                                                                                                                                                                                                                                                                              electricityOfDay: number;
                                                                                                                                                                                                                                                                                                                                                              power: string;
                                                                                                                                                                                                                                                                                                                                                              voltage: Float64Array;
                                                                                                                                                                                                                                                                                                                                                              weight: Float64Array;
                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/plugMiniUSServiceData.html b/docs/types/plugMiniUSServiceData.html index 1dcff841..94ed494b 100644 --- a/docs/types/plugMiniUSServiceData.html +++ b/docs/types/plugMiniUSServiceData.html @@ -1 +1 @@ -plugMiniUSServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                          Type Alias plugMiniUSServiceData

                                                                                                                                                                                                                                                                                                                                                          plugMiniUSServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                              currentPower: number;
                                                                                                                                                                                                                                                                                                                                                              delay: boolean;
                                                                                                                                                                                                                                                                                                                                                              model: PlugMiniUS;
                                                                                                                                                                                                                                                                                                                                                              modelFriendlyName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                              modelName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                              overload: boolean;
                                                                                                                                                                                                                                                                                                                                                              state: string;
                                                                                                                                                                                                                                                                                                                                                              syncUtcTime: boolean;
                                                                                                                                                                                                                                                                                                                                                              timer: boolean;
                                                                                                                                                                                                                                                                                                                                                              wifiRssi: number;
                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                          +plugMiniUSServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                                                            Type Alias plugMiniUSServiceData

                                                                                                                                                                                                                                                                                                                                                            plugMiniUSServiceData: PlugMiniServiceDataBase & {
                                                                                                                                                                                                                                                                                                                                                                model: PlugMiniUS;
                                                                                                                                                                                                                                                                                                                                                                modelFriendlyName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                                modelName: PlugMini;
                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/plugMiniUSWebhookContext.html b/docs/types/plugMiniUSWebhookContext.html index 6dbc645b..dfd7b360 100644 --- a/docs/types/plugMiniUSWebhookContext.html +++ b/docs/types/plugMiniUSWebhookContext.html @@ -1 +1 @@ -plugMiniUSWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                            Type Alias plugMiniUSWebhookContext

                                                                                                                                                                                                                                                                                                                                                            plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                            +plugMiniUSWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                                                              Type Alias plugMiniUSWebhookContext

                                                                                                                                                                                                                                                                                                                                                              plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/plugStatus.html b/docs/types/plugStatus.html index 7600a436..12ce3bfb 100644 --- a/docs/types/plugStatus.html +++ b/docs/types/plugStatus.html @@ -1 +1 @@ -plugStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                              Type Alias plugStatus

                                                                                                                                                                                                                                                                                                                                                              plugStatus: deviceStatus & { power: string; version: string }
                                                                                                                                                                                                                                                                                                                                                              +plugStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                Type Alias plugStatus

                                                                                                                                                                                                                                                                                                                                                                plugStatus: deviceStatus & { power: string; version: string }
                                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/plugWebhookContext.html b/docs/types/plugWebhookContext.html index 9695b36f..7b5ef8fa 100644 --- a/docs/types/plugWebhookContext.html +++ b/docs/types/plugWebhookContext.html @@ -1 +1 @@ -plugWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                Type Alias plugWebhookContext

                                                                                                                                                                                                                                                                                                                                                                plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                                +plugWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                  Type Alias plugWebhookContext

                                                                                                                                                                                                                                                                                                                                                                  plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
                                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/relaySwitch1Context.html b/docs/types/relaySwitch1Context.html index 169890fb..ce882a67 100644 --- a/docs/types/relaySwitch1Context.html +++ b/docs/types/relaySwitch1Context.html @@ -1 +1 @@ -relaySwitch1Context | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                  Type Alias relaySwitch1Context

                                                                                                                                                                                                                                                                                                                                                                  relaySwitch1Context: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                      online: boolean;
                                                                                                                                                                                                                                                                                                                                                                      overTemperature: boolean;
                                                                                                                                                                                                                                                                                                                                                                      switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                      version: string;
                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                  +relaySwitch1Context | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                    Type Alias relaySwitch1Context

                                                                                                                                                                                                                                                                                                                                                                    relaySwitch1Context: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                        online: boolean;
                                                                                                                                                                                                                                                                                                                                                                        overTemperature: boolean;
                                                                                                                                                                                                                                                                                                                                                                        switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                        version: string;
                                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/relaySwitch1PMContext.html b/docs/types/relaySwitch1PMContext.html index 053b5c96..388fb073 100644 --- a/docs/types/relaySwitch1PMContext.html +++ b/docs/types/relaySwitch1PMContext.html @@ -1 +1 @@ -relaySwitch1PMContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                    Type Alias relaySwitch1PMContext

                                                                                                                                                                                                                                                                                                                                                                    relaySwitch1PMContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                        online: boolean;
                                                                                                                                                                                                                                                                                                                                                                        overload: boolean;
                                                                                                                                                                                                                                                                                                                                                                        overTemperature: boolean;
                                                                                                                                                                                                                                                                                                                                                                        switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                        version: string;
                                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                                    +relaySwitch1PMContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                      Type Alias relaySwitch1PMContext

                                                                                                                                                                                                                                                                                                                                                                      relaySwitch1PMContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                          online: boolean;
                                                                                                                                                                                                                                                                                                                                                                          overload: boolean;
                                                                                                                                                                                                                                                                                                                                                                          overTemperature: boolean;
                                                                                                                                                                                                                                                                                                                                                                          switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                          version: string;
                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/relaySwitch1PMServiceData.html b/docs/types/relaySwitch1PMServiceData.html index 902a2d8b..6f2aaa25 100644 --- a/docs/types/relaySwitch1PMServiceData.html +++ b/docs/types/relaySwitch1PMServiceData.html @@ -1 +1 @@ -relaySwitch1PMServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                      Type Alias relaySwitch1PMServiceData

                                                                                                                                                                                                                                                                                                                                                                      relaySwitch1PMServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                          current: number;
                                                                                                                                                                                                                                                                                                                                                                          mode: boolean;
                                                                                                                                                                                                                                                                                                                                                                          model: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                          modelFriendlyName: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                          modelName: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                          power: number;
                                                                                                                                                                                                                                                                                                                                                                          sequence_number: number;
                                                                                                                                                                                                                                                                                                                                                                          state: boolean;
                                                                                                                                                                                                                                                                                                                                                                          voltage: number;
                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                      +relaySwitch1PMServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                        Type Alias relaySwitch1PMServiceData

                                                                                                                                                                                                                                                                                                                                                                        relaySwitch1PMServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                                                                            current: number;
                                                                                                                                                                                                                                                                                                                                                                            mode: boolean;
                                                                                                                                                                                                                                                                                                                                                                            model: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                            modelFriendlyName: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                            modelName: RelaySwitch1PM;
                                                                                                                                                                                                                                                                                                                                                                            power: number;
                                                                                                                                                                                                                                                                                                                                                                            sequence_number: number;
                                                                                                                                                                                                                                                                                                                                                                            state: boolean;
                                                                                                                                                                                                                                                                                                                                                                            voltage: number;
                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/relaySwitch1PMStatus.html b/docs/types/relaySwitch1PMStatus.html index d32e7bc7..bb0e94e9 100644 --- a/docs/types/relaySwitch1PMStatus.html +++ b/docs/types/relaySwitch1PMStatus.html @@ -1 +1 @@ -relaySwitch1PMStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                        Type Alias relaySwitch1PMStatus

                                                                                                                                                                                                                                                                                                                                                                        relaySwitch1PMStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                            electricCurrent: number;
                                                                                                                                                                                                                                                                                                                                                                            power: number;
                                                                                                                                                                                                                                                                                                                                                                            switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                            usedElectricity: number;
                                                                                                                                                                                                                                                                                                                                                                            version: string;
                                                                                                                                                                                                                                                                                                                                                                            voltage: number;
                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                        +relaySwitch1PMStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                          Type Alias relaySwitch1PMStatus

                                                                                                                                                                                                                                                                                                                                                                          relaySwitch1PMStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                              electricCurrent: number;
                                                                                                                                                                                                                                                                                                                                                                              power: number;
                                                                                                                                                                                                                                                                                                                                                                              switchStatus: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                              usedElectricity: number;
                                                                                                                                                                                                                                                                                                                                                                              version: string;
                                                                                                                                                                                                                                                                                                                                                                              voltage: number;
                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/relaySwitch1ServiceData.html b/docs/types/relaySwitch1ServiceData.html index 56724c8d..6e21ec43 100644 --- a/docs/types/relaySwitch1ServiceData.html +++ b/docs/types/relaySwitch1ServiceData.html @@ -1 +1 @@ -relaySwitch1ServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                          Type Alias relaySwitch1ServiceData

                                                                                                                                                                                                                                                                                                                                                                          relaySwitch1ServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                              mode: boolean;
                                                                                                                                                                                                                                                                                                                                                                              model: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                              modelFriendlyName: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                              modelName: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                              sequence_number: number;
                                                                                                                                                                                                                                                                                                                                                                              state: boolean;
                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                          +relaySwitch1ServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                            Type Alias relaySwitch1ServiceData

                                                                                                                                                                                                                                                                                                                                                                            relaySwitch1ServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                                                                                mode: boolean;
                                                                                                                                                                                                                                                                                                                                                                                model: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                                modelFriendlyName: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                                modelName: RelaySwitch1;
                                                                                                                                                                                                                                                                                                                                                                                sequence_number: number;
                                                                                                                                                                                                                                                                                                                                                                                state: boolean;
                                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/relaySwitch1Status.html b/docs/types/relaySwitch1Status.html index 6ae32679..e93fd7f9 100644 --- a/docs/types/relaySwitch1Status.html +++ b/docs/types/relaySwitch1Status.html @@ -1 +1 @@ -relaySwitch1Status | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                            Type Alias relaySwitch1Status

                                                                                                                                                                                                                                                                                                                                                                            relaySwitch1Status: deviceStatus & { switchStatus: 0 | 1; version: string }
                                                                                                                                                                                                                                                                                                                                                                            +relaySwitch1Status | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                              Type Alias relaySwitch1Status

                                                                                                                                                                                                                                                                                                                                                                              relaySwitch1Status: deviceStatus & { switchStatus: 0 | 1; version: string }
                                                                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/remote.html b/docs/types/remote.html index aa0a23c3..3c9ecf47 100644 --- a/docs/types/remote.html +++ b/docs/types/remote.html @@ -1 +1 @@ -remote | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                              Type Alias remote

                                                                                                                                                                                                                                                                                                                                                                              remote: device & {}
                                                                                                                                                                                                                                                                                                                                                                              +remote | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                Type Alias remote

                                                                                                                                                                                                                                                                                                                                                                                remote: device
                                                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/remoteServiceData.html b/docs/types/remoteServiceData.html index 763f1e6c..b76ef595 100644 --- a/docs/types/remoteServiceData.html +++ b/docs/types/remoteServiceData.html @@ -1 +1 @@ -remoteServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                Type Alias remoteServiceData

                                                                                                                                                                                                                                                                                                                                                                                remoteServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                                                                                                    model: Remote;
                                                                                                                                                                                                                                                                                                                                                                                    modelFriendlyName: Remote;
                                                                                                                                                                                                                                                                                                                                                                                    modelName: Remote;
                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                +remoteServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                  Type Alias remoteServiceData

                                                                                                                                                                                                                                                                                                                                                                                  remoteServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                                                                                      battery: number;
                                                                                                                                                                                                                                                                                                                                                                                      model: Remote;
                                                                                                                                                                                                                                                                                                                                                                                      modelFriendlyName: Remote;
                                                                                                                                                                                                                                                                                                                                                                                      modelName: Remote;
                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/robotVacuumCleanerS1.html b/docs/types/robotVacuumCleanerS1.html index b675965f..144ee60b 100644 --- a/docs/types/robotVacuumCleanerS1.html +++ b/docs/types/robotVacuumCleanerS1.html @@ -1 +1 @@ -robotVacuumCleanerS1 | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                  Type Alias robotVacuumCleanerS1

                                                                                                                                                                                                                                                                                                                                                                                  robotVacuumCleanerS1: device & {}
                                                                                                                                                                                                                                                                                                                                                                                  +robotVacuumCleanerS1 | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                    Type Alias robotVacuumCleanerS1

                                                                                                                                                                                                                                                                                                                                                                                    robotVacuumCleanerS1: device
                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/robotVacuumCleanerS1Plus.html b/docs/types/robotVacuumCleanerS1Plus.html index 9f70f978..d4cdcdec 100644 --- a/docs/types/robotVacuumCleanerS1Plus.html +++ b/docs/types/robotVacuumCleanerS1Plus.html @@ -1 +1 @@ -robotVacuumCleanerS1Plus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                    Type Alias robotVacuumCleanerS1Plus

                                                                                                                                                                                                                                                                                                                                                                                    robotVacuumCleanerS1Plus: device & {}
                                                                                                                                                                                                                                                                                                                                                                                    +robotVacuumCleanerS1Plus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                      Type Alias robotVacuumCleanerS1Plus

                                                                                                                                                                                                                                                                                                                                                                                      robotVacuumCleanerS1Plus: device
                                                                                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/robotVacuumCleanerS1PlusStatus.html b/docs/types/robotVacuumCleanerS1PlusStatus.html index f4e599ce..e8684cfa 100644 --- a/docs/types/robotVacuumCleanerS1PlusStatus.html +++ b/docs/types/robotVacuumCleanerS1PlusStatus.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                      Type Alias robotVacuumCleanerS1PlusStatus

                                                                                                                                                                                                                                                                                                                                                                                      robotVacuumCleanerS1PlusStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                          battery: number;
                                                                                                                                                                                                                                                                                                                                                                                          onlineStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                          workingStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                      +robotVacuumCleanerS1PlusStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                        Type Alias robotVacuumCleanerS1PlusStatus

                                                                                                                                                                                                                                                                                                                                                                                        robotVacuumCleanerS1PlusStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                                                                                                            onlineStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                            workingStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html index 3c71e558..44be7bda 100644 --- a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +++ b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                        Type Alias robotVacuumCleanerS1PlusWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                        robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                            battery: number;
                                                                                                                                                                                                                                                                                                                                                                                            onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                                                                                                                                                                            workingStatus:
                                                                                                                                                                                                                                                                                                                                                                                                | "Standby"
                                                                                                                                                                                                                                                                                                                                                                                                | "Clearing"
                                                                                                                                                                                                                                                                                                                                                                                                | "Paused"
                                                                                                                                                                                                                                                                                                                                                                                                | "GotoChargeBase"
                                                                                                                                                                                                                                                                                                                                                                                                | "Charging"
                                                                                                                                                                                                                                                                                                                                                                                                | "ChargeDone"
                                                                                                                                                                                                                                                                                                                                                                                                | "Dormant"
                                                                                                                                                                                                                                                                                                                                                                                                | "InTrouble"
                                                                                                                                                                                                                                                                                                                                                                                                | "InRemoteControl"
                                                                                                                                                                                                                                                                                                                                                                                                | "InDustCollecting";
                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                        +robotVacuumCleanerS1PlusWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                          Type Alias robotVacuumCleanerS1PlusWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                          robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                                                                                              onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                                                                                                                                                                              workingStatus:
                                                                                                                                                                                                                                                                                                                                                                                                  | "Standby"
                                                                                                                                                                                                                                                                                                                                                                                                  | "Clearing"
                                                                                                                                                                                                                                                                                                                                                                                                  | "Paused"
                                                                                                                                                                                                                                                                                                                                                                                                  | "GotoChargeBase"
                                                                                                                                                                                                                                                                                                                                                                                                  | "Charging"
                                                                                                                                                                                                                                                                                                                                                                                                  | "ChargeDone"
                                                                                                                                                                                                                                                                                                                                                                                                  | "Dormant"
                                                                                                                                                                                                                                                                                                                                                                                                  | "InTrouble"
                                                                                                                                                                                                                                                                                                                                                                                                  | "InRemoteControl"
                                                                                                                                                                                                                                                                                                                                                                                                  | "InDustCollecting";
                                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/robotVacuumCleanerS1Status.html b/docs/types/robotVacuumCleanerS1Status.html index 1c365f5d..63038340 100644 --- a/docs/types/robotVacuumCleanerS1Status.html +++ b/docs/types/robotVacuumCleanerS1Status.html @@ -1 +1 @@ -robotVacuumCleanerS1Status | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                          Type Alias robotVacuumCleanerS1Status

                                                                                                                                                                                                                                                                                                                                                                                          robotVacuumCleanerS1Status: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                                                                                              onlineStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                              workingStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                                          +robotVacuumCleanerS1Status | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                            Type Alias robotVacuumCleanerS1Status

                                                                                                                                                                                                                                                                                                                                                                                            robotVacuumCleanerS1Status: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                onlineStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                                workingStatus: string;
                                                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/robotVacuumCleanerS1WebhookContext.html b/docs/types/robotVacuumCleanerS1WebhookContext.html index 4db18452..b0e1e438 100644 --- a/docs/types/robotVacuumCleanerS1WebhookContext.html +++ b/docs/types/robotVacuumCleanerS1WebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1WebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                            Type Alias robotVacuumCleanerS1WebhookContext

                                                                                                                                                                                                                                                                                                                                                                                            robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                                                                                                                                                                                workingStatus:
                                                                                                                                                                                                                                                                                                                                                                                                    | "Standby"
                                                                                                                                                                                                                                                                                                                                                                                                    | "Clearing"
                                                                                                                                                                                                                                                                                                                                                                                                    | "Paused"
                                                                                                                                                                                                                                                                                                                                                                                                    | "GotoChargeBase"
                                                                                                                                                                                                                                                                                                                                                                                                    | "Charging"
                                                                                                                                                                                                                                                                                                                                                                                                    | "ChargeDone"
                                                                                                                                                                                                                                                                                                                                                                                                    | "Dormant"
                                                                                                                                                                                                                                                                                                                                                                                                    | "InTrouble"
                                                                                                                                                                                                                                                                                                                                                                                                    | "InRemoteControl"
                                                                                                                                                                                                                                                                                                                                                                                                    | "InDustCollecting";
                                                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                                                            +robotVacuumCleanerS1WebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                              Type Alias robotVacuumCleanerS1WebhookContext

                                                                                                                                                                                                                                                                                                                                                                                              robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                  onlineStatus: "online" | "offline";
                                                                                                                                                                                                                                                                                                                                                                                                  workingStatus:
                                                                                                                                                                                                                                                                                                                                                                                                      | "Standby"
                                                                                                                                                                                                                                                                                                                                                                                                      | "Clearing"
                                                                                                                                                                                                                                                                                                                                                                                                      | "Paused"
                                                                                                                                                                                                                                                                                                                                                                                                      | "GotoChargeBase"
                                                                                                                                                                                                                                                                                                                                                                                                      | "Charging"
                                                                                                                                                                                                                                                                                                                                                                                                      | "ChargeDone"
                                                                                                                                                                                                                                                                                                                                                                                                      | "Dormant"
                                                                                                                                                                                                                                                                                                                                                                                                      | "InTrouble"
                                                                                                                                                                                                                                                                                                                                                                                                      | "InRemoteControl"
                                                                                                                                                                                                                                                                                                                                                                                                      | "InDustCollecting";
                                                                                                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/robotVacuumCleanerServiceData.html b/docs/types/robotVacuumCleanerServiceData.html index 4edf2069..b902f186 100644 --- a/docs/types/robotVacuumCleanerServiceData.html +++ b/docs/types/robotVacuumCleanerServiceData.html @@ -1 +1 @@ -robotVacuumCleanerServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                              Type Alias robotVacuumCleanerServiceData

                                                                                                                                                                                                                                                                                                                                                                                              robotVacuumCleanerServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                  model: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                  modelFriendlyName: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                  modelName: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                  state: string;
                                                                                                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                                                                                                              +robotVacuumCleanerServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                Type Alias robotVacuumCleanerServiceData

                                                                                                                                                                                                                                                                                                                                                                                                robotVacuumCleanerServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                    model: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                    modelFriendlyName: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                    modelName: Unknown;
                                                                                                                                                                                                                                                                                                                                                                                                    state: string;
                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/types/stripLight.html b/docs/types/stripLight.html index d97012b3..8525592d 100644 --- a/docs/types/stripLight.html +++ b/docs/types/stripLight.html @@ -1 +1 @@ -stripLight | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                Type Alias stripLight

                                                                                                                                                                                                                                                                                                                                                                                                stripLight: device & {}
                                                                                                                                                                                                                                                                                                                                                                                                +stripLight | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                  Type Alias stripLight

                                                                                                                                                                                                                                                                                                                                                                                                  stripLight: device
                                                                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/types/stripLightServiceData.html b/docs/types/stripLightServiceData.html index 4d27921c..6249d73d 100644 --- a/docs/types/stripLightServiceData.html +++ b/docs/types/stripLightServiceData.html @@ -1 +1 @@ -stripLightServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                  Type Alias stripLightServiceData

                                                                                                                                                                                                                                                                                                                                                                                                  stripLightServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                                                      blue: number;
                                                                                                                                                                                                                                                                                                                                                                                                      brightness: number;
                                                                                                                                                                                                                                                                                                                                                                                                      color_mode: number;
                                                                                                                                                                                                                                                                                                                                                                                                      delay: number;
                                                                                                                                                                                                                                                                                                                                                                                                      green: number;
                                                                                                                                                                                                                                                                                                                                                                                                      loop_index: number;
                                                                                                                                                                                                                                                                                                                                                                                                      model: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                      modelFriendlyName: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                      modelName: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                      power: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                      preset: number;
                                                                                                                                                                                                                                                                                                                                                                                                      red: number;
                                                                                                                                                                                                                                                                                                                                                                                                      speed: number;
                                                                                                                                                                                                                                                                                                                                                                                                      state: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                                  +stripLightServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                    Type Alias stripLightServiceData

                                                                                                                                                                                                                                                                                                                                                                                                    stripLightServiceData: ColorLightServiceDataBase & {
                                                                                                                                                                                                                                                                                                                                                                                                        model: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                        modelFriendlyName: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                        modelName: StripLight;
                                                                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/types/stripLightStatus.html b/docs/types/stripLightStatus.html index 44c4ae7f..d272f3ee 100644 --- a/docs/types/stripLightStatus.html +++ b/docs/types/stripLightStatus.html @@ -1 +1 @@ -stripLightStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                    Type Alias stripLightStatus

                                                                                                                                                                                                                                                                                                                                                                                                    stripLightStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                                        brightness: number;
                                                                                                                                                                                                                                                                                                                                                                                                        color: string;
                                                                                                                                                                                                                                                                                                                                                                                                        power: string;
                                                                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                                                                    +stripLightStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                    node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                      Type Alias stripLightStatus

                                                                                                                                                                                                                                                                                                                                                                                                      stripLightStatus: deviceStatus & {
                                                                                                                                                                                                                                                                                                                                                                                                          brightness: number;
                                                                                                                                                                                                                                                                                                                                                                                                          color: string;
                                                                                                                                                                                                                                                                                                                                                                                                          power: string;
                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                      diff --git a/docs/types/stripLightWebhookContext.html b/docs/types/stripLightWebhookContext.html index 4d7602e9..3940f056 100644 --- a/docs/types/stripLightWebhookContext.html +++ b/docs/types/stripLightWebhookContext.html @@ -1 +1 @@ -stripLightWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                      Type Alias stripLightWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                                      stripLightWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                          brightness: number;
                                                                                                                                                                                                                                                                                                                                                                                                          color: string;
                                                                                                                                                                                                                                                                                                                                                                                                          powerState: "ON" | "OFF";
                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                      +stripLightWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                      node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                        Type Alias stripLightWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                                        stripLightWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                            brightness: number;
                                                                                                                                                                                                                                                                                                                                                                                                            color: string;
                                                                                                                                                                                                                                                                                                                                                                                                            powerState: "ON" | "OFF";
                                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/docs/types/waterLeakDetector.html b/docs/types/waterLeakDetector.html index 70189b39..6159059b 100644 --- a/docs/types/waterLeakDetector.html +++ b/docs/types/waterLeakDetector.html @@ -1 +1 @@ -waterLeakDetector | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                        Type Alias waterLeakDetector

                                                                                                                                                                                                                                                                                                                                                                                                        waterLeakDetector: device & {}
                                                                                                                                                                                                                                                                                                                                                                                                        +waterLeakDetector | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                        node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                          Type Alias waterLeakDetector

                                                                                                                                                                                                                                                                                                                                                                                                          waterLeakDetector: device
                                                                                                                                                                                                                                                                                                                                                                                                          diff --git a/docs/types/waterLeakDetectorServiceData.html b/docs/types/waterLeakDetectorServiceData.html index 023b4b9b..8f6cf3bd 100644 --- a/docs/types/waterLeakDetectorServiceData.html +++ b/docs/types/waterLeakDetectorServiceData.html @@ -1 +1 @@ -waterLeakDetectorServiceData | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                          Type Alias waterLeakDetectorServiceData

                                                                                                                                                                                                                                                                                                                                                                                                          waterLeakDetectorServiceData: serviceData & {
                                                                                                                                                                                                                                                                                                                                                                                                              battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                              leak: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                              low_battery: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                              model: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                              modelFriendlyName: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                              modelName: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                              tampered: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                                                          +waterLeakDetectorServiceData | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                          node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                            Type Alias waterLeakDetectorServiceData

                                                                                                                                                                                                                                                                                                                                                                                                            waterLeakDetectorServiceData: BLEServiceData & {
                                                                                                                                                                                                                                                                                                                                                                                                                battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                                leak: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                                low_battery: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                                model: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                                modelFriendlyName: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                                modelName: Leak;
                                                                                                                                                                                                                                                                                                                                                                                                                tampered: boolean;
                                                                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/docs/types/waterLeakDetectorStatus.html b/docs/types/waterLeakDetectorStatus.html index aa7002d9..bdaed7c5 100644 --- a/docs/types/waterLeakDetectorStatus.html +++ b/docs/types/waterLeakDetectorStatus.html @@ -1 +1 @@ -waterLeakDetectorStatus | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                            Type Alias waterLeakDetectorStatus

                                                                                                                                                                                                                                                                                                                                                                                                            waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
                                                                                                                                                                                                                                                                                                                                                                                                            +waterLeakDetectorStatus | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                            node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                              Type Alias waterLeakDetectorStatus

                                                                                                                                                                                                                                                                                                                                                                                                              waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
                                                                                                                                                                                                                                                                                                                                                                                                              diff --git a/docs/types/waterLeakDetectorWebhookContext.html b/docs/types/waterLeakDetectorWebhookContext.html index 796ccbb2..e794c8de 100644 --- a/docs/types/waterLeakDetectorWebhookContext.html +++ b/docs/types/waterLeakDetectorWebhookContext.html @@ -1 +1 @@ -waterLeakDetectorWebhookContext | node-switchbot

                                                                                                                                                                                                                                                                                                                                                                                                              Type Alias waterLeakDetectorWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                                              waterLeakDetectorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                                  battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                                  detectionState: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                                                                                                                                                              +waterLeakDetectorWebhookContext | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                              node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                                Type Alias waterLeakDetectorWebhookContext

                                                                                                                                                                                                                                                                                                                                                                                                                waterLeakDetectorWebhookContext: deviceWebhookContext & {
                                                                                                                                                                                                                                                                                                                                                                                                                    battery: number;
                                                                                                                                                                                                                                                                                                                                                                                                                    detectionState: 0 | 1;
                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/variables/parameterChecker.html b/docs/variables/parameterChecker.html new file mode 100644 index 00000000..d1cd65a8 --- /dev/null +++ b/docs/variables/parameterChecker.html @@ -0,0 +1 @@ +parameterChecker | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                                node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                                  Variable parameterCheckerConst

                                                                                                                                                                                                                                                                                                                                                                                                                  parameterChecker: ParameterChecker = ...
                                                                                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/variables/urls.html b/docs/variables/urls.html new file mode 100644 index 00000000..e5fde9b9 --- /dev/null +++ b/docs/variables/urls.html @@ -0,0 +1 @@ +urls | node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                                  node-switchbot
                                                                                                                                                                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                                                                                                                                                                    Variable urlsConst

                                                                                                                                                                                                                                                                                                                                                                                                                    urls: {
                                                                                                                                                                                                                                                                                                                                                                                                                        get baseURL(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                        get deleteWebhook(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                        get devicesURL(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                        get queryWebhook(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                        get setupWebhook(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                        get updateWebhook(): string;
                                                                                                                                                                                                                                                                                                                                                                                                                    } = ...

                                                                                                                                                                                                                                                                                                                                                                                                                    Type Declaration

                                                                                                                                                                                                                                                                                                                                                                                                                    • get baseURL(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    • get deleteWebhook(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    • get devicesURL(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    • get queryWebhook(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    • get setupWebhook(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    • get updateWebhook(): string
                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/eslint.config.js b/eslint.config.js index 6fd1113f..87e504d9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -10,8 +10,6 @@ export default antfu( }, rules: { 'curly': ['error', 'multi-line'], - 'import/extensions': ['error', 'ignorePackages'], - 'import/order': 0, 'jsdoc/check-alignment': 'error', 'jsdoc/check-line-alignment': 'error', 'perfectionist/sort-exports': 'error', diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 04cb13c7..00000000 --- a/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -export const preset = 'ts-jest'; -export const testEnvironment = 'node'; -export const testMatch = ['**/?(*.)+(spec|test).[jt]s?(x)']; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 67701e32..b0243257 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,42 +1,44 @@ { "name": "node-switchbot", - "version": "3.5.1", + "version": "3.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "node-switchbot", - "version": "3.5.1", + "version": "3.6.0", "license": "MIT", "dependencies": { - "@stoprocent/noble": "^1.19.1", + "@stoprocent/noble": "^2.3.5", "async-mutex": "^0.5.0", - "undici": "7.4.0" + "undici": "^7.15.0" }, "devDependencies": { - "@antfu/eslint-config": "^4.4.0", + "@antfu/eslint-config": "^5.2.1", "@types/aes-js": "^3.1.4", "@types/debug": "^4.1.12", "@types/fs-extra": "^11.0.4", "@types/mdast": "^4.0.4", - "@types/node": "^22.13.9", - "@types/semver": "^7.5.8", + "@types/node": "^24.3.0", + "@types/semver": "^7.7.0", "@types/source-map-support": "^0.5.10", - "@vitest/coverage-v8": "^3.0.7", - "eslint": "^9.21.0", + "@vitest/coverage-v8": "^3.2.4", + "eslint": "^9.34.0", "eslint-plugin-format": "^1.0.1", - "nodemon": "^3.1.9", - "shx": "^0.3.4", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.16.1", + "nodemon": "^3.1.10", + "shx": "^0.4.0", "ts-node": "^10.9.2", - "typedoc": "^0.27.9", - "typescript": "^5.8.2", - "vitest": "^3.0.7" + "typedoc": "^0.28.11", + "typescript": "^5.9.2", + "vitest": "^3.2.4" }, "engines": { "node": "^20 || ^22 || ^24" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.5.2" + "@stoprocent/bluetooth-hci-socket": "^2.2.3" } }, "node_modules/@ampproject/remapping": { @@ -54,46 +56,47 @@ } }, "node_modules/@antfu/eslint-config": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-4.4.0.tgz", - "integrity": "sha512-UqZ517Gc6fjjcjHz4e1cDsBX6juixDxIDOpPpn9h6qIcrzTBq3Hc2RfBcU3GYuLrhsmGanmEdtCd0tSg2gJ+cg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-5.2.1.tgz", + "integrity": "sha512-EG/5kwDci1PFKSwAPMEMHDA/VYJFn0TAqwXLdnmE7zuFcaug3EGih7UOWmapMfL59Hqq6jbomaUHN31aVnL8NA==", "dev": true, "license": "MIT", "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@clack/prompts": "^0.10.0", - "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", - "@eslint/markdown": "^6.2.2", - "@stylistic/eslint-plugin": "^4.1.0", - "@typescript-eslint/eslint-plugin": "^8.25.0", - "@typescript-eslint/parser": "^8.25.0", - "@vitest/eslint-plugin": "^1.1.36", - "ansis": "^3.17.0", + "@antfu/install-pkg": "^1.1.0", + "@clack/prompts": "^0.11.0", + "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", + "@eslint/markdown": "^7.1.0", + "@stylistic/eslint-plugin": "^5.2.3", + "@typescript-eslint/eslint-plugin": "^8.39.0", + "@typescript-eslint/parser": "^8.39.0", + "@vitest/eslint-plugin": "^1.3.4", + "ansis": "^4.1.0", "cac": "^6.7.14", "eslint-config-flat-gitignore": "^2.1.0", - "eslint-flat-config-utils": "^2.0.1", + "eslint-flat-config-utils": "^2.1.1", "eslint-merge-processors": "^2.0.0", - "eslint-plugin-antfu": "^3.1.0", - "eslint-plugin-command": "^3.1.0", - "eslint-plugin-import-x": "^4.6.1", - "eslint-plugin-jsdoc": "^50.6.3", - "eslint-plugin-jsonc": "^2.19.1", - "eslint-plugin-n": "^17.16.1", + "eslint-plugin-antfu": "^3.1.1", + "eslint-plugin-command": "^3.3.1", + "eslint-plugin-import-lite": "^0.3.0", + "eslint-plugin-jsdoc": "^52.0.4", + "eslint-plugin-jsonc": "^2.20.1", + "eslint-plugin-n": "^17.21.3", "eslint-plugin-no-only-tests": "^3.3.0", - "eslint-plugin-perfectionist": "^4.9.0", - "eslint-plugin-regexp": "^2.7.0", + "eslint-plugin-perfectionist": "^4.15.0", + "eslint-plugin-pnpm": "^1.1.0", + "eslint-plugin-regexp": "^2.10.0", "eslint-plugin-toml": "^0.12.0", - "eslint-plugin-unicorn": "^57.0.0", + "eslint-plugin-unicorn": "^60.0.0", "eslint-plugin-unused-imports": "^4.1.4", - "eslint-plugin-vue": "^9.32.0", - "eslint-plugin-yml": "^1.17.0", + "eslint-plugin-vue": "^10.4.0", + "eslint-plugin-yml": "^1.18.0", "eslint-processor-vue-blocks": "^2.0.0", - "globals": "^16.0.0", + "globals": "^16.3.0", "jsonc-eslint-parser": "^2.4.0", - "local-pkg": "^1.1.0", + "local-pkg": "^1.1.1", "parse-gitignore": "^2.0.0", "toml-eslint-parser": "^0.10.0", - "vue-eslint-parser": "^9.4.3", + "vue-eslint-parser": "^10.2.0", "yaml-eslint-parser": "^1.3.0" }, "bin": { @@ -103,17 +106,20 @@ "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@eslint-react/eslint-plugin": "^1.19.0", + "@eslint-react/eslint-plugin": "^1.38.4", + "@next/eslint-plugin-next": "^15.4.0-canary.115", "@prettier/plugin-xml": "^3.4.1", "@unocss/eslint-plugin": ">=0.50.0", "astro-eslint-parser": "^1.0.2", "eslint": "^9.10.0", "eslint-plugin-astro": "^1.2.0", "eslint-plugin-format": ">=0.1.0", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.4", + "eslint-plugin-jsx-a11y": ">=6.10.2", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", "eslint-plugin-solid": "^0.14.3", "eslint-plugin-svelte": ">=2.35.1", + "eslint-plugin-vuejs-accessibility": "^2.4.1", "prettier-plugin-astro": "^0.14.0", "prettier-plugin-slidev": "^1.0.5", "svelte-eslint-parser": ">=0.37.0" @@ -122,6 +128,9 @@ "@eslint-react/eslint-plugin": { "optional": true }, + "@next/eslint-plugin-next": { + "optional": true + }, "@prettier/plugin-xml": { "optional": true }, @@ -137,6 +146,9 @@ "eslint-plugin-format": { "optional": true }, + "eslint-plugin-jsx-a11y": { + "optional": true + }, "eslint-plugin-react-hooks": { "optional": true }, @@ -149,6 +161,9 @@ "eslint-plugin-svelte": { "optional": true }, + "eslint-plugin-vuejs-accessibility": { + "optional": true + }, "prettier-plugin-astro": { "optional": true }, @@ -160,33 +175,62 @@ } } }, - "node_modules/@antfu/install-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", - "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-unused-imports": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", "dev": true, "license": "MIT", - "dependencies": { - "package-manager-detector": "^0.2.8", - "tinyexec": "^0.3.2" + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-vue": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", + "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "vue-eslint-parser": "^10.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/parser": { + "optional": true + } + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/@babel/helper-string-parser": { @@ -200,9 +244,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, "license": "MIT", "engines": { @@ -250,9 +294,9 @@ } }, "node_modules/@clack/core": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.4.1.tgz", - "integrity": "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", + "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", "dev": true, "license": "MIT", "dependencies": { @@ -261,13 +305,13 @@ } }, "node_modules/@clack/prompts": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.10.0.tgz", - "integrity": "sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", + "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", "dev": true, "license": "MIT", "dependencies": { - "@clack/core": "0.4.1", + "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } @@ -317,14 +361,47 @@ "dev": true, "license": "MIT" }, + "node_modules/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.0.tgz", - "integrity": "sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==", + "version": "0.50.2", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz", + "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint": "^9.6.1", "@types/estree": "^1.0.6", "@typescript-eslint/types": "^8.11.0", "comment-parser": "1.4.1", @@ -336,9 +413,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", "cpu": [ "ppc64" ], @@ -353,9 +430,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", "cpu": [ "arm" ], @@ -370,9 +447,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", "cpu": [ "arm64" ], @@ -387,9 +464,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", "cpu": [ "x64" ], @@ -404,9 +481,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", "cpu": [ "arm64" ], @@ -421,9 +498,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", "cpu": [ "x64" ], @@ -438,9 +515,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", "cpu": [ "arm64" ], @@ -455,9 +532,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", "cpu": [ "x64" ], @@ -472,9 +549,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", "cpu": [ "arm" ], @@ -489,9 +566,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", "cpu": [ "arm64" ], @@ -506,9 +583,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", "cpu": [ "ia32" ], @@ -523,9 +600,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", "cpu": [ "loong64" ], @@ -540,9 +617,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", "cpu": [ "mips64el" ], @@ -557,9 +634,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", "cpu": [ "ppc64" ], @@ -574,9 +651,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", "cpu": [ "riscv64" ], @@ -591,9 +668,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", "cpu": [ "s390x" ], @@ -608,9 +685,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", "cpu": [ "x64" ], @@ -625,9 +702,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", "cpu": [ "arm64" ], @@ -642,9 +719,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", "cpu": [ "x64" ], @@ -659,9 +736,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", "cpu": [ "arm64" ], @@ -676,9 +753,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", "cpu": [ "x64" ], @@ -692,10 +769,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", "cpu": [ "x64" ], @@ -710,9 +804,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", "cpu": [ "arm64" ], @@ -727,9 +821,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", "cpu": [ "ia32" ], @@ -744,9 +838,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", "cpu": [ "x64" ], @@ -761,9 +855,9 @@ } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.1.tgz", - "integrity": "sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.5.0.tgz", + "integrity": "sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==", "dev": true, "license": "MIT", "dependencies": { @@ -781,9 +875,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "dependencies": { @@ -841,9 +935,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -856,9 +950,9 @@ } }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -879,10 +973,20 @@ "node": "*" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -893,9 +997,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -917,9 +1021,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -954,26 +1058,35 @@ } }, "node_modules/@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", + "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, "node_modules/@eslint/markdown": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-6.2.2.tgz", - "integrity": "sha512-U0/KgzI9BVUuHDQ9M2fuVgB0QZ1fSyzwm8jKmHr1dlsLHGHYzoeIA9yqLMdTbV3ivZfp6rTdt6zqre3TfNExUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-7.1.0.tgz", + "integrity": "sha512-Y+X1B1j+/zupKDVJfkKc8uYMjQkGzfnd8lt7vK3y8x9Br6H5dBuhAfFrQ6ff7HAMm/1BwgecyEiRFkYCWPRxmA==", "dev": true, "license": "MIT", + "workspaces": [ + "examples/*" + ], "dependencies": { - "@eslint/core": "^0.10.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/core": "^0.15.1", + "@eslint/plugin-kit": "^0.3.4", + "github-slugger": "^2.0.0", "mdast-util-from-markdown": "^2.0.2", - "mdast-util-gfm": "^3.0.0", + "mdast-util-frontmatter": "^2.0.1", + "mdast-util-gfm": "^3.1.0", + "micromark-extension-frontmatter": "^2.0.0", "micromark-extension-gfm": "^3.0.0" }, "engines": { @@ -991,42 +1104,31 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.12.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@gerrit0/mini-shiki": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.24.1.tgz", - "integrity": "sha512-PNP/Gjv3VqU7z7DjRgO3F9Ok5frTKqtpV+LJW1RzMcr2zpRk0ulhEWnbcNGXzPC7BZyWMIHrkfQX2GZRfxrn6Q==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.9.1.tgz", + "integrity": "sha512-quvtbDhNf528BkMHQQd8xGJMpmA5taDZuex/JDF8ETEjS2iypXzr1hnEUVh+lTUyffFJ0JCxysUsiuUoEGIz/Q==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^1.24.0", - "@shikijs/types": "^1.24.0", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/engine-oniguruma": "^3.9.1", + "@shikijs/langs": "^3.9.1", + "@shikijs/themes": "^3.9.1", + "@shikijs/types": "^3.9.1", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@humanfs/core": { @@ -1261,6 +1363,19 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1324,9 +1439,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz", - "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz", + "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==", "cpu": [ "arm" ], @@ -1338,9 +1453,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz", - "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz", + "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==", "cpu": [ "arm64" ], @@ -1352,9 +1467,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz", + "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==", "cpu": [ "arm64" ], @@ -1366,9 +1481,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz", + "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==", "cpu": [ "x64" ], @@ -1380,9 +1495,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz", - "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz", + "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==", "cpu": [ "arm64" ], @@ -1394,9 +1509,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz", - "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz", + "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==", "cpu": [ "x64" ], @@ -1408,9 +1523,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz", - "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz", + "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==", "cpu": [ "arm" ], @@ -1422,9 +1537,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz", - "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz", + "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==", "cpu": [ "arm" ], @@ -1436,9 +1551,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz", + "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==", "cpu": [ "arm64" ], @@ -1450,9 +1565,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz", + "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==", "cpu": [ "arm64" ], @@ -1464,9 +1579,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz", - "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz", + "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==", "cpu": [ "loong64" ], @@ -1478,9 +1593,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz", - "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz", + "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==", "cpu": [ "ppc64" ], @@ -1492,9 +1607,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz", - "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz", + "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz", + "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==", "cpu": [ "riscv64" ], @@ -1506,9 +1635,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz", - "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz", + "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==", "cpu": [ "s390x" ], @@ -1520,9 +1649,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz", + "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==", "cpu": [ "x64" ], @@ -1534,9 +1663,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz", + "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==", "cpu": [ "x64" ], @@ -1548,9 +1677,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz", + "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==", "cpu": [ "arm64" ], @@ -1562,9 +1691,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz", - "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz", + "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==", "cpu": [ "ia32" ], @@ -1576,9 +1705,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz", + "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==", "cpu": [ "x64" ], @@ -1589,6 +1718,13 @@ "win32" ] }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@serialport/binding-mock": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", @@ -1880,38 +2016,58 @@ "optional": true }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.0.tgz", - "integrity": "sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.9.1.tgz", + "integrity": "sha512-WPlL/xqviwS3te4unSGGGfflKsuHLMI6tPdNYvgz/IygcBT6UiwDFSzjBKyebwi5GGSlXsjjdoJLIBnAplmEZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.9.1", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.9.1.tgz", + "integrity": "sha512-Vyy2Yv9PP3Veh3VSsIvNncOR+O93wFsNYgN2B6cCCJlS7H9SKFYc55edsqernsg8WT/zam1cfB6llJsQWLnVhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.9.1" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.9.1.tgz", + "integrity": "sha512-zAykkGECNICCMXpKeVvq04yqwaSuAIvrf8MjsU5bzskfg4XreU+O0B5wdNCYRixoB9snd3YlZ373WV5E/g5T9A==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.0", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "3.9.1" } }, "node_modules/@shikijs/types": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.0.tgz", - "integrity": "sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.9.1.tgz", + "integrity": "sha512-rqM3T7a0iM1oPKz9iaH/cVgNX9Vz1HERcUcXJ94/fulgVdwqfnhXzGxO4bLrAnh/o5CPLy3IcYedogfV+Ns0Qg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "dev": true, "license": "MIT" }, "node_modules/@stoprocent/bluetooth-hci-socket": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@stoprocent/bluetooth-hci-socket/-/bluetooth-hci-socket-1.5.2.tgz", - "integrity": "sha512-O1xOpI5Xf5/VzGlf2Gm9sxrERIKXH0b9h/3BY26xPOAbOk7u6sC+m15cYyUc4GJmcL7UElSSF3QHw+qzvtvQSA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@stoprocent/bluetooth-hci-socket/-/bluetooth-hci-socket-2.2.3.tgz", + "integrity": "sha512-aQmCkEaybqH7B1K6k2oJoZTf03g3PzmZFfi9+NHDiNVPi2Mbet4Mf86gVNEnctaG5aS9743zEMxSunWOzpt3MQ==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -1925,8 +2081,8 @@ "dependencies": { "async": "^3.2.6", "debug": "^4.3.7", - "node-addon-api": "^8.1.0", - "node-gyp-build": "^4.8.1", + "node-addon-api": "^8.3.1", + "node-gyp-build": "^4.8.4", "patch-package": "^8.0.0", "serialport": "^12.0.0" }, @@ -1935,14 +2091,13 @@ } }, "node_modules/@stoprocent/noble": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@stoprocent/noble/-/noble-1.19.1.tgz", - "integrity": "sha512-hgtb7WC1na1HSoJ51IVJZEq8f0cnlI4M+F5tjPcadQV06NPV0V8UoUM57pRZOpYn54qOPccOBc2E+IrpJOn2gQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@stoprocent/noble/-/noble-2.3.5.tgz", + "integrity": "sha512-zV2MPYskNwGKx8i62OtdkHKjThhaPHnPvynxHrUAzco4qX4p69nhW7fsGXaUPJN3x9MsGJFk96Vvzmn3EcwR5A==", "hasInstallScript": true, "license": "MIT", "dependencies": { "debug": "^4.3.7", - "napi-thread-safe-callback": "^0.0.6", "node-addon-api": "^8.1.0", "node-gyp-build": "^4.8.1" }, @@ -1950,21 +2105,22 @@ "node": ">=14" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.5.2" + "@stoprocent/bluetooth-hci-socket": "^2.2.3" } }, "node_modules/@stylistic/eslint-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz", - "integrity": "sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.2.3.tgz", + "integrity": "sha512-oY7GVkJGVMI5benlBDCaRrSC1qPasafyv5dOBLLv5MTilMGnErKhO6ziEfodDDIZbo5QxPUNW360VudJOFODMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.23.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/types": "^8.38.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "estraverse": "^5.3.0", - "picomatch": "^4.0.2" + "picomatch": "^4.0.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2001,6 +2157,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/aes-js": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/aes-js/-/aes-js-3.1.4.tgz", @@ -2008,6 +2175,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -2018,28 +2195,17 @@ "@types/ms": "*" } }, - "node_modules/@types/doctrine": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", - "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -2071,6 +2237,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsonfile": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", @@ -2099,26 +2272,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", - "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~7.10.0" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, "license": "MIT" }, @@ -2147,21 +2313,21 @@ "optional": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.0.tgz", - "integrity": "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.41.0.tgz", + "integrity": "sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/type-utils": "8.26.0", - "@typescript-eslint/utils": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/type-utils": "8.41.0", + "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2171,22 +2337,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.41.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.0.tgz", - "integrity": "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.41.0.tgz", + "integrity": "sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4" }, "engines": { @@ -2198,38 +2374,78 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.41.0.tgz", + "integrity": "sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.41.0", + "@typescript-eslint/types": "^8.41.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz", - "integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.41.0.tgz", + "integrity": "sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0" + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.41.0.tgz", + "integrity": "sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==", + "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.0.tgz", - "integrity": "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.41.0.tgz", + "integrity": "sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/utils": "8.26.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/utils": "8.41.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2240,13 +2456,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz", - "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.41.0.tgz", + "integrity": "sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==", "dev": true, "license": "MIT", "engines": { @@ -2258,20 +2474,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz", - "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.41.0.tgz", + "integrity": "sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/project-service": "8.41.0", + "@typescript-eslint/tsconfig-utils": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2281,20 +2499,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.0.tgz", - "integrity": "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.41.0.tgz", + "integrity": "sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2305,18 +2523,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz", - "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.41.0.tgz", + "integrity": "sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.41.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2326,47 +2544,319 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitest/coverage-v8": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.7.tgz", - "integrity": "sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^1.0.2", - "debug": "^4.4.0", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "std-env": "^3.8.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@vitest/browser": "3.0.7", - "vitest": "3.0.7" - }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - } - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@vitest/eslint-plugin": { - "version": "1.1.36", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.36.tgz", - "integrity": "sha512-IjBV/fcL9NJRxGw221ieaDsqKqj8qUo7rvSupDxMjTXyhsCusHC6M+jFUNqBp4PCkYFcf5bjrKxeZoCEWoPxig==", - "dev": true, - "license": "MIT", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/eslint-plugin": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz", + "integrity": "sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.24.1" + }, "peerDependencies": { - "@typescript-eslint/utils": "^8.24.0", "eslint": ">= 8.57.0", "typescript": ">= 5.0.0", "vitest": "*" @@ -2381,14 +2871,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.7.tgz", - "integrity": "sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.7", - "@vitest/utils": "3.0.7", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -2397,13 +2888,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.7.tgz", - "integrity": "sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.7", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -2412,7 +2903,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -2434,9 +2925,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.7.tgz", - "integrity": "sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -2447,27 +2938,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.7.tgz", - "integrity": "sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.7", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.7.tgz", - "integrity": "sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.7", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -2476,27 +2968,27 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.7.tgz", - "integrity": "sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.7.tgz", - "integrity": "sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.7", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { @@ -2577,9 +3069,9 @@ "optional": true }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -2656,9 +3148,9 @@ } }, "node_modules/ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz", + "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==", "dev": true, "license": "ISC", "engines": { @@ -2716,23 +3208,177 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT", "optional": true }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/async-mutex": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", @@ -2752,6 +3398,22 @@ "node": ">= 4.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2803,9 +3465,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -2823,10 +3485,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -2836,9 +3498,9 @@ } }, "node_modules/builtin-modules": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", - "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", "dev": true, "license": "MIT", "engines": { @@ -2859,17 +3521,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2889,9 +3581,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001702", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", - "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "dev": true, "funding": [ { @@ -2921,9 +3613,9 @@ } }, "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", "dev": true, "license": "MIT", "dependencies": { @@ -2934,7 +3626,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -2954,6 +3646,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", @@ -3014,9 +3713,9 @@ } }, "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", "dev": true, "funding": [ { @@ -3097,13 +3796,13 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", - "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.4" + "browserslist": "^4.25.1" }, "funding": { "type": "opencollective", @@ -3145,10 +3844,64 @@ "node": ">=4" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -3163,9 +3916,9 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3197,8 +3950,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3211,6 +3964,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -3236,16 +4007,31 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/eastasianwidth": { @@ -3256,9 +4042,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.112", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.112.tgz", - "integrity": "sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==", + "version": "1.5.191", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.191.tgz", + "integrity": "sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==", "dev": true, "license": "ISC" }, @@ -3269,10 +4055,20 @@ "dev": true, "license": "MIT" }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3296,15 +4092,81 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "get-intrinsic": "^1.2.4" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "devOptional": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3313,64 +4175,125 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, - "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "devOptional": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "es-errors": "^1.3.0" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "node": ">= 0.4" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -3391,19 +4314,20 @@ } }, "node_modules/eslint": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", + "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.21.0", - "@eslint/plugin-kit": "^0.2.7", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.34.0", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -3414,9 +4338,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3451,9 +4375,9 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3483,13 +4407,13 @@ } }, "node_modules/eslint-flat-config-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/eslint-flat-config-utils/-/eslint-flat-config-utils-2.0.1.tgz", - "integrity": "sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-flat-config-utils/-/eslint-flat-config-utils-2.1.1.tgz", + "integrity": "sha512-K8eaPkBemHkfbYsZH7z4lZ/tt6gNSsVh535Wh9W9gQBS2WjvfUbbVr2NZR3L1yiRCLuOEimYfPxCxODczD4Opg==", "dev": true, "license": "MIT", "dependencies": { - "pathe": "^2.0.2" + "pathe": "^2.0.3" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -3511,6 +4435,31 @@ "eslint": ">=8.40.0" } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -3568,6 +4517,34 @@ "eslint": "*" } }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/eslint-parser-plain": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/eslint-parser-plain/-/eslint-parser-plain-0.1.1.tgz", @@ -3576,9 +4553,9 @@ "license": "MIT" }, "node_modules/eslint-plugin-antfu": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-3.1.0.tgz", - "integrity": "sha512-BKlJcpIG8OGyU5JwQCdyTGaLuRgItheEYinhNroCx3bcuz2bCSYK0eNzJvPy2TY8yyz0uSSRxr5KHuQ1WOdOKg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-3.1.1.tgz", + "integrity": "sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==", "dev": true, "license": "MIT", "funding": { @@ -3589,13 +4566,13 @@ } }, "node_modules/eslint-plugin-command": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-3.1.0.tgz", - "integrity": "sha512-KLgxB8NMQ0iL7iwehyeqWVE7MaqRPwLTGW4d2CXYOj5tt4j6yU/hiNxQ/35FLq4SnMhv+tpE6FCvYbV4VS+BLw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-3.3.1.tgz", + "integrity": "sha512-fBVTXQ2y48TVLT0+4A6PFINp7GcdIailHAXbvPBixE7x+YpYnNQhFZxTdvnb+aWk+COgNebQKen/7m4dmgyWAw==", "dev": true, "license": "MIT", "dependencies": { - "@es-joy/jsdoccomment": "^0.50.0" + "@es-joy/jsdoccomment": "^0.50.2" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -3626,6 +4603,22 @@ "eslint": ">=8" } }, + "node_modules/eslint-plugin-es-x/node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-plugin-format": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-format/-/eslint-plugin-format-1.0.1.tgz", @@ -3648,90 +4641,201 @@ "eslint": "^8.40.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-import-x": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.6.1.tgz", - "integrity": "sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==", + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { - "@types/doctrine": "^0.0.9", - "@typescript-eslint/scope-manager": "^8.1.0", - "@typescript-eslint/utils": "^8.1.0", - "debug": "^4.3.4", - "doctrine": "^3.0.0", - "enhanced-resolve": "^5.17.1", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.7.3", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", - "minimatch": "^9.0.3", - "semver": "^7.6.3", - "stable-hash": "^0.0.4", - "tslib": "^2.6.3" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import-lite": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-lite/-/eslint-plugin-import-lite-0.3.0.tgz", + "integrity": "sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/types": "^8.34.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": ">=9.0.0", + "typescript": ">=4.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-import-x": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz", + "integrity": "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "^8.35.0", + "comment-parser": "^1.4.1", + "debug": "^4.4.1", + "eslint-import-context": "^0.1.9", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3 || ^10.0.1", + "semver": "^7.7.2", + "stable-hash-x": "^0.2.0", + "unrs-resolver": "^1.9.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-import-x" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "eslint-import-resolver-node": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/utils": { + "optional": true + }, + "eslint-import-resolver-node": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.6.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.3.tgz", - "integrity": "sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==", + "version": "52.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-52.0.4.tgz", + "integrity": "sha512-be5OzGlLExvcK13Il3noU7/v7WmAQGenTmCaBKf1pwVtPOb6X+PGFVnJad0QhMj4KKf45XjE4hbsBxv25q1fTg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.49.0", + "@es-joy/jsdoccomment": "~0.52.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.6", + "debug": "^4.4.1", "escape-string-regexp": "^4.0.0", - "espree": "^10.1.0", + "espree": "^10.4.0", "esquery": "^1.6.0", - "parse-imports": "^2.1.1", - "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "synckit": "^0.9.1" + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.11.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/@es-joy/jsdoccomment": { - "version": "0.49.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", - "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz", + "integrity": "sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==", "dev": true, "license": "MIT", "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.34.1", "comment-parser": "1.4.1", "esquery": "^1.6.0", "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { - "node": ">=16" + "node": ">=20.11.0" } }, "node_modules/eslint-plugin-jsonc": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.19.1.tgz", - "integrity": "sha512-MmlAOaZK1+Lg7YoCZPGRjb88ZjT+ct/KTsvcsbZdBm+w8WMzGx+XEmexk0m40P1WV9G2rFV7X3klyRGRpFXEjA==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.20.1.tgz", + "integrity": "sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "eslint-compat-utils": "^0.6.0", + "@eslint-community/eslint-utils": "^4.5.1", + "eslint-compat-utils": "^0.6.4", "eslint-json-compat-utils": "^0.2.1", - "espree": "^9.6.1", + "espree": "^9.6.1 || ^10.3.0", "graphemer": "^1.4.0", - "jsonc-eslint-parser": "^2.0.4", + "jsonc-eslint-parser": "^2.4.0", "natural-compare": "^1.4.0", - "synckit": "^0.6.0" + "synckit": "^0.6.2 || ^0.7.3 || ^0.11.5" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3743,81 +4847,51 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-jsonc/node_modules/eslint-compat-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", - "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", + "node_modules/eslint-plugin-jsonc/node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-jsonc/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsonc/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://opencollective.com/pkgr" } }, "node_modules/eslint-plugin-jsonc/node_modules/synckit": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", - "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.1" + "@pkgr/core": "^0.2.9" }, "engines": { - "node": ">=12.20" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, "node_modules/eslint-plugin-n": { - "version": "17.16.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.16.2.tgz", - "integrity": "sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==", + "version": "17.21.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.21.3.tgz", + "integrity": "sha512-MtxYjDZhMQgsWRm/4xYLL0i2EhusWT7itDxlJ80l1NND2AL2Vi5Mvneqv/ikG9+zpran0VsVRXTEHrpLmUZRNw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.1", + "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", "eslint-plugin-es-x": "^7.8.0", "get-tsconfig": "^4.8.1", "globals": "^15.11.0", + "globrex": "^0.1.2", "ignore": "^5.3.2", - "minimatch": "^9.0.5", - "semver": "^7.6.3" + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3853,32 +4927,60 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.9.0.tgz", - "integrity": "sha512-76lDfJnonOcXGW3bEXuqhEGId0LrOlvIE1yLHvK/eKMMPOc0b43KchAIR2Bdbqlg+LPXU5/Q+UzuzkO+cWHT6w==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.15.0.tgz", + "integrity": "sha512-pC7PgoXyDnEXe14xvRUhBII8A3zRgggKqJFx2a82fjrItDs1BSI7zdZnQtM2yQvcyod6/ujmzb7ejKPx8lZTnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.24.0", - "@typescript-eslint/utils": "^8.24.0", + "@typescript-eslint/types": "^8.34.1", + "@typescript-eslint/utils": "^8.34.1", "natural-orderby": "^5.0.0" }, "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "eslint": ">=8.0.0" + "eslint": ">=8.45.0" } }, - "node_modules/eslint-plugin-regexp": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.7.0.tgz", - "integrity": "sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==", + "node_modules/eslint-plugin-pnpm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-pnpm/-/eslint-plugin-pnpm-1.1.0.tgz", + "integrity": "sha512-sL93w0muBtjnogzk/loDsxzMbmXQOLP5Blw3swLDBXZgfb+qQI73bPcUbjVR+ZL+K62vGJdErV+43i3r5DsZPg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", + "find-up-simple": "^1.0.1", + "jsonc-eslint-parser": "^2.4.0", + "pathe": "^2.0.3", + "pnpm-workspace-yaml": "1.1.0", + "tinyglobby": "^0.2.14", + "yaml-eslint-parser": "^1.3.0" + }, + "peerDependencies": { + "eslint": "^9.0.0" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.10.0.tgz", + "integrity": "sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", "comment-parser": "^1.4.0", "jsdoc-type-pratt-parser": "^4.0.0", "refa": "^0.12.1", @@ -3914,141 +5016,46 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-toml/node_modules/eslint-compat-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", - "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, "node_modules/eslint-plugin-unicorn": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-57.0.0.tgz", - "integrity": "sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==", + "version": "60.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz", + "integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "@eslint-community/eslint-utils": "^4.4.1", - "ci-info": "^4.1.0", + "@babel/helper-validator-identifier": "^7.27.1", + "@eslint-community/eslint-utils": "^4.7.0", + "@eslint/plugin-kit": "^0.3.3", + "change-case": "^5.4.4", + "ci-info": "^4.3.0", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.40.0", + "core-js-compat": "^3.44.0", "esquery": "^1.6.0", - "globals": "^15.15.0", + "find-up-simple": "^1.0.1", + "globals": "^16.3.0", "indent-string": "^5.0.0", - "is-builtin-module": "^4.0.0", + "is-builtin-module": "^5.0.0", "jsesc": "^3.1.0", "pluralize": "^8.0.0", - "read-package-up": "^11.0.0", "regexp-tree": "^0.1.27", "regjsparser": "^0.12.0", - "semver": "^7.7.1", + "semver": "^7.7.2", "strip-indent": "^4.0.0" }, "engines": { - "node": ">=18.18" + "node": "^20.10.0 || >=21.0.0" }, "funding": { "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { - "eslint": ">=9.20.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-unused-imports": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", - "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", - "eslint": "^9.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz", - "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-vue/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "eslint": ">=9.29.0" } }, "node_modules/eslint-plugin-yml": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.17.0.tgz", - "integrity": "sha512-Q3LXFRnNpGYAK/PM0BY1Xs0IY1xTLfM0kC986nNQkx1l8tOGz+YS50N6wXkAJkrBpeUN9OxEMB7QJ+9MTDAqIQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.18.0.tgz", + "integrity": "sha512-9NtbhHRN2NJa/s3uHchO3qVVZw0vyOIvWlXWGaKCr/6l3Go62wsvJK5byiI6ZoYztDsow4GnS69BZD3GnqH3hA==", "dev": true, "license": "MIT", "dependencies": { @@ -4068,22 +5075,6 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-yml/node_modules/eslint-compat-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", - "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, "node_modules/eslint-processor-vue-blocks": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-processor-vue-blocks/-/eslint-processor-vue-blocks-2.0.0.tgz", @@ -4099,9 +5090,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4116,9 +5107,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4128,19 +5119,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4166,15 +5144,15 @@ } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4237,10 +5215,102 @@ "node": ">=0.10.0" } }, - "node_modules/expect-type": { + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.0.tgz", - "integrity": "sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4322,6 +5392,35 @@ "reusify": "^1.0.4" } }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -4409,6 +5508,22 @@ "dev": true, "license": "ISC" }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -4439,6 +5554,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -4459,8 +5583,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "devOptional": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -4487,18 +5611,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -4507,60 +5632,147 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "devOptional": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "devOptional": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true, + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4570,8 +5782,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4580,9 +5792,9 @@ } }, "node_modules/globals": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", - "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", "dev": true, "license": "MIT", "engines": { @@ -4592,14 +5804,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4619,6 +5855,19 @@ "dev": true, "license": "MIT" }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4633,8 +5882,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -4643,11 +5892,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4656,11 +5908,27 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "devOptional": true, "license": "MIT", - "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -4681,19 +5949,6 @@ "node": ">= 0.4" } }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -4758,26 +6013,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/index-to-position": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", - "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4787,8 +6029,23 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true, - "license": "ISC" + "license": "ISC", + "optional": true + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/interpret": { "version": "1.4.0", @@ -4800,6 +6057,60 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4813,14 +6124,31 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-builtin-module": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-4.0.0.tgz", - "integrity": "sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", "dependencies": { - "builtin-modules": "^4.0.0" + "builtin-modules": "^5.0.0" }, "engines": { "node": ">=18.20" @@ -4829,10 +6157,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -4845,6 +6186,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -4871,6 +6247,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -4881,6 +6273,25 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4891,17 +6302,215 @@ "is-extglob": "^2.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-wsl": { @@ -4921,8 +6530,8 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -5002,9 +6611,9 @@ } }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", "dev": true, "license": "MIT" }, @@ -5084,6 +6693,19 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/jsonc-eslint-parser": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", @@ -5261,9 +6883,9 @@ } }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", "dev": true, "license": "MIT" }, @@ -5355,6 +6977,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", @@ -5410,10 +7042,42 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5449,9 +7113,9 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5586,9 +7250,9 @@ } }, "node_modules/micromark": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", - "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "dev": true, "funding": [ { @@ -5622,9 +7286,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", - "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "dev": true, "funding": [ { @@ -5656,6 +7320,23 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", @@ -6120,9 +7801,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz", - "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "dev": true, "funding": [ { @@ -6160,9 +7841,9 @@ "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "dev": true, "funding": [ { @@ -6288,9 +7969,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -6306,11 +7987,21 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-thread-safe-callback": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/napi-thread-safe-callback/-/napi-thread-safe-callback-0.0.6.tgz", - "integrity": "sha512-X7uHCOCdY4u0yamDxDrv3jF2NtYc8A1nvPzBQgvpoSX+WB3jAe2cVNsY448V1ucq7Whf9Wdy02HEUoLW5rJKWg==", - "license": "ISC" + "node_modules/napi-postinstall": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.2.tgz", + "integrity": "sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } }, "node_modules/natural-compare": { "version": "1.4.0", @@ -6329,19 +8020,26 @@ "node": ">=18" } }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/node-addon-api": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.2.1.tgz", - "integrity": "sha512-vmEOvxwiH8tlOcv4SyE8RH34rI5/nWVaigUeAUPawC6f0+HoDthwI0vkMu4tbtsZrXq6QXFfrkhjofzKEs5tpA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" } }, "node_modules/node-gyp-build": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", - "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", "bin": { "node-gyp-build": "bin.js", @@ -6357,9 +8055,9 @@ "license": "MIT" }, "node_modules/nodemon": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", - "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", "dev": true, "license": "MIT", "dependencies": { @@ -6432,29 +8130,37 @@ "node": ">=4" } }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "path-key": "^2.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/nth-check": { @@ -6470,16 +8176,103 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" } }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6535,6 +8328,34 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6575,9 +8396,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/package-manager-detector": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", - "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", "dev": true, "license": "MIT" }, @@ -6604,37 +8425,22 @@ "node": ">=14" } }, - "node_modules/parse-imports": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", - "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "dependencies": { - "es-module-lexer": "^1.5.3", - "slashes": "^3.0.12" - }, - "engines": { - "node": ">= 18" + "parse-statements": "1.0.11" } }, - "node_modules/parse-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", - "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, "node_modules/patch-package": { "version": "8.0.0", @@ -6707,8 +8513,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } @@ -6755,9 +8561,9 @@ "license": "MIT" }, "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -6772,9 +8578,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -6796,20 +8602,50 @@ "pathe": "^2.0.3" } }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pnpm-workspace-yaml": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pnpm-workspace-yaml/-/pnpm-workspace-yaml-1.1.0.tgz", + "integrity": "sha512-OWUzBxtitpyUV0fBYYwLAfWxn3mSzVbVB7cwgNaHvTTU9P0V2QHjyaY5i7f1hEiT9VeKsNH1Skfhe2E3lx/zhA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT", + "dependencies": { + "yaml": "^2.8.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -6827,7 +8663,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6895,6 +8731,17 @@ "dev": true, "license": "MIT" }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -6953,44 +8800,6 @@ ], "license": "MIT" }, - "node_modules/read-package-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", - "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -7042,6 +8851,29 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexp-ast-analysis": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", @@ -7066,6 +8898,27 @@ "regexp-tree": "bin/regexp-tree" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regjsparser": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", @@ -7093,19 +8946,22 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7156,13 +9012,13 @@ } }, "node_modules/rollup": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz", - "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==", + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz", + "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -7172,25 +9028,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.9", - "@rollup/rollup-android-arm64": "4.34.9", - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-freebsd-arm64": "4.34.9", - "@rollup/rollup-freebsd-x64": "4.34.9", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.9", - "@rollup/rollup-linux-arm-musleabihf": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.9", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9", - "@rollup/rollup-linux-riscv64-gnu": "4.34.9", - "@rollup/rollup-linux-s390x-gnu": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-ia32-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9", + "@rollup/rollup-android-arm-eabi": "4.45.1", + "@rollup/rollup-android-arm64": "4.45.1", + "@rollup/rollup-darwin-arm64": "4.45.1", + "@rollup/rollup-darwin-x64": "4.45.1", + "@rollup/rollup-freebsd-arm64": "4.45.1", + "@rollup/rollup-freebsd-x64": "4.45.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.45.1", + "@rollup/rollup-linux-arm-musleabihf": "4.45.1", + "@rollup/rollup-linux-arm64-gnu": "4.45.1", + "@rollup/rollup-linux-arm64-musl": "4.45.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.45.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-musl": "4.45.1", + "@rollup/rollup-linux-s390x-gnu": "4.45.1", + "@rollup/rollup-linux-x64-gnu": "4.45.1", + "@rollup/rollup-linux-x64-musl": "4.45.1", + "@rollup/rollup-win32-arm64-msvc": "4.45.1", + "@rollup/rollup-win32-ia32-msvc": "4.45.1", + "@rollup/rollup-win32-x64-msvc": "4.45.1", "fsevents": "~2.3.2" } }, @@ -7218,6 +9075,61 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/scslre": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz", @@ -7234,9 +9146,9 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "devOptional": true, "license": "ISC", "bin": { @@ -7304,8 +9216,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7318,6 +9230,37 @@ "node": ">= 0.4" } }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7342,13 +9285,14 @@ } }, "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", + "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "glob": "^7.0.0", + "execa": "^1.0.0", + "fast-glob": "^3.3.2", "interpret": "^1.0.0", "rechoir": "^0.6.2" }, @@ -7356,24 +9300,100 @@ "shjs": "bin/shjs" }, "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/shx": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", - "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", + "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.3", - "shelljs": "^0.8.5" + "minimist": "^1.2.8", + "shelljs": "^0.9.2" }, "bin": { "shx": "lib/cli.js" }, "engines": { - "node": ">=6" + "node": ">=18" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/siginfo": { @@ -7383,6 +9403,13 @@ "dev": true, "license": "ISC" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -7403,13 +9430,6 @@ "dev": true, "license": "MIT" }, - "node_modules/slashes": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", - "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", - "dev": true, - "license": "ISC" - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7430,28 +9450,6 @@ "node": ">=0.10.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -7471,18 +9469,21 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, - "node_modules/stable-hash": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", - "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/stackback": { "version": "0.0.2", @@ -7492,12 +9493,26 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", - "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, "license": "MIT" }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -7526,7 +9541,66 @@ "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { @@ -7556,6 +9630,26 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", @@ -7585,6 +9679,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7629,9 +9736,9 @@ } }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true, "license": "MIT", "engines": { @@ -7682,16 +9789,33 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -7709,9 +9833,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true, "license": "MIT", "engines": { @@ -7784,9 +9908,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -7796,6 +9920,29 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-declaration-location": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", + "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", + "dev": true, + "funding": [ + { + "type": "ko-fi", + "url": "https://ko-fi.com/rebeccastevens" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "picomatch": "^4.0.2" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -7850,6 +9997,19 @@ "node": ">=0.3.1" } }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7869,46 +10029,112 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, "engines": { - "node": ">=16" + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedoc": { - "version": "0.27.9", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.9.tgz", - "integrity": "sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==", + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.11.tgz", + "integrity": "sha512-1FqgrrUYGNuE3kImAiEDgAVVVacxdO4ZVTKbiOVDGkoeSB4sNwQaDpa8mta+Lw5TEzBFmGXzsg0I1NLRIoaSFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^1.24.0", + "@gerrit0/mini-shiki": "^3.9.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", - "yaml": "^2.6.1" + "yaml": "^2.8.0" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 18" + "node": ">= 18", + "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" } }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7933,6 +10159,25 @@ "dev": true, "license": "MIT" }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -7941,34 +10186,21 @@ "license": "MIT" }, "node_modules/undici": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.4.0.tgz", - "integrity": "sha512-PUQM3/es3noM24oUn10u3kNNap0AbxESOmnssmW+dOi9yGwlUSi5nTNYl3bNbTkWOF8YZDkx2tCmj9OtQ3iGGw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.15.0.tgz", + "integrity": "sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==", "license": "MIT", "engines": { "node": ">=20.18.1" } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "dev": true, "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", @@ -8038,6 +10270,41 @@ "node": ">= 10.0.0" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -8109,44 +10376,25 @@ "dev": true, "license": "MIT" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/vite": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", - "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.6.tgz", + "integrity": "sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "postcss": "^8.5.3", - "rollup": "^4.30.1" + "fdir": "^6.4.6", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -8155,14 +10403,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -8204,17 +10452,17 @@ } }, "node_modules/vite-node": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.7.tgz", - "integrity": "sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.4.0", - "es-module-lexer": "^1.6.0", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -8227,31 +10475,34 @@ } }, "node_modules/vitest": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.7.tgz", - "integrity": "sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.7", - "@vitest/mocker": "3.0.7", - "@vitest/pretty-format": "^3.0.7", - "@vitest/runner": "3.0.7", - "@vitest/snapshot": "3.0.7", - "@vitest/spy": "3.0.7", - "@vitest/utils": "3.0.7", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", - "debug": "^4.4.0", - "expect-type": "^1.1.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", - "std-env": "^3.8.0", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.7", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -8267,8 +10518,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.7", - "@vitest/ui": "3.0.7", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -8296,93 +10547,140 @@ } } }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz", + "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" + "debug": "^4.4.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "semver": "^7.6.3" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, - "license": "ISC", + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/why-is-node-running": { @@ -8449,16 +10747,16 @@ } }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", "devOptional": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yaml-eslint-parser": { diff --git a/package.json b/package.json index 01bdd621..34935a6b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "node-switchbot", "type": "module", - "version": "3.5.1", + "version": "3.6.0", "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).", "author": "OpenWonderLabs (https://github.com/OpenWonderLabs)", "license": "MIT", @@ -51,30 +51,32 @@ }, "readmeFilename": "README.md", "dependencies": { - "@stoprocent/noble": "^1.19.1", + "@stoprocent/noble": "^2.3.5", "async-mutex": "^0.5.0", - "undici": "7.4.0" + "undici": "^7.15.0" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.5.2" + "@stoprocent/bluetooth-hci-socket": "^2.2.3" }, "devDependencies": { - "@antfu/eslint-config": "^4.4.0", + "@antfu/eslint-config": "^5.2.1", "@types/aes-js": "^3.1.4", "@types/debug": "^4.1.12", "@types/fs-extra": "^11.0.4", "@types/mdast": "^4.0.4", - "@types/node": "^22.13.9", - "@types/semver": "^7.5.8", + "@types/node": "^24.3.0", + "@types/semver": "^7.7.0", "@types/source-map-support": "^0.5.10", - "@vitest/coverage-v8": "^3.0.7", - "eslint": "^9.21.0", + "@vitest/coverage-v8": "^3.2.4", + "eslint": "^9.34.0", "eslint-plugin-format": "^1.0.1", - "nodemon": "^3.1.9", - "shx": "^0.3.4", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.16.1", + "nodemon": "^3.1.10", + "shx": "^0.4.0", "ts-node": "^10.9.2", - "typedoc": "^0.27.9", - "typescript": "^5.8.2", - "vitest": "^3.0.7" + "typedoc": "^0.28.11", + "typescript": "^5.9.2", + "vitest": "^3.2.4" } } diff --git a/src/device.test.ts b/src/device.test.ts new file mode 100644 index 00000000..0629cb85 --- /dev/null +++ b/src/device.test.ts @@ -0,0 +1,178 @@ +import { Buffer } from 'node:buffer' + +import { describe, expect, it } from 'vitest' + +import { ErrorUtils, LogLevel, ValidationUtils } from './device.js' + +describe('validationUtils', () => { + describe('validatePercentage', () => { + it('should accept valid percentages', () => { + expect(() => ValidationUtils.validatePercentage(0)).not.toThrow() + expect(() => ValidationUtils.validatePercentage(50)).not.toThrow() + expect(() => ValidationUtils.validatePercentage(100)).not.toThrow() + }) + + it('should reject invalid percentages', () => { + expect(() => ValidationUtils.validatePercentage(-1)).toThrow('must be between 0 and 100') + expect(() => ValidationUtils.validatePercentage(101)).toThrow('must be between 0 and 100') + expect(() => ValidationUtils.validatePercentage(Number.NaN)).toThrow('must be a valid number') + }) + + it('should reject non-numbers', () => { + expect(() => ValidationUtils.validatePercentage('50' as any)).toThrow('must be a valid number') + expect(() => ValidationUtils.validatePercentage(null as any)).toThrow('must be a valid number') + }) + }) + + describe('validateRGB', () => { + it('should accept valid RGB values', () => { + expect(() => ValidationUtils.validateRGB(0)).not.toThrow() + expect(() => ValidationUtils.validateRGB(128)).not.toThrow() + expect(() => ValidationUtils.validateRGB(255)).not.toThrow() + }) + + it('should reject invalid RGB values', () => { + expect(() => ValidationUtils.validateRGB(-1)).toThrow('must be an integer between 0 and 255') + expect(() => ValidationUtils.validateRGB(256)).toThrow('must be an integer between 0 and 255') + expect(() => ValidationUtils.validateRGB(128.5)).toThrow('must be an integer between 0 and 255') + }) + }) + + describe('validateBuffer', () => { + it('should accept valid buffers', () => { + const buffer = Buffer.from([1, 2, 3]) + expect(() => ValidationUtils.validateBuffer(buffer)).not.toThrow() + expect(() => ValidationUtils.validateBuffer(buffer, 3)).not.toThrow() + }) + + it('should reject non-buffers', () => { + expect(() => ValidationUtils.validateBuffer('not a buffer' as any)).toThrow('must be a Buffer instance') + expect(() => ValidationUtils.validateBuffer(null as any)).toThrow('must be a Buffer instance') + }) + + it('should validate buffer length', () => { + const buffer = Buffer.from([1, 2, 3]) + expect(() => ValidationUtils.validateBuffer(buffer, 2)).toThrow('must have exactly 2 bytes') + expect(() => ValidationUtils.validateBuffer(buffer, 4)).toThrow('must have exactly 4 bytes') + }) + }) + + describe('validateString', () => { + it('should accept valid strings', () => { + expect(() => ValidationUtils.validateString('hello')).not.toThrow() + expect(() => ValidationUtils.validateString('test', 'param', 1, 10)).not.toThrow() + }) + + it('should reject non-strings', () => { + expect(() => ValidationUtils.validateString(123 as any)).toThrow('must be a string') + expect(() => ValidationUtils.validateString(null as any)).toThrow('must be a string') + }) + + it('should validate string length', () => { + expect(() => ValidationUtils.validateString('')).toThrow('must have at least 1 character') + expect(() => ValidationUtils.validateString('too long', 'param', 1, 5)).toThrow('must have at most 5 character') + }) + }) + + describe('validateRange', () => { + it('should accept values in range', () => { + expect(() => ValidationUtils.validateRange(5, 0, 10)).not.toThrow() + expect(() => ValidationUtils.validateRange(0, 0, 10)).not.toThrow() + expect(() => ValidationUtils.validateRange(10, 0, 10)).not.toThrow() + }) + + it('should reject values out of range', () => { + expect(() => ValidationUtils.validateRange(-1, 0, 10)).toThrow('must be between 0 and 10') + expect(() => ValidationUtils.validateRange(11, 0, 10)).toThrow('must be between 0 and 10') + }) + + it('should validate integers when required', () => { + expect(() => ValidationUtils.validateRange(5, 0, 10, 'value', true)).not.toThrow() + expect(() => ValidationUtils.validateRange(5.5, 0, 10, 'value', true)).toThrow('must be an integer') + }) + }) + + describe('validateMacAddress', () => { + it('should accept valid MAC addresses', () => { + expect(() => ValidationUtils.validateMacAddress('AA:BB:CC:DD:EE:FF')).not.toThrow() + expect(() => ValidationUtils.validateMacAddress('aa:bb:cc:dd:ee:ff')).not.toThrow() + expect(() => ValidationUtils.validateMacAddress('AA-BB-CC-DD-EE-FF')).not.toThrow() + expect(() => ValidationUtils.validateMacAddress('aabbccddeeff')).not.toThrow() + }) + + it('should reject invalid MAC addresses', () => { + expect(() => ValidationUtils.validateMacAddress('invalid')).toThrow('must be a valid MAC address format') + expect(() => ValidationUtils.validateMacAddress('GG:BB:CC:DD:EE:FF')).toThrow('must be a valid MAC address format') + }) + }) + + describe('validateEnum', () => { + it('should accept valid enum values', () => { + const allowed = ['red', 'green', 'blue'] as const + expect(() => ValidationUtils.validateEnum('red', allowed)).not.toThrow() + expect(() => ValidationUtils.validateEnum('green', allowed)).not.toThrow() + }) + + it('should reject invalid enum values', () => { + const allowed = ['red', 'green', 'blue'] as const + expect(() => ValidationUtils.validateEnum('yellow', allowed)).toThrow('must be one of: red, green, blue') + }) + }) +}) + +describe('errorUtils', () => { + describe('createTimeoutError', () => { + it('should create descriptive timeout errors', () => { + const error = ErrorUtils.createTimeoutError('connect', 5000) + expect(error.message).toBe('Operation \'connect\' timed out after 5000ms') + }) + }) + + describe('createConnectionError', () => { + it('should create connection errors with device context', () => { + const error = ErrorUtils.createConnectionError('device123') + expect(error.message).toBe('Failed to connect to device device123') + }) + + it('should include cause if provided', () => { + const cause = new Error('Network unavailable') + const error = ErrorUtils.createConnectionError('device123', cause) + expect(error.message).toBe('Failed to connect to device device123: Network unavailable') + }) + }) + + describe('createCommandError', () => { + it('should create command errors with context', () => { + const error = ErrorUtils.createCommandError('turnOn', 'device123') + expect(error.message).toBe('Command \'turnOn\' failed for device device123') + }) + }) + + describe('withTimeout', () => { + it('should resolve when operation completes within timeout', async () => { + const fastOperation = Promise.resolve('success') + const result = await ErrorUtils.withTimeout(fastOperation, 1000, 'test') + expect(result).toBe('success') + }) + + it('should reject when operation exceeds timeout', async () => { + const slowOperation = new Promise(resolve => setTimeout(resolve, 100)) + await expect(ErrorUtils.withTimeout(slowOperation, 50, 'test')) + .rejects + .toThrow('Operation \'test\' timed out after 50ms') + }) + }) +}) + +describe('logLevel', () => { + it('should export all log levels', () => { + expect(LogLevel.SUCCESS).toBe('success') + expect(LogLevel.DEBUGSUCCESS).toBe('debugsuccess') + expect(LogLevel.WARN).toBe('warn') + expect(LogLevel.DEBUGWARN).toBe('debugwarn') + expect(LogLevel.ERROR).toBe('error') + expect(LogLevel.DEBUGERROR).toBe('debugerror') + expect(LogLevel.DEBUG).toBe('debug') + expect(LogLevel.INFO).toBe('info') + }) +}) diff --git a/src/device.ts b/src/device.ts index 3e8f4db5..8cbd9629 100644 --- a/src/device.ts +++ b/src/device.ts @@ -2,24 +2,90 @@ * * device.ts: Switchbot BLE API registration. */ -import type * as Noble from '@stoprocent/noble' +import type { Characteristic, Noble, Peripheral, Service } from '@stoprocent/noble' -import type { batteryCirculatorFanServiceData, blindTiltServiceData, botServiceData, ceilingLightProServiceData, ceilingLightServiceData, colorBulbServiceData, contactSensorServiceData, curtain3ServiceData, curtainServiceData, hub2ServiceData, humidifier2ServiceData, humidifierServiceData, keypadDetectorServiceData, lockProServiceData, lockServiceData, meterPlusServiceData, meterProCO2ServiceData, meterProServiceData, meterServiceData, motionSensorServiceData, outdoorMeterServiceData, plugMiniJPServiceData, plugMiniUSServiceData, relaySwitch1PMServiceData, relaySwitch1ServiceData, remoteServiceData, robotVacuumCleanerServiceData, stripLightServiceData, waterLeakDetectorServiceData } from './types/bledevicestatus.js' +import type { airPurifierServiceData, airPurifierTableServiceData, batteryCirculatorFanServiceData, blindTiltServiceData, botServiceData, ceilingLightProServiceData, ceilingLightServiceData, colorBulbServiceData, contactSensorServiceData, curtain3ServiceData, curtainServiceData, hub2ServiceData, hub3ServiceData, humidifier2ServiceData, humidifierServiceData, keypadDetectorServiceData, lockProServiceData, lockServiceData, meterPlusServiceData, meterProCO2ServiceData, meterProServiceData, meterServiceData, motionSensorServiceData, outdoorMeterServiceData, plugMiniJPServiceData, plugMiniUSServiceData, relaySwitch1PMServiceData, relaySwitch1ServiceData, remoteServiceData, robotVacuumCleanerServiceData, stripLightServiceData, waterLeakDetectorServiceData } from './types/ble.js' import { Buffer } from 'node:buffer' import * as Crypto from 'node:crypto' import { EventEmitter } from 'node:events' -import { parameterChecker } from './parameter-checker.js' import { CHAR_UUID_DEVICE, CHAR_UUID_NOTIFY, CHAR_UUID_WRITE, READ_TIMEOUT_MSEC, SERV_UUID_PRIMARY, WoSmartLockCommands, WoSmartLockProCommands, WRITE_TIMEOUT_MSEC } from './settings.js' -const HUMIDIFIER_COMMAND_HEADER = '5701' -const TURN_ON_KEY = `${HUMIDIFIER_COMMAND_HEADER}0101` -const TURN_OFF_KEY = `${HUMIDIFIER_COMMAND_HEADER}0102` -const INCREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0103` -const DECREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0104` -const SET_AUTO_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0105` -const SET_MANUAL_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0106` +/** + * Command constants for various SwitchBot devices. + * Using readonly arrays to ensure immutability and better type safety. + */ +const DEVICE_COMMANDS = { + BLIND_TILT: { + OPEN: [0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32] as const, + CLOSE_UP: [0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x64] as const, + CLOSE_DOWN: [0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x00] as const, + PAUSE: [0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF] as const, + }, + BULB: { + BASE: [0x57, 0x0F, 0x47, 0x01] as const, + READ_STATE: [0x57, 0x0F, 0x48, 0x01] as const, + TURN_ON: [0x01, 0x01] as const, + TURN_OFF: [0x01, 0x02] as const, + SET_BRIGHTNESS: [0x02, 0x14] as const, + SET_COLOR_TEMP: [0x02, 0x17] as const, + SET_RGB: [0x02, 0x12] as const, + }, + HUMIDIFIER: { + HEADER: '5701' as const, + TURN_ON: '570101' as const, + TURN_OFF: '570102' as const, + INCREASE: '570103' as const, + DECREASE: '570104' as const, + SET_AUTO_MODE: '570105' as const, + SET_MANUAL_MODE: '570106' as const, + }, + AIR_PURIFIER: { + TURN_ON: [0x57, 0x01, 0x01] as const, + TURN_OFF: [0x57, 0x01, 0x02] as const, + SET_MODE: [0x57, 0x02] as const, + SET_SPEED: [0x57, 0x03] as const, + }, + // Common commands used across multiple devices + COMMON: { + POWER_ON: [0x57, 0x01, 0x01] as const, + POWER_OFF: [0x57, 0x01, 0x02] as const, + }, +} as const + +/** + * Air quality level constants for air purifier devices. + */ +const AIR_QUALITY_LEVELS = { + EXCELLENT: 'excellent', + GOOD: 'good', + FAIR: 'fair', + POOR: 'poor', +} as const + +/** + * Air purifier mode constants. + */ +const AIR_PURIFIER_MODES = { + MANUAL: 'manual', + AUTO: 'auto', + SLEEP: 'sleep', + LEVEL_1: 'level_1', + LEVEL_2: 'level_2', + LEVEL_3: 'level_3', +} as const + +// Legacy constants for backward compatibility +const BLIND_TILT_COMMANDS = DEVICE_COMMANDS.BLIND_TILT +const BULB_COMMANDS = DEVICE_COMMANDS.BULB +const HUMIDIFIER_COMMAND_HEADER = DEVICE_COMMANDS.HUMIDIFIER.HEADER +const TURN_ON_KEY = DEVICE_COMMANDS.HUMIDIFIER.TURN_ON +const TURN_OFF_KEY = DEVICE_COMMANDS.HUMIDIFIER.TURN_OFF +const INCREASE_KEY = DEVICE_COMMANDS.HUMIDIFIER.INCREASE +const DECREASE_KEY = DEVICE_COMMANDS.HUMIDIFIER.DECREASE +const SET_AUTO_MODE_KEY = DEVICE_COMMANDS.HUMIDIFIER.SET_AUTO_MODE +const SET_MANUAL_MODE_KEY = DEVICE_COMMANDS.HUMIDIFIER.SET_MANUAL_MODE export type MacAddress = string @@ -27,7 +93,7 @@ export interface ad { id: string address: string rssi: number - serviceData: botServiceData | colorBulbServiceData | contactSensorServiceData | curtainServiceData | curtain3ServiceData | stripLightServiceData | lockServiceData | lockProServiceData | meterServiceData | meterPlusServiceData | meterProServiceData | meterProCO2ServiceData | motionSensorServiceData | outdoorMeterServiceData | plugMiniUSServiceData | plugMiniJPServiceData | blindTiltServiceData | ceilingLightServiceData | ceilingLightProServiceData | hub2ServiceData | batteryCirculatorFanServiceData | waterLeakDetectorServiceData | humidifierServiceData | humidifier2ServiceData | robotVacuumCleanerServiceData | keypadDetectorServiceData | relaySwitch1PMServiceData | relaySwitch1ServiceData | remoteServiceData + serviceData: airPurifierServiceData | airPurifierTableServiceData | botServiceData | colorBulbServiceData | contactSensorServiceData | curtainServiceData | curtain3ServiceData | stripLightServiceData | lockServiceData | lockProServiceData | meterServiceData | meterPlusServiceData | meterProServiceData | meterProCO2ServiceData | motionSensorServiceData | outdoorMeterServiceData | plugMiniUSServiceData | plugMiniJPServiceData | blindTiltServiceData | ceilingLightServiceData | ceilingLightProServiceData | hub2ServiceData | hub3ServiceData | batteryCirculatorFanServiceData | waterLeakDetectorServiceData | humidifierServiceData | humidifier2ServiceData | robotVacuumCleanerServiceData | keypadDetectorServiceData | relaySwitch1PMServiceData | relaySwitch1ServiceData | remoteServiceData [key: string]: unknown } @@ -52,6 +118,7 @@ export declare interface SwitchBotBLEDevice { MeterPro: DeviceInfo MeterProCO2: DeviceInfo Hub2: DeviceInfo + Hub3: DeviceInfo OutdoorMeter: DeviceInfo MotionSensor: DeviceInfo ContactSensor: DeviceInfo @@ -65,12 +132,15 @@ export declare interface SwitchBotBLEDevice { CeilingLightPro: DeviceInfo BlindTilt: DeviceInfo Unknown: DeviceInfo + AirPurifier: DeviceInfo + AirPurifierTable: DeviceInfo } export enum SwitchBotModel { HubMini = 'W0202200', HubPlus = 'SwitchBot Hub S1', Hub2 = 'W3202100', + Hub3 = 'W3302100', Bot = 'SwitchBot S1', Curtain = 'W0701600', Curtain3 = 'W2400000', @@ -114,6 +184,8 @@ export enum SwitchBotModel { RelaySwitch1 = 'W5502300', RelaySwitch1PM = 'W5502310', Unknown = 'Unknown', + AirPurifier = 'W5302300', + AirPurifierTable = 'W5302310', } export enum SwitchBotBLEModel { @@ -127,6 +199,7 @@ export enum SwitchBotBLEModel { MeterPro = '4', MeterProCO2 = '5', Hub2 = 'v', + Hub3 = 'V', OutdoorMeter = 'w', MotionSensor = 's', ContactSensor = 'd', @@ -145,11 +218,14 @@ export enum SwitchBotBLEModel { RelaySwitch1PM = '<', Remote = 'b', Unknown = 'Unknown', + AirPurifier = '+', + AirPurifierTable = '7', } export enum SwitchBotBLEModelName { Bot = 'WoHand', Hub2 = 'WoHub2', + Hub3 = 'WoHub3', ColorBulb = 'WoBulb', Curtain = 'WoCurtain', Curtain3 = 'WoCurtain3', @@ -174,12 +250,15 @@ export enum SwitchBotBLEModelName { RelaySwitch1 = 'WoRelaySwitch1Plus', RelaySwitch1PM = 'WoRelaySwitch1PM', Remote = 'WoRemote', + AirPurifier = 'WoAirPurifier', + AirPurifierTable = 'WoAirPurifierTable', Unknown = 'Unknown', } export enum SwitchBotBLEModelFriendlyName { Bot = 'Bot', Hub2 = 'Hub 2', + Hub3 = 'Hub 3', ColorBulb = 'Color Bulb', Curtain = 'Curtain', Curtain3 = 'Curtain 3', @@ -206,7 +285,13 @@ export enum SwitchBotBLEModelFriendlyName { RelaySwitch1 = 'Relay Switch 1', RelaySwitch1PM = 'Relay Switch 1PM', Remote = 'Remote', + AirPurifier = 'Air Purifier', + AirPurifierTable = 'Air Purifier Table', Unknown = 'Unknown', + AirPurifierVOC = 'Air Purifier VOC', + AirPurifierTableVOC = 'Air Purifier Table VOC', + AirPurifierPM2_5 = 'Air Purifier PM2.5', + AirPurifierTablePM2_5 = 'Air Purifier Table PM2.5', } export interface Params { @@ -214,7 +299,7 @@ export interface Params { model?: string id?: string quick?: boolean - noble?: typeof Noble + noble?: Noble } export interface ErrorObject { @@ -223,15 +308,14 @@ export interface ErrorObject { } export interface Chars { - write: Noble.Characteristic | null - notify: Noble.Characteristic | null - device: Noble.Characteristic | null + write: Characteristic | null + notify: Characteristic | null + device: Characteristic | null } export interface NobleTypes { - noble: typeof Noble - state: 'unknown' | 'resetting' | 'unsupported' | 'unauthorized' | 'poweredOff' | 'poweredOn' - peripheral: Noble.Peripheral + noble: Noble + peripheral: Peripheral } export interface ServiceData { @@ -269,11 +353,208 @@ export enum LogLevel { INFO = 'info', } +/** + * Utility class for comprehensive input validation with improved error messages. + */ +export class ValidationUtils { + /** + * Validates percentage value (0-100). + * @param value - The value to validate + * @param paramName - The parameter name for error reporting + * @throws {RangeError} When value is not within valid range + * @throws {TypeError} When value is not a number + */ + static validatePercentage(value: number, paramName: string = 'value'): void { + if (typeof value !== 'number' || Number.isNaN(value)) { + throw new TypeError(`${paramName} must be a valid number, got: ${value}`) + } + if (value < 0 || value > 100) { + throw new RangeError(`${paramName} must be between 0 and 100 inclusive, got: ${value}`) + } + } + + /** + * Validates RGB color value (0-255). + * @param value - The color value to validate + * @param colorName - The color name for error reporting + * @throws {RangeError} When value is not within valid range + * @throws {TypeError} When value is not a number + */ + static validateRGB(value: number, colorName: string = 'color'): void { + if (typeof value !== 'number' || Number.isNaN(value)) { + throw new TypeError(`${colorName} must be a valid number, got: ${value}`) + } + if (!Number.isInteger(value) || value < 0 || value > 255) { + throw new RangeError(`${colorName} must be an integer between 0 and 255 inclusive, got: ${value}`) + } + } + + /** + * Validates buffer and throws descriptive error. + * @param buffer - The buffer to validate + * @param expectedLength - Optional expected length + * @param paramName - The parameter name for error reporting + * @throws {TypeError} When buffer is not a Buffer + * @throws {RangeError} When buffer length doesn't match expected + */ + static validateBuffer(buffer: any, expectedLength?: number, paramName: string = 'buffer'): asserts buffer is Buffer { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError(`${paramName} must be a Buffer instance, got: ${typeof buffer}`) + } + if (expectedLength !== undefined && buffer.length !== expectedLength) { + throw new RangeError(`${paramName} must have exactly ${expectedLength} bytes, got: ${buffer.length} bytes`) + } + } + + /** + * Validates string input with comprehensive checks. + * @param value - The value to validate + * @param paramName - The parameter name for error reporting + * @param minLength - Minimum required length + * @param maxLength - Optional maximum length + * @throws {TypeError} When value is not a string + * @throws {RangeError} When string length is invalid + */ + static validateString( + value: any, + paramName: string = 'value', + minLength: number = 1, + maxLength?: number, + ): asserts value is string { + if (typeof value !== 'string') { + throw new TypeError(`${paramName} must be a string, got: ${typeof value}`) + } + if (value.length < minLength) { + throw new RangeError(`${paramName} must have at least ${minLength} character(s), got: ${value.length}`) + } + if (maxLength !== undefined && value.length > maxLength) { + throw new RangeError(`${paramName} must have at most ${maxLength} character(s), got: ${value.length}`) + } + } + + /** + * Validates numeric range with enhanced checks. + * @param value - The value to validate + * @param min - Minimum allowed value + * @param max - Maximum allowed value + * @param paramName - The parameter name for error reporting + * @param mustBeInteger - Whether the value must be an integer + * @throws {TypeError} When value is not a number + * @throws {RangeError} When value is outside valid range + */ + static validateRange( + value: number, + min: number, + max: number, + paramName: string = 'value', + mustBeInteger: boolean = false, + ): void { + if (typeof value !== 'number' || Number.isNaN(value)) { + throw new TypeError(`${paramName} must be a valid number, got: ${value}`) + } + if (mustBeInteger && !Number.isInteger(value)) { + throw new TypeError(`${paramName} must be an integer, got: ${value}`) + } + if (value < min || value > max) { + throw new RangeError(`${paramName} must be between ${min} and ${max} inclusive, got: ${value}`) + } + } + + /** + * Validates MAC address format. + * @param address - The MAC address to validate + * @param paramName - The parameter name for error reporting + * @throws {TypeError} When address is not a string + * @throws {Error} When address format is invalid + */ + static validateMacAddress(address: any, paramName: string = 'address'): asserts address is string { + if (typeof address !== 'string') { + throw new TypeError(`${paramName} must be a string`) + } + const macRegex = /^(?:[0-9A-F]{2}[:-]){5}[0-9A-F]{2}$|^[0-9A-F]{12}$/i + if (!macRegex.test(address)) { + throw new Error(`${paramName} must be a valid MAC address format, got: ${address}`) + } + } + + /** + * Validates that a value is one of the allowed enum values. + * @param value - The value to validate + * @param allowedValues - Array of allowed values + * @param paramName - The parameter name for error reporting + * @throws {Error} When value is not in allowed values + */ + static validateEnum(value: any, allowedValues: readonly T[], paramName: string = 'value'): asserts value is T { + if (!allowedValues.includes(value)) { + throw new Error(`${paramName} must be one of: ${allowedValues.join(', ')}, got: ${value}`) + } + } +} + +/** + * Enhanced error handling utilities. + */ +export class ErrorUtils { + /** + * Creates a timeout error with context. + * @param operation - The operation that timed out + * @param timeoutMs - The timeout duration in milliseconds + * @returns A descriptive timeout error + */ + static createTimeoutError(operation: string, timeoutMs: number): Error { + return new Error(`Operation '${operation}' timed out after ${timeoutMs}ms`) + } + + /** + * Creates a connection error with context. + * @param deviceId - The device ID that failed to connect + * @param cause - The underlying cause of the connection failure + * @returns A descriptive connection error + */ + static createConnectionError(deviceId: string, cause?: Error): Error { + const message = `Failed to connect to device ${deviceId}` + return cause ? new Error(`${message}: ${cause.message}`) : new Error(message) + } + + /** + * Creates a command error with context. + * @param command - The command that failed + * @param deviceId - The device ID + * @param cause - The underlying cause + * @returns A descriptive command error + */ + static createCommandError(command: string, deviceId: string, cause?: Error): Error { + const message = `Command '${command}' failed for device ${deviceId}` + return cause ? new Error(`${message}: ${cause.message}`) : new Error(message) + } + + /** + * Wraps an async operation with timeout and enhanced error handling. + * @param operation - The async operation to wrap + * @param timeoutMs - Timeout in milliseconds + * @param operationName - Name of the operation for error messages + * @returns Promise that resolves with the operation result or rejects with timeout + */ + static async withTimeout( + operation: Promise, + timeoutMs: number, + operationName: string, + ): Promise { + const timeoutPromise = new Promise((_, reject) => { + setTimeout(() => { + reject(this.createTimeoutError(operationName, timeoutMs)) + }, timeoutMs) + }) + + return Promise.race([operation, timeoutPromise]) + } +} + /** * Represents a Switchbot Device. */ export class SwitchbotDevice extends EventEmitter { - private noble: NobleTypes['noble'] + private noble: Noble private peripheral: NobleTypes['peripheral'] private characteristics: Chars | null = null private deviceId!: string @@ -283,16 +564,16 @@ export class SwitchbotDevice extends EventEmitter { private deviceFriendlyName!: SwitchBotBLEModelFriendlyName private explicitlyConnected = false private isConnected = false - private onNotify: (buf: Buffer) => void = () => {} - private onDisconnect: () => Promise = async () => {} - private onConnect: () => Promise = async () => {} + private onNotify: (buf: Buffer) => void = () => { } + private onDisconnect: () => Promise = async () => { } + private onConnect: () => Promise = async () => { } /** * Initializes a new instance of the SwitchbotDevice class. * @param peripheral The peripheral object from noble. * @param noble The Noble object. */ - constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']) { + constructor(peripheral: NobleTypes['peripheral'], noble: Noble) { super() this.peripheral = peripheral this.noble = noble @@ -380,8 +661,8 @@ export class SwitchbotDevice extends EventEmitter { * @returns A Promise that resolves when the connection is complete. */ public async internalConnect(): Promise { - if (this.noble._state !== 'poweredOn') { - throw new Error(`The Bluetooth status is ${this.noble._state}, not poweredOn.`) + if (this.noble.state !== 'poweredOn') { + throw new Error(`The Bluetooth status is ${this.noble.state}, not poweredOn.`) } const state = this.connectionState @@ -423,7 +704,7 @@ export class SwitchbotDevice extends EventEmitter { }) try { - const services = await Promise.race([this.discoverServices(), timeoutPromise]) as Noble.Service[] + const services = await Promise.race([this.discoverServices(), timeoutPromise]) as NobleTypes['peripheral']['services'] const chars: Chars = { write: null, notify: null, device: null } for (const service of services) { @@ -455,7 +736,7 @@ export class SwitchbotDevice extends EventEmitter { * Discovers the device services. * @returns A Promise that resolves with the list of services. */ - public async discoverServices(): Promise { + public async discoverServices(): Promise { try { const services = await this.peripheral.discoverServicesAsync([]) const primaryServices = services.filter(s => s.uuid === SERV_UUID_PRIMARY) @@ -474,8 +755,9 @@ export class SwitchbotDevice extends EventEmitter { * @param service The service to discover characteristics for. * @returns A Promise that resolves with the list of characteristics. */ - private async discoverCharacteristics(service: Noble.Service): Promise { - return await service.discoverCharacteristicsAsync([]) + // Discover characteristics without extra async/await + private discoverCharacteristics(service: Service): Promise { + return service.discoverCharacteristicsAsync([]) } /** @@ -540,12 +822,18 @@ export class SwitchbotDevice extends EventEmitter { */ async getDeviceName(): Promise { await this.internalConnect() - if (!this.characteristics?.device) { - throw new Error(`The device does not support the characteristic UUID 0x${CHAR_UUID_DEVICE}.`) + try { + if (!this.characteristics?.device) { + throw new Error(`Characteristic ${CHAR_UUID_DEVICE} not supported`) + } + const buf = await this.readCharacteristic(this.characteristics.device) + return buf.toString('utf8') + } catch (error: any) { + const deviceContext = `device ${this.deviceId || 'unknown'}` + throw ErrorUtils.createCommandError('getDeviceName', deviceContext, error) + } finally { + await this.internalDisconnect() } - const buf = await this.readCharacteristic(this.characteristics.device) - await this.internalDisconnect() - return buf.toString('utf8') } /** @@ -554,23 +842,26 @@ export class SwitchbotDevice extends EventEmitter { * @returns A Promise that resolves when the name is set. */ async setDeviceName(name: string): Promise { - const valid = parameterChecker.check( - { name }, - { name: { required: true, type: 'string', minBytes: 1, maxBytes: 100 } }, - true, - ) + ValidationUtils.validateString(name, 'name', 1) - if (!valid) { - throw new Error(parameterChecker.error!.message) + // Additional validation for device name length + const nameBuffer = Buffer.from(name, 'utf8') + if (nameBuffer.length > 100) { + throw new RangeError('Device name cannot exceed 100 bytes when encoded as UTF-8') } - const buf = Buffer.from(name, 'utf8') await this.internalConnect() - if (!this.characteristics?.device) { - throw new Error(`The device does not support the characteristic UUID 0x${CHAR_UUID_DEVICE}.`) + try { + if (!this.characteristics?.device) { + throw new Error(`Characteristic ${CHAR_UUID_DEVICE} not supported`) + } + await this.writeCharacteristic(this.characteristics.device, nameBuffer) + } catch (error: any) { + const deviceContext = `device ${this.deviceId || 'unknown'}` + throw ErrorUtils.createCommandError('setDeviceName', deviceContext, error) + } finally { + await this.internalDisconnect() } - await this.writeCharacteristic(this.characteristics.device, buf) - await this.internalDisconnect() } /** @@ -579,20 +870,24 @@ export class SwitchbotDevice extends EventEmitter { * @returns A Promise that resolves with the response buffer. */ async command(reqBuf: Buffer): Promise { - if (!Buffer.isBuffer(reqBuf)) { - throw new TypeError('The specified data is not acceptable for writing.') - } + ValidationUtils.validateBuffer(reqBuf, undefined, 'reqBuf') await this.internalConnect() if (!this.characteristics?.write) { - throw new Error('No characteristics available.') + throw new Error('No write characteristic available for command execution') } - await this.writeCharacteristic(this.characteristics.write, reqBuf) - const resBuf = await this.waitForCommandResponse() - await this.internalDisconnect() - - return resBuf + try { + await this.writeCharacteristic(this.characteristics.write, reqBuf) + const resBuf = await this.waitForCommandResponse() + return resBuf + } catch (error: any) { + const deviceContext = `device ${this.deviceId || 'unknown'}` + // Use ErrorUtils for enriched error context + throw ErrorUtils.createCommandError('execute command', deviceContext, error) + } finally { + await this.internalDisconnect() + } } /** @@ -620,42 +915,41 @@ export class SwitchbotDevice extends EventEmitter { } /** - * Reads data from a characteristic with a timeout. + * Reads data from a characteristic with enhanced timeout and error handling. * @param char The characteristic to read from. * @returns A Promise that resolves with the data buffer. */ - private async readCharacteristic(char: Noble.Characteristic): Promise { - const timer = setTimeout(() => { - throw new Error('READ_TIMEOUT') - }, READ_TIMEOUT_MSEC) - + private async readCharacteristic(char: Characteristic): Promise { try { - const result = await char.readAsync() - clearTimeout(timer) - return result + return await ErrorUtils.withTimeout( + char.readAsync(), + READ_TIMEOUT_MSEC, + `read characteristic ${char.uuid}`, + ) } catch (error) { - clearTimeout(timer) - throw error + const deviceContext = `device ${this.deviceId || 'unknown'}` + throw ErrorUtils.createCommandError(`read characteristic ${char.uuid}`, deviceContext, error as Error) } } /** - * Writes data to a characteristic with a timeout. + * Writes data to a characteristic with enhanced timeout and error handling. * @param char The characteristic to write to. * @param buf The data buffer. * @returns A Promise that resolves when the write is complete. */ - private async writeCharacteristic(char: Noble.Characteristic, buf: Buffer): Promise { - const timer = setTimeout(() => { - throw new Error('WRITE_TIMEOUT') - }, WRITE_TIMEOUT_MSEC) + private async writeCharacteristic(char: Characteristic, buf: Buffer): Promise { + ValidationUtils.validateBuffer(buf, undefined, 'write buffer') try { - await char.writeAsync(buf, false) - clearTimeout(timer) + return await ErrorUtils.withTimeout( + char.writeAsync(buf, false), + WRITE_TIMEOUT_MSEC, + `write to characteristic ${char.uuid}`, + ) } catch (error) { - clearTimeout(timer) - throw error + const deviceContext = `device ${this.deviceId || 'unknown'}` + throw ErrorUtils.createCommandError(`write to characteristic ${char.uuid}`, deviceContext, error as Error) } } } @@ -664,7 +958,7 @@ export class SwitchbotDevice extends EventEmitter { * Represents the advertising data parser for SwitchBot devices. */ export class Advertising { - constructor() {} + constructor() { } /** * Parses the advertisement data coming from SwitchBot device. @@ -720,10 +1014,11 @@ export class Advertising { * Validates if the buffer is a valid Buffer object with a minimum length. * * @param {any} buffer - The buffer to validate. + * @param {number} minLength - The minimum required length. * @returns {boolean} - True if the buffer is valid, false otherwise. */ - private static validateBuffer(buffer: any): boolean { - return buffer && Buffer.isBuffer(buffer) && buffer.length >= 3 + private static validateBuffer(buffer: any, minLength: number = 3): boolean { + return buffer && Buffer.isBuffer(buffer) && buffer.length >= minLength } /** @@ -761,8 +1056,14 @@ export class Advertising { return WoSensorTHProCO2.parseServiceData(serviceData, manufacturerData, emitLog) case SwitchBotBLEModel.Hub2: return WoHub2.parseServiceData(manufacturerData, emitLog) + case SwitchBotBLEModel.Hub3: + return WoHub3.parseServiceData(manufacturerData, emitLog) case SwitchBotBLEModel.OutdoorMeter: return WoIOSensorTH.parseServiceData(serviceData, manufacturerData, emitLog) + case SwitchBotBLEModel.AirPurifier: + return WoAirPurifier.parseServiceData(serviceData, manufacturerData, emitLog) + case SwitchBotBLEModel.AirPurifierTable: + return WoAirPurifierTable.parseServiceData(serviceData, manufacturerData, emitLog) case SwitchBotBLEModel.MotionSensor: return WoPresence.parseServiceData(serviceData, emitLog) case SwitchBotBLEModel.ContactSensor: @@ -879,7 +1180,7 @@ export class WoBlindTilt extends SwitchbotDevice { * @returns {Promise} */ async open(): Promise { - await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32]) + await this.operateBlindTilt([...BLIND_TILT_COMMANDS.OPEN]) } /** @@ -887,7 +1188,7 @@ export class WoBlindTilt extends SwitchbotDevice { * @returns {Promise} */ async closeUp(): Promise { - await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x64]) + await this.operateBlindTilt([...BLIND_TILT_COMMANDS.CLOSE_UP]) } /** @@ -895,7 +1196,7 @@ export class WoBlindTilt extends SwitchbotDevice { * @returns {Promise} */ async closeDown(): Promise { - await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x00]) + await this.operateBlindTilt([...BLIND_TILT_COMMANDS.CLOSE_DOWN]) } /** @@ -985,7 +1286,7 @@ export class WoBlindTilt extends SwitchbotDevice { * @returns {Promise} */ async pause(): Promise { - await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF]) + await this.operateBlindTilt([...BLIND_TILT_COMMANDS.PAUSE]) } /** @@ -995,13 +1296,11 @@ export class WoBlindTilt extends SwitchbotDevice { * @returns {Promise} */ async runToPos(percent: number, mode: number): Promise { - if (typeof percent !== 'number' || percent < 0 || percent > 100) { - throw new RangeError('Percent must be a number between 0 and 100') - } - if (typeof mode !== 'number' || mode < 0 || mode > 1) { - throw new RangeError('Mode must be a number between 0 and 1') - } - await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, mode, percent]) + ValidationUtils.validatePercentage(percent, 'percent') + ValidationUtils.validateRange(mode, 0, 1, 'mode', true) + + const adjustedPercent = this.reverse ? 100 - percent : percent + await this.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, mode, adjustedPercent]) } /** @@ -1088,7 +1387,7 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the bulb is ON (true) or OFF (false). */ async readState(): Promise { - return this.operateBulb([0x57, 0x0F, 0x48, 0x01]) + return this.operateBulb([...BULB_COMMANDS.READ_STATE]) } /** @@ -1098,8 +1397,7 @@ export class WoBulb extends SwitchbotDevice { * @private */ public async setState(reqByteArray: number[]): Promise { - const base = [0x57, 0x0F, 0x47, 0x01] - return this.operateBulb(base.concat(reqByteArray)) + return this.operateBulb([...BULB_COMMANDS.BASE, ...reqByteArray]) } /** @@ -1107,7 +1405,7 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the bulb is ON (true). */ async turnOn(): Promise { - return this.setState([0x01, 0x01]) + return this.setState([...BULB_COMMANDS.TURN_ON]) } /** @@ -1115,7 +1413,7 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the bulb is OFF (false). */ async turnOff(): Promise { - return this.setState([0x01, 0x02]) + return this.setState([...BULB_COMMANDS.TURN_OFF]) } /** @@ -1124,10 +1422,8 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the operation was successful. */ async setBrightness(brightness: number): Promise { - if (brightness < 0 || brightness > 100) { - throw new RangeError('Brightness must be between 0 and 100') - } - return this.setState([0x02, 0x14, brightness]) + ValidationUtils.validatePercentage(brightness, 'brightness') + return this.setState([...BULB_COMMANDS.SET_BRIGHTNESS, brightness]) } /** @@ -1136,10 +1432,8 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the operation was successful. */ async setColorTemperature(color_temperature: number): Promise { - if (color_temperature < 0 || color_temperature > 100) { - throw new RangeError('Color temperature must be between 0 and 100') - } - return this.setState([0x02, 0x17, color_temperature]) + ValidationUtils.validatePercentage(color_temperature, 'color_temperature') + return this.setState([...BULB_COMMANDS.SET_COLOR_TEMP, color_temperature]) } /** @@ -1151,10 +1445,11 @@ export class WoBulb extends SwitchbotDevice { * @returns {Promise} - Resolves with a boolean indicating whether the operation was successful. */ async setRGB(brightness: number, red: number, green: number, blue: number): Promise { - if (brightness < 0 || brightness > 100 || red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) { - throw new RangeError('Invalid RGB or brightness values') - } - return this.setState([0x02, 0x12, brightness, red, green, blue]) + ValidationUtils.validatePercentage(brightness, 'brightness') + ValidationUtils.validateRGB(red, 'red') + ValidationUtils.validateRGB(green, 'green') + ValidationUtils.validateRGB(blue, 'blue') + return this.setState([...BULB_COMMANDS.SET_RGB, brightness, red, green, blue]) } /** @@ -1722,6 +2017,52 @@ export class WoHub2 extends SwitchbotDevice { } } +/** + * Class representing a WoHub3 device. + * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md + */ +export class WoHub3 extends SwitchbotDevice { + /** + * Parses the service data for WoHub3. + * @param {Buffer} manufacturerData - The manufacturer data buffer. + * @param {Function} emitLog - The function to emit log messages. + * @returns {Promise} - Parsed service data or null if invalid. + */ + static async parseServiceData( + manufacturerData: Buffer, + emitLog: (level: string, message: string) => void, + ): Promise { + if (manufacturerData.length !== 16) { + emitLog('debugerror', `[parseServiceDataForWoHub3] Buffer length ${manufacturerData.length} !== 16!`) + return null + } + + const [byte0, byte1, byte2, , , , , , , , , , byte12] = manufacturerData + + const tempSign = byte1 & 0b10000000 ? 1 : -1 + const tempC = tempSign * ((byte1 & 0b01111111) + (byte0 & 0b00001111) / 10) + const tempF = Math.round(((tempC * 9) / 5 + 32) * 10) / 10 + const lightLevel = byte12 & 0b11111 + + const data: hub3ServiceData = { + model: SwitchBotBLEModel.Hub3, + modelName: SwitchBotBLEModelName.Hub3, + modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub3, + celsius: tempC, + fahrenheit: tempF, + fahrenheit_mode: !!(byte2 & 0b10000000), + humidity: byte2 & 0b01111111, + lightLevel, + } + + return data + } + + constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']) { + super(peripheral, noble) + } +} + /** * Class representing a WoHumi device. * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/tree/latest/devicetypes @@ -2791,8 +3132,7 @@ export class WoSensorTHProCO2 extends SwitchbotDevice { battery: byte2 & 0b01111111, co2: byte6, } as meterProCO2ServiceData - } - else { + } else { const [mdByte10, mdByte11, mdByte12] = [ manufacturerData.readUInt8(10), manufacturerData.readUInt8(11), @@ -3299,6 +3639,7 @@ export class WoStrip extends SwitchbotDevice { red: byte3, green: byte4, blue: byte5, + color_temperature: 0, // Add a default value or extract from serviceData if available delay: byte8 & 0b10000000, preset: byte8 & 0b00001000, color_mode: byte8 & 0b00000111, @@ -3403,3 +3744,303 @@ export class WoStrip extends SwitchbotDevice { } } } + +/** + * Class representing a SwitchBot Air Purifier device. + * @extends SwitchbotDevice + */ +export class WoAirPurifier extends SwitchbotDevice { + /** + * Parses service data for air purifier devices. + * @param {Buffer | null} serviceData - The service data buffer. + * @param {Buffer | null} manufacturerData - The manufacturer data buffer. + * @param {Function} emitLog - The function to emit log messages. + * @returns {airPurifierServiceData | null} - The parsed service data or null. + */ + static parseServiceData(serviceData: Buffer | null, manufacturerData: Buffer | null, emitLog?: (level: string, message: string) => void): airPurifierServiceData | null { + if (!manufacturerData || manufacturerData.length < 14) { + return null + } + + const deviceData = manufacturerData.subarray(6) + + if (deviceData.length < 8) { + return null + } + + const sequenceNumber = deviceData[0] + const isOn = Boolean(deviceData[1] & 0b10000000) + const mode = deviceData[1] & 0b00000111 + const isAqiValid = Boolean(deviceData[2] & 0b00000100) + const childLock = Boolean(deviceData[2] & 0b00000010) + const speed = deviceData[3] & 0b01111111 + const aqiLevelRaw = (deviceData[4] & 0b00000110) >> 1 + const workTime = (deviceData[5] << 8) | deviceData[6] + const errCode = deviceData[7] + + // Map AQI level to string using the defined constant + const aqiLevelValues = [ + AIR_QUALITY_LEVELS.EXCELLENT, + AIR_QUALITY_LEVELS.GOOD, + AIR_QUALITY_LEVELS.FAIR, + AIR_QUALITY_LEVELS.POOR, + ] + const aqiLevel = aqiLevelValues[aqiLevelRaw] || 'unknown' + + // Determine mode based on mode value and speed + let modeString: string | null = null + if (mode === 1) { + if (speed >= 0 && speed <= 33) { + modeString = AIR_PURIFIER_MODES.LEVEL_1 + } else if (speed >= 34 && speed <= 66) { + modeString = AIR_PURIFIER_MODES.LEVEL_2 + } else { + modeString = AIR_PURIFIER_MODES.LEVEL_3 + } + } else if (mode > 1 && mode <= 4) { + const modeMap = [null, null, 'auto', 'sleep', 'manual'] + modeString = modeMap[mode + 2] || null + } + + if (emitLog) { + emitLog('debug', `Air Purifier Service Data: isOn=${isOn}, mode=${modeString}, speed=${speed}, AQI=${aqiLevel}`) + } + + return { + model: SwitchBotBLEModel.AirPurifier, + modelName: SwitchBotBLEModelName.AirPurifier, + modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifier, + isOn, + mode: modeString, + isAqiValid, + child_lock: childLock, + speed, + aqi_level: aqiLevel, + filter_element_working_time: workTime, + err_code: errCode, + sequence_number: sequenceNumber, + } + } + + /** + * Sets the state of the air purifier. + * @param {number[]} reqByteArray - The request byte array. + * @returns {Promise} - Resolves with a boolean indicating whether the operation was successful. + * @private + */ + public async setState(reqByteArray: number[]): Promise { + return this.operateAirPurifier(reqByteArray) + } + + /** + * Turns the air purifier on. + * @returns {Promise} - Resolves with true if the air purifier is turned on. + */ + async turnOn(): Promise { + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.TURN_ON]) + } + + /** + * Turns the air purifier off. + * @returns {Promise} - Resolves with true if the air purifier is turned off. + */ + async turnOff(): Promise { + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.TURN_OFF]) + } + + /** + * Sets the speed of the air purifier. + * @param {number} speed - The speed value (0-100). + * @returns {Promise} - Resolves with true if the operation was successful. + */ + async setSpeed(speed: number): Promise { + if (typeof speed !== 'number' || speed < 0 || speed > 100) { + throw new TypeError(`Invalid speed value: ${speed}`) + } + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.SET_SPEED, speed]) + } + + /** + * Sets the mode of the air purifier. + * @param {number} mode - The mode value (1-4). + * @returns {Promise} - Resolves with true if the operation was successful. + */ + async setMode(mode: number): Promise { + if (typeof mode !== 'number' || mode < 1 || mode > 4) { + throw new TypeError(`Invalid mode value: ${mode}`) + } + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.SET_MODE, mode]) + } + + /** + * Operates the air purifier with the given byte array. + * @public + * @param {number[]} bytes - The byte array to send. + * @returns {Promise} - Resolves with true if the operation was successful. + */ + public async operateAirPurifier(bytes: number[]): Promise { + const req_buf = Buffer.from(bytes) + const res_buf = await this.command(req_buf) + + if (res_buf.length !== 2) { + throw new Error(`Expecting a 2-byte response, got instead: 0x${res_buf.toString('hex')}`) + } + + const code = res_buf.readUInt8(1) + if (code === 0x00 || code === 0x80) { + return code === 0x80 + } else { + throw new Error(`The device returned an error: 0x${res_buf.toString('hex')}`) + } + } +} + +/** + * Class representing a SwitchBot Air Purifier Table device. + * @extends SwitchbotDevice + */ +export class WoAirPurifierTable extends SwitchbotDevice { + /** + * Parses service data for air purifier table devices. + * @param {Buffer | null} serviceData - The service data buffer. + * @param {Buffer | null} manufacturerData - The manufacturer data buffer. + * @param {Function} emitLog - The function to emit log messages. + * @returns {airPurifierTableServiceData | null} - The parsed service data or null. + */ + static parseServiceData(serviceData: Buffer | null, manufacturerData: Buffer | null, emitLog?: (level: string, message: string) => void): airPurifierTableServiceData | null { + if (!manufacturerData || manufacturerData.length < 14) { + return null + } + + const deviceData = manufacturerData.subarray(6) + + if (deviceData.length < 8) { + return null + } + + const sequenceNumber = deviceData[0] + const isOn = Boolean(deviceData[1] & 0b10000000) + const mode = deviceData[1] & 0b00000111 + const isAqiValid = Boolean(deviceData[2] & 0b00000100) + const childLock = Boolean(deviceData[2] & 0b00000010) + const speed = deviceData[3] & 0b01111111 + const aqiLevelRaw = (deviceData[4] & 0b00000110) >> 1 + const workTime = (deviceData[5] << 8) | deviceData[6] + const errCode = deviceData[7] + + // Map AQI level to string using the defined constant + const aqiLevelValues = [ + AIR_QUALITY_LEVELS.EXCELLENT, + AIR_QUALITY_LEVELS.GOOD, + AIR_QUALITY_LEVELS.FAIR, + AIR_QUALITY_LEVELS.POOR, + ] + const aqiLevel = aqiLevelValues[aqiLevelRaw] || 'unknown' + + // Determine mode based on mode value and speed + let modeString: string | null = null + if (mode === 1) { + if (speed >= 0 && speed <= 33) { + modeString = AIR_PURIFIER_MODES.LEVEL_1 + } else if (speed >= 34 && speed <= 66) { + modeString = AIR_PURIFIER_MODES.LEVEL_2 + } else { + modeString = AIR_PURIFIER_MODES.LEVEL_3 + } + } else if (mode > 1 && mode <= 4) { + const modeMap = [null, null, 'auto', 'sleep', 'manual'] + modeString = modeMap[mode + 2] || null + } + + if (emitLog) { + emitLog('debug', `Air Purifier Table Service Data: isOn=${isOn}, mode=${modeString}, speed=${speed}, AQI=${aqiLevel}`) + } + + return { + model: SwitchBotBLEModel.AirPurifierTable, + modelName: SwitchBotBLEModelName.AirPurifierTable, + modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifierTable, + isOn, + mode: modeString, + isAqiValid, + child_lock: childLock, + speed, + aqi_level: aqiLevel, + filter_element_working_time: workTime, + err_code: errCode, + sequence_number: sequenceNumber, + } + } + + /** + * Sets the state of the air purifier table. + * @param {number[]} reqByteArray - The request byte array. + * @returns {Promise} - Resolves with a boolean indicating whether the operation was successful. + * @private + */ + public async setState(reqByteArray: number[]): Promise { + return this.operateAirPurifierTable(reqByteArray) + } + + /** + * Turns the air purifier table on. + * @returns {Promise} - Resolves with true if the air purifier table is turned on. + */ + async turnOn(): Promise { + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.TURN_ON]) + } + + /** + * Turns the air purifier table off. + * @returns {Promise} - Resolves with true if the air purifier table is turned off. + */ + async turnOff(): Promise { + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.TURN_OFF]) + } + + /** + * Sets the speed of the air purifier table. + * @param {number} speed - The speed value (0-100). + * @returns {Promise} - Resolves with true if the operation was successful. + */ + async setSpeed(speed: number): Promise { + if (typeof speed !== 'number' || speed < 0 || speed > 100) { + throw new TypeError(`Invalid speed value: ${speed}`) + } + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.SET_SPEED, speed]) + } + + /** + * Sets the mode of the air purifier table. + * @param {number} mode - The mode value (1-4). + * @returns {Promise} - Resolves with true if the operation was successful. + */ + async setMode(mode: number): Promise { + if (typeof mode !== 'number' || mode < 1 || mode > 4) { + throw new TypeError(`Invalid mode value: ${mode}`) + } + return this.setState([...DEVICE_COMMANDS.AIR_PURIFIER.SET_MODE, mode]) + } + + /** + * Operates the air purifier table with the given byte array. + * @public + * @param {number[]} bytes - The byte array to send. + * @returns {Promise} - Resolves with true if the operation was successful. + */ + public async operateAirPurifierTable(bytes: number[]): Promise { + const req_buf = Buffer.from(bytes) + const res_buf = await this.command(req_buf) + + if (res_buf.length !== 2) { + throw new Error(`Expecting a 2-byte response, got instead: 0x${res_buf.toString('hex')}`) + } + + const code = res_buf.readUInt8(1) + if (code === 0x00 || code === 0x80) { + return code === 0x80 + } else { + throw new Error(`The device returned an error: 0x${res_buf.toString('hex')}`) + } + } +} diff --git a/src/index.ts b/src/index.ts index 246bb317..0e675c89 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,13 +2,13 @@ * * index.ts: Switchbot BLE API registration. */ +// Primary module exports export * from './device.js' +export { ParameterChecker, parameterChecker } from './parameter-checker.js' +export { updateBaseURL, urls } from './settings.js' export * from './switchbot-ble.js' export * from './switchbot-openapi.js' -export * from './types/bledevicestatus.js' -export * from './types/devicelist.js' -export * from './types/devicepush.js' -export * from './types/deviceresponse.js' -export * from './types/devicestatus.js' -export * from './types/devicewebhookstatus.js' -export * from './types/irdevicelist.js' + +// Type definitions +export * from './types/ble.js' +export * from './types/openapi.js' diff --git a/src/parameter-checker.test.ts b/src/parameter-checker.test.ts new file mode 100644 index 00000000..8226739b --- /dev/null +++ b/src/parameter-checker.test.ts @@ -0,0 +1,65 @@ +import type { Rule } from './device.js' + +import { describe, expect, it } from 'vitest' + +import { ParameterChecker } from './parameter-checker.js' + +describe('parameterChecker', () => { + it('should pass with empty rules and no required object', async () => { + const checker = new ParameterChecker() + const result = await checker.check({}, {}, false) + expect(result).toBe(true) + expect(checker.error).toBeNull() + }) + + it('should fail when required object is missing', async () => { + const checker = new ParameterChecker() + const result = await checker.check(undefined as any, {}, true) + expect(result).toBe(false) + expect(checker.error?.code).toBe('MISSING_REQUIRED') + }) + + it('should fail when required field is missing', async () => { + const checker = new ParameterChecker() + const rules: Record = { + name: { type: 'string', required: true }, + } + const result = await checker.check({}, rules) + expect(result).toBe(false) + expect(checker.error?.code).toBe('MISSING_REQUIRED') + }) + + it('should fail on type mismatch for integer', async () => { + const checker = new ParameterChecker() + const rules: Record = { + age: { type: 'integer', required: true }, + } + const result = await checker.check({ age: 25.5 }, rules) + expect(result).toBe(false) + expect(checker.error?.code).toBe('TYPE_INVALID') + }) + + it('should enforce float min and max', async () => { + const checker = new ParameterChecker() + const rules: Record = { + temperature: { type: 'float', min: 0, max: 100 }, + } + let result = await checker.check({ temperature: -5 }, rules) + expect(result).toBe(false) + expect(checker.error?.code).toBe('VALUE_UNDERFLOW') + + result = await checker.check({ temperature: 150 }, rules) + expect(result).toBe(false) + expect(checker.error?.code).toBe('VALUE_OVERFLOW') + }) + + it('should ignore extra parameters', async () => { + const checker = new ParameterChecker() + const rules: Record = { + id: { type: 'integer' }, + } + const result = await checker.check({ id: 1, extra: 'ignored' }, rules) + expect(result).toBe(true) + expect(checker.error).toBeNull() + }) +}) diff --git a/src/parameter-checker.ts b/src/parameter-checker.ts index 68f069b4..72ee998c 100644 --- a/src/parameter-checker.ts +++ b/src/parameter-checker.ts @@ -9,6 +9,15 @@ import { EventEmitter } from 'node:events' export class ParameterChecker extends EventEmitter { private _error: ErrorObject | null = null + // Mapping of type names to checker methods + private readonly typeCheckers: Record Promise> = { + float: this.isFloat.bind(this), + integer: this.isInteger.bind(this), + boolean: this.isBoolean.bind(this), + array: this.isArray.bind(this), + object: this.isObject.bind(this), + string: this.isString.bind(this), + } /** * Emits a log event with the specified log level and message. @@ -16,7 +25,7 @@ export class ParameterChecker extends EventEmitter { * @param level - The severity level of the log (e.g., 'info', 'warn', 'error'). * @param message - The log message to be emitted. */ - private async emitLog(level: string, message: string): Promise { + private emitLog(level: string, message: string): void { this.emit('log', { level, message }) } @@ -76,25 +85,23 @@ export class ParameterChecker extends EventEmitter { continue } - const typeCheckers: Record Promise> = { - float: this.isFloat.bind(this), - integer: this.isInteger.bind(this), - boolean: this.isBoolean.bind(this), - array: this.isArray.bind(this), - object: this.isObject.bind(this), - string: this.isString.bind(this), - } - - const checker = rule.type && typeCheckers[rule.type] + const checker = rule.type && this.typeCheckers[rule.type] if (checker) { if (!(await checker(value, rule, name))) { return false } } else { - this._error = { code: 'TYPE_UNKNOWN', message: `The rule specified for the \`${name}\` includes an unknown type: ${rule.type}` } + // Unknown type specified in rule + this.emitLog('error', `Unknown type "${rule.type}" in rule for parameter "${name}"`) + this._error = { code: 'TYPE_UNKNOWN', message: `Unknown type "${rule.type}" for parameter "${name}"` } return false } } + // Warn about extra parameters not defined in rules + const extra = Object.keys(obj).filter(key => !(key in rules)) + if (extra.length) { + this.emitLog('warn', `Ignoring extra parameters: ${extra.join(', ')}`) + } this.emitLog('debug', 'All checks passed.') return true diff --git a/src/settings.test.ts b/src/settings.test.ts index 49fd8039..7dcf29cc 100644 --- a/src/settings.test.ts +++ b/src/settings.test.ts @@ -7,6 +7,7 @@ import { COMMAND_TIMEOUT_MSEC, READ_TIMEOUT_MSEC, SERV_UUID_PRIMARY, + updateBaseURL, urls, WoSmartLockCommands, WoSmartLockProCommands, @@ -66,4 +67,17 @@ describe('switchBot API Settings', () => { expect(WoSmartLockCommands.ENABLE_NOTIFICATIONS).toBe('570e01001e00008101') expect(WoSmartLockCommands.DISABLE_NOTIFICATIONS).toBe('570e00') }) + + it('should update URLs when baseURL is changed', () => { + const original = urls.baseURL + const custom = 'https://custom.api' + updateBaseURL(custom) + expect(urls.devicesURL).toBe(`${custom}/v1.1/devices`) + expect(urls.setupWebhook).toBe(`${custom}/v1.1/webhook/setupWebhook`) + expect(urls.queryWebhook).toBe(`${custom}/v1.1/webhook/queryWebhook`) + expect(urls.updateWebhook).toBe(`${custom}/v1.1/webhook/updateWebhook`) + expect(urls.deleteWebhook).toBe(`${custom}/v1.1/webhook/deleteWebhook`) + // restore original baseURL + updateBaseURL(original) + }) }) diff --git a/src/settings.ts b/src/settings.ts index b0d7ae5c..c4a497d0 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -5,11 +5,10 @@ */ let baseURL = 'https://api.switch-bot.com' -let devicesURL = `${baseURL}/v1.1/devices` -let setupWebhook = `${baseURL}/v1.1/webhook/setupWebhook` -let queryWebhook = `${baseURL}/v1.1/webhook/queryWebhook` -let updateWebhook = `${baseURL}/v1.1/webhook/updateWebhook` -let deleteWebhook = `${baseURL}/v1.1/webhook/deleteWebhook` +// API version used for endpoint paths +const API_VERSION = '/v1.1' + +// URLs are generated dynamically via getters below /** * Updates the base URL for the SwitchBot API endpoints. @@ -17,20 +16,27 @@ let deleteWebhook = `${baseURL}/v1.1/webhook/deleteWebhook` */ export function updateBaseURL(newBaseURL: string): void { baseURL = newBaseURL - devicesURL = `${baseURL}/v1.1/devices` - setupWebhook = `${baseURL}/v1.1/webhook/setupWebhook` - queryWebhook = `${baseURL}/v1.1/webhook/queryWebhook` - updateWebhook = `${baseURL}/v1.1/webhook/updateWebhook` - deleteWebhook = `${baseURL}/v1.1/webhook/deleteWebhook` } export const urls = { - get baseURL() { return baseURL }, - get devicesURL() { return devicesURL }, - get setupWebhook() { return setupWebhook }, - get queryWebhook() { return queryWebhook }, - get updateWebhook() { return updateWebhook }, - get deleteWebhook() { return deleteWebhook }, + get baseURL() { + return baseURL + }, + get devicesURL() { + return `${baseURL}${API_VERSION}/devices` + }, + get setupWebhook() { + return `${baseURL}${API_VERSION}/webhook/setupWebhook` + }, + get queryWebhook() { + return `${baseURL}${API_VERSION}/webhook/queryWebhook` + }, + get updateWebhook() { + return `${baseURL}${API_VERSION}/webhook/updateWebhook` + }, + get deleteWebhook() { + return `${baseURL}${API_VERSION}/webhook/deleteWebhook` + }, } /** diff --git a/src/switchbot-ble.test.ts b/src/switchbot-ble.test.ts new file mode 100644 index 00000000..7d1bd2c9 --- /dev/null +++ b/src/switchbot-ble.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, it } from 'vitest' + +import { LogLevel, SwitchBotBLE } from './switchbot-ble' + +describe('switchBotBLE', () => { + describe('constructor', () => { + it('should create an instance without parameters', () => { + const switchbot = new SwitchBotBLE() + expect(switchbot).toBeInstanceOf(SwitchBotBLE) + expect(switchbot.nobleInitialized).toBeInstanceOf(Promise) + }) + + it('should create an instance with parameters', () => { + const params = { duration: 5000 } + const switchbot = new SwitchBotBLE(params) + expect(switchbot).toBeInstanceOf(SwitchBotBLE) + expect(switchbot.nobleInitialized).toBeInstanceOf(Promise) + }) + }) + + it('should emit log events asynchronously', async () => { + const sw = new SwitchBotBLE() + // Listen for a single 'log' event + const eventPromise = new Promise<{ level: string, message: string }>((resolve) => { + sw.once('log', (event) => { + resolve(event) + }) + }) + sw.log(LogLevel.INFO, 'test message') + const event = (await eventPromise) as { level: string, message: string } + expect(event.level).toBe('info') + expect(event.message).toBe('test message') + expect(event.message).toBe('test message') + }) +}) diff --git a/src/switchbot-ble.ts b/src/switchbot-ble.ts index 8ae5986c..82eb79f9 100644 --- a/src/switchbot-ble.ts +++ b/src/switchbot-ble.ts @@ -6,7 +6,7 @@ import type { ad, NobleTypes, onadvertisement, ondiscover, Params, Rule } from ' import { EventEmitter } from 'node:events' -import { Advertising, SwitchBotBLEModel, SwitchbotDevice, WoBlindTilt, WoBulb, WoCeilingLight, WoContact, WoCurtain, WoHand, WoHub2, WoHumi, WoHumi2, WoIOSensorTH, WoKeypad, WoLeak, WoPlugMiniJP, WoPlugMiniUS, WoPresence, WoRelaySwitch1, WoRelaySwitch1PM, WoRemote, WoSensorTH, WoSensorTHPlus, WoSensorTHPro, WoSensorTHProCO2, WoSmartLock, WoSmartLockPro, WoStrip } from './device.js' +import { Advertising, LogLevel, SwitchBotBLEModel, SwitchbotDevice, WoBlindTilt, WoBulb, WoCeilingLight, WoContact, WoCurtain, WoHand, WoHub2, WoHumi, WoHumi2, WoIOSensorTH, WoKeypad, WoLeak, WoPlugMiniJP, WoPlugMiniUS, WoPresence, WoRelaySwitch1, WoRelaySwitch1PM, WoRemote, WoSensorTH, WoSensorTHPlus, WoSensorTHPro, WoSensorTHProCO2, WoSmartLock, WoSmartLockPro, WoStrip } from './device.js' import { parameterChecker } from './parameter-checker.js' import { DEFAULT_DISCOVERY_DURATION, PRIMARY_SERVICE_UUID_LIST } from './settings.js' @@ -14,7 +14,7 @@ import { DEFAULT_DISCOVERY_DURATION, PRIMARY_SERVICE_UUID_LIST } from './setting * SwitchBotBLE class to interact with SwitchBot devices. */ export class SwitchBotBLE extends EventEmitter { - public ready: Promise + public nobleInitialized: Promise public noble: any ondiscover?: ondiscover onadvertisement?: onadvertisement @@ -26,7 +26,7 @@ export class SwitchBotBLE extends EventEmitter { */ constructor(params?: Params) { super() - this.ready = this.initialize(params) + this.nobleInitialized = this.initialize(params) } /** @@ -35,8 +35,12 @@ export class SwitchBotBLE extends EventEmitter { * @param level - The severity level of the log (e.g., 'info', 'warn', 'error'). * @param message - The log message to be emitted. */ - public async log(level: string, message: string): Promise { - this.emit('log', { level, message }) + /** + * Emits a log event with a defined LogLevel. + */ + public log(level: LogLevel, message: string): void { + // Emit log events asynchronously with level and message as separate args + setTimeout(() => this.emit('log', { level, message }), 0) } /** @@ -52,8 +56,15 @@ export class SwitchBotBLE extends EventEmitter { } else { this.noble = (await import('@stoprocent/noble')).default } + + try { + await this.noble.waitForPoweredOnAsync() + this.log(LogLevel.DEBUG, 'Noble powered on') + } catch (e: any) { + this.log(LogLevel.ERROR, `Failed waiting for powered on: ${JSON.stringify(e.message ?? e)}`) + } } catch (e: any) { - this.log('error', `Failed to import noble: ${JSON.stringify(e.message ?? e)}`) + this.log(LogLevel.ERROR, `Failed to import noble: ${JSON.stringify(e.message ?? e)}`) } } @@ -67,46 +78,13 @@ export class SwitchBotBLE extends EventEmitter { public async validate(params: Params, schema: Record): Promise { const valid = parameterChecker.check(params as Record, schema as Record, false) if (!valid) { - this.log('error', `parameterChecker: ${JSON.stringify(parameterChecker.error!.message)}`) + this.log(LogLevel.ERROR, `parameterChecker: ${JSON.stringify(parameterChecker.error!.message)}`) throw new Error(parameterChecker.error!.message) } } /** - * Waits for the noble object to be powered on. - * - * @returns {Promise} - Resolves when the noble object is powered on. - */ - private async waitForPowerOn(): Promise { - await this.ready - if (this.noble && this.noble._state === 'poweredOn') { - return - } - - return new Promise((resolve, reject) => { - this.noble?.once('stateChange', (state: NobleTypes['state']) => { - switch (state) { - case 'unsupported': - case 'unauthorized': - case 'poweredOff': - reject(new Error(`Failed to initialize the Noble object: ${state}`)) - break - case 'resetting': - case 'unknown': - reject(new Error(`Adapter is not ready: ${state}`)) - break - case 'poweredOn': - resolve() - break - default: - reject(new Error(`Unknown state: ${state}`)) - } - }) - }) - } - - /** - * Discovers Switchbot devices. + * Discovers Switchbot devices with enhanced error handling and logging. * @param params The discovery parameters. * @returns A Promise that resolves with an array of discovered Switchbot devices. */ @@ -119,10 +97,8 @@ export class SwitchBotBLE extends EventEmitter { quick: { required: false, type: 'boolean' }, }) - await this.waitForPowerOn() - if (!this.noble) { - throw new Error('noble failed to initialize') + throw new Error('Noble BLE library failed to initialize properly') } const p = { @@ -132,10 +108,18 @@ export class SwitchBotBLE extends EventEmitter { quick: !!params.quick, } + this.log(LogLevel.DEBUG, `Starting discovery with parameters: ${JSON.stringify(p)}`) + const peripherals: Record = {} let timer: NodeJS.Timeout + let isDiscoveryActive = true const finishDiscovery = async () => { + if (!isDiscoveryActive) { + return Object.values(peripherals) + } + + isDiscoveryActive = false if (timer) { clearTimeout(timer) } @@ -143,46 +127,72 @@ export class SwitchBotBLE extends EventEmitter { this.noble.removeAllListeners('discover') try { await this.noble.stopScanningAsync() - this.log('debug', 'Stopped Scanning for SwitchBot BLE devices.') + this.log(LogLevel.DEBUG, 'Successfully stopped scanning for SwitchBot BLE devices') } catch (e: any) { - this.log('error', `discover stopScanningAsync error: ${JSON.stringify(e.message ?? e)}`) + this.log(LogLevel.ERROR, `Failed to stop scanning: ${JSON.stringify(e.message ?? e)}`) } } + const devices = Object.values(peripherals) - if (devices.length === 0) { - this.log('warn', 'No devices found during discovery.') - } + const deviceCount = devices.length + this.log( + deviceCount > 0 ? LogLevel.INFO : LogLevel.WARN, + `Discovery completed. Found ${deviceCount} device${deviceCount !== 1 ? 's' : ''}`, + ) + return devices } return new Promise((resolve, reject) => { this.noble.on('discover', async (peripheral: NobleTypes['peripheral']) => { - const device = await this.createDevice(peripheral, p.id, p.model as SwitchBotBLEModel) - if (!device) { - return - } - peripherals[device.id!] = device + try { + const device = await this.createDevice(peripheral, p.id, p.model as SwitchBotBLEModel) + if (!device) { + return + } - if (this.ondiscover) { - this.ondiscover(device) - } - if (p.quick) { - resolve(await finishDiscovery()) + if (peripherals[device.id!]) { + this.log(LogLevel.DEBUG, `Device ${device.id} already discovered, skipping duplicate`) + return + } + + peripherals[device.id!] = device + this.log(LogLevel.DEBUG, `Discovered device: ${device.friendlyName} (${device.id}) at ${device.address}`) + + if (this.ondiscover) { + try { + await this.ondiscover(device) + } catch (e: any) { + this.log(LogLevel.ERROR, `Error in ondiscover callback: ${e.message ?? e}`) + } + } + + if (p.quick) { + this.log(LogLevel.DEBUG, 'Quick discovery mode: stopping after first device found') + resolve(await finishDiscovery()) + } + } catch (e: any) { + this.log(LogLevel.ERROR, `Error processing discovered device: ${e.message ?? e}`) } }) + // Start scanning with timeout handling this.noble.startScanningAsync(PRIMARY_SERVICE_UUID_LIST, false) .then(() => { + this.log(LogLevel.DEBUG, `Started scanning for ${p.duration}ms`) timer = setTimeout(async () => { const result = await finishDiscovery() if (result.length === 0) { - reject(new Error('No devices found during discovery.')) + reject(new Error(`No SwitchBot devices found after ${p.duration}ms discovery timeout`)) } else { resolve(result) } }, p.duration) }) - .catch(reject) + .catch((error) => { + this.log(LogLevel.ERROR, `Failed to start scanning: ${error.message ?? error}`) + reject(new Error(`Failed to start BLE scanning: ${error.message ?? error}`)) + }) }) } @@ -195,7 +205,7 @@ export class SwitchBotBLE extends EventEmitter { * @returns {Promise} - The device object or null. */ private async createDevice(peripheral: NobleTypes['peripheral'], id: ad['id'], model: SwitchBotBLEModel): Promise { - const ad = await Advertising.parse(peripheral, this.log.bind(this)) + const ad = await Advertising.parse(peripheral, (level: string, message: string) => this.log(level as LogLevel, message)) if (ad && await this.filterAd(ad, id, model) && this.noble) { switch (ad.serviceData.model) { case SwitchBotBLEModel.Bot: return new WoHand(peripheral, this.noble) @@ -259,38 +269,46 @@ export class SwitchBotBLE extends EventEmitter { * @returns {Promise} - Resolves when scanning starts successfully. */ public async startScan(params: Params = {}): Promise { - await this.ready + await this.nobleInitialized await this.validate(params, { model: { required: false, type: 'string', enum: Object.values(SwitchBotBLEModel) }, id: { required: false, type: 'string', min: 12, max: 17 }, }) - await this.waitForPowerOn() - if (!this.noble) { throw new Error('noble object failed to initialize') } const p = { model: params.model || '', id: params.id || '' } + this.noble.removeAllListeners('discover') + this.noble.on('discover', async (peripheral: NobleTypes['peripheral']) => { - const ad = await Advertising.parse(peripheral, this.log.bind(this)) - this.emit('debug', `Advertisement: ${ad}`) - this.emit('debug', `Filter ID: ${p.id}`) - this.emit('debug', `Filter Model: ${p.model}`) - if (ad && await this.filterAd(ad, p.id, p.model)) { - this.emit('debug', `Advertisement passed filter: ${ad}`) - if (this.onadvertisement) { - this.onadvertisement(ad) + try { + const ad = await Advertising.parse(peripheral, (level: string, message: string) => this.log(level as LogLevel, message)) + this.log(LogLevel.DEBUG, `Advertisement: ${JSON.stringify(ad)}`) + this.log(LogLevel.DEBUG, `Filter ID: ${p.id}`) + this.log(LogLevel.DEBUG, `Filter Model: ${p.model}`) + if (ad && await this.filterAd(ad, p.id, p.model)) { + this.log(LogLevel.DEBUG, `Advertisement passed filter: ${JSON.stringify(ad)}`) + if (this.onadvertisement) { + try { + await this.onadvertisement(ad) + } catch (e: any) { + this.log(LogLevel.ERROR, `Error in onadvertisement callback: ${e.message ?? e}`) + } + } } + } catch (e: any) { + this.log(LogLevel.ERROR, `Error parsing advertisement: ${e.message ?? e}`) } }) try { await this.noble.startScanningAsync(PRIMARY_SERVICE_UUID_LIST, true) - this.log('debug', 'Started Scanning for SwitchBot BLE devices.') + this.log(LogLevel.DEBUG, 'Started Scanning for SwitchBot BLE devices.') } catch (e: any) { - this.log('error', `startScanningAsync error: ${JSON.stringify(e.message ?? e)}`) + this.log(LogLevel.ERROR, `startScanningAsync error: ${JSON.stringify(e.message ?? e)}`) } } @@ -307,9 +325,9 @@ export class SwitchBotBLE extends EventEmitter { this.noble.removeAllListeners('discover') try { await this.noble.stopScanningAsync() - this.log('debug', 'Stopped Scanning for SwitchBot BLE devices.') + this.log(LogLevel.DEBUG, 'Stopped Scanning for SwitchBot BLE devices.') } catch (e: any) { - this.log('error', `stopScanningAsync error: ${JSON.stringify(e.message ?? e)}`) + this.log(LogLevel.ERROR, `stopScanningAsync error: ${JSON.stringify(e.message ?? e)}`) } } @@ -328,4 +346,4 @@ export class SwitchBotBLE extends EventEmitter { } } -export { SwitchbotDevice } +export { LogLevel, SwitchbotDevice } diff --git a/src/switchbot-openapi.test.ts b/src/switchbot-openapi.test.ts new file mode 100644 index 00000000..1a86775e --- /dev/null +++ b/src/switchbot-openapi.test.ts @@ -0,0 +1,46 @@ +/* eslint-disable import/order */ +/* eslint-disable */ +import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from 'vitest' + +// Mock undici.request in ESM via module mock +vi.mock('undici', async () => { + const actual = await vi.importActual('undici') + return { ...actual, request: vi.fn() } +}) +import * as undici from 'undici' + +// Alias the mocked request function +const requestMock = undici.request as Mock + +import { SwitchBotOpenAPI } from './switchbot-openapi' + +describe('switchBotOpenAPI', () => { + beforeEach(() => { + // Reset module-level undici.request mock + requestMock.mockReset() + }) + + afterEach(() => { + vi.resetAllMocks() + }) + + it('controlDevice should send correct request and parse response', async () => { + const fakeBody = { json: vi.fn().mockResolvedValue({ commandId: 'abc123' }) } + const statusCode = 200 + requestMock.mockResolvedValue({ body: fakeBody, statusCode }) + + const api = new SwitchBotOpenAPI('my-token', 'my-secret') + const result = await api.controlDevice('dev123', 'turnOn', 'default') + + expect(requestMock).toHaveBeenCalledWith( + expect.stringContaining('/dev123/commands'), + expect.objectContaining({ + method: 'POST', + headers: expect.any(Object), + body: JSON.stringify({ command: 'turnOn', parameter: 'default', commandType: 'command' }), + }), + ) + expect(result.response).toEqual({ commandId: 'abc123' }) + expect(result.statusCode).toBe(statusCode) + }) +}) diff --git a/src/switchbot-openapi.ts b/src/switchbot-openapi.ts index 0c446505..aa1f5757 100644 --- a/src/switchbot-openapi.ts +++ b/src/switchbot-openapi.ts @@ -4,10 +4,7 @@ */ import type { IncomingMessage, Server, ServerResponse } from 'node:http' -import type { pushResponse } from './types/devicepush.js' -import type { devices } from './types/deviceresponse.js' -import type { deviceStatus, deviceStatusRequest } from './types/devicestatus.js' -import type { deleteWebhookResponse, queryWebhookResponse, setupWebhookResponse, updateWebhookResponse } from './types/devicewebhookstatus.js' +import type { commandType, deleteWebhookResponse, devices, deviceStatus, deviceStatusRequest, pushRequest, pushResponseBody, queryWebhookResponse, setupWebhookResponse, updateWebhookResponse } from './types/openapi.js' import crypto, { randomUUID } from 'node:crypto' import { EventEmitter } from 'node:events' @@ -65,7 +62,6 @@ class APIError extends Error { export class SwitchBotOpenAPI extends EventEmitter { private token: string private secret: string - private baseURL: string webhookEventListener?: Server | null = null @@ -79,9 +75,10 @@ export class SwitchBotOpenAPI extends EventEmitter { super() this.token = token this.secret = secret - this.emitLog('info', `Token: ${token}, Secret: ${secret}`) - this.baseURL = urls.baseURL - + // Log instance creation and token (secret is hidden) + this.emitLog('info', 'SwitchBotOpenAPI instance created') + this.emitLog('debug', `Token: ${token}`) + // Update baseURL if custom hostname provided if (hostname) { updateBaseURL(hostname) } @@ -162,20 +159,28 @@ export class SwitchBotOpenAPI extends EventEmitter { * @returns A promise that resolves to an object containing the response body and status code. * @throws An error if the device control fails. */ - async controlDevice(deviceId: string, command: string, parameter: string, commandType: string = 'command', token?: string, secret?: string): Promise<{ response: pushResponse['body'], statusCode: pushResponse['statusCode'] }> { + async controlDevice( + deviceId: string, + command: string, + parameter: string, + commandType: commandType = 'command', + token?: string, + secret?: string, + ): Promise<{ response: pushResponseBody, statusCode: number }> { try { const configToken = token || this.token const configSecret = secret || this.secret - const { body, statusCode } = await request(`${urls.devicesURL}/${deviceId}/commands`, { - method: 'POST', - headers: this.generateHeaders(configToken, configSecret), - body: JSON.stringify({ - command, - parameter, - commandType, - }), - }) - const response = await body.json() as pushResponse['body'] + // Build request payload + const payload: pushRequest = { command, parameter, commandType } + const { body, statusCode } = await request( + `${urls.devicesURL}/${deviceId}/commands`, + { + method: 'POST', + headers: this.generateHeaders(configToken, configSecret), + body: JSON.stringify(payload), + }, + ) + const response = (await body.json()) as pushResponseBody this.emitLog('debug', `Controlled device: ${deviceId} with command: ${command} and parameter: ${parameter}`) this.emitLog('debug', `statusCode: ${statusCode}`) return { response, statusCode } @@ -205,7 +210,7 @@ export class SwitchBotOpenAPI extends EventEmitter { return { response, statusCode } } catch (error: any) { this.emitLog('error', `Failed to get device status: ${error.message}`) - throw new Error(`Failed to get device status: ${error.message}`) + throw new APIError(`Failed to get device status: ${error.message}`, error.statusCode) } } @@ -227,6 +232,11 @@ export class SwitchBotOpenAPI extends EventEmitter { */ async setupWebhook(url: string, token?: string, secret?: string): Promise { try { + // Close existing listener if any to avoid port conflicts + if (this.webhookEventListener) { + this.webhookEventListener.close() + this.webhookEventListener = null + } const xurl = new URL(url) const port = Number(xurl.port) const path = xurl.pathname @@ -357,6 +367,11 @@ export class SwitchBotOpenAPI extends EventEmitter { await this.emitLog('error', `Failed to delete webhook. HTTP:${statusCode} API:${response?.statusCode} message:${response?.message}`) } else { await this.emitLog('info', 'Unregistered webhook to close listening.') + // Close listener server + if (this.webhookEventListener) { + this.webhookEventListener.close() + this.webhookEventListener = null + } } } catch (e: any) { await this.emitLog('error', `Failed to delete webhook, Error: ${e.message ?? e}`) diff --git a/src/types/ble-guards.test.ts b/src/types/ble-guards.test.ts new file mode 100644 index 00000000..db2a0ec4 --- /dev/null +++ b/src/types/ble-guards.test.ts @@ -0,0 +1,67 @@ +import type { ceilingLightServiceData, colorBulbServiceData, meterServiceData } from './ble' + +import { describe, expect, it } from 'vitest' + +import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../device' +import { isServiceDataOfModel } from './ble-guards' + +describe('ble service data guards', () => { + it('identifies colorBulbServiceData correctly', () => { + const sample: colorBulbServiceData = { + model: SwitchBotBLEModel.ColorBulb, + modelName: SwitchBotBLEModelName.ColorBulb, + modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb, + color_temperature: 3000, + power: true, + state: false, + red: 255, + green: 200, + blue: 150, + brightness: 50, + delay: 0, + preset: 1, + color_mode: 0, + speed: 10, + loop_index: 0, + } + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.ColorBulb)).toBe(true) + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.CeilingLight)).toBe(false) + }) + + it('identifies ceilingLightServiceData correctly', () => { + const sample: ceilingLightServiceData = { + model: SwitchBotBLEModel.CeilingLight, + modelName: SwitchBotBLEModelName.CeilingLight, + modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight, + color_temperature: 3500, + power: false, + state: true, + red: 100, + green: 150, + blue: 200, + brightness: 75, + delay: 5, + preset: 2, + color_mode: 1, + speed: 5, + loop_index: 1, + } + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.CeilingLight)).toBe(true) + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.Meter)).toBe(false) + }) + + it('identifies meterServiceData correctly', () => { + const sample: meterServiceData = { + model: SwitchBotBLEModel.Meter, + modelName: SwitchBotBLEModelName.Meter, + modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter, + celsius: 22.5, + fahrenheit: 72.5, + fahrenheit_mode: false, + humidity: 45, + battery: 90, + } + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.Meter)).toBe(true) + expect(isServiceDataOfModel(sample, SwitchBotBLEModel.ColorBulb)).toBe(false) + }) +}) diff --git a/src/types/ble-guards.ts b/src/types/ble-guards.ts new file mode 100644 index 00000000..b4635d74 --- /dev/null +++ b/src/types/ble-guards.ts @@ -0,0 +1,15 @@ +import type { SwitchBotBLEModel } from '../device' +import type { BLEDeviceServiceData } from './ble.js' + +/** + * Generic type guard for BLE device service data by model. + * @param data The BLE service data object. + * @param model The SwitchBotBLEModel enum to check against. + * @returns True if data.model matches, and narrows to the specific service data type. + */ +export function isServiceDataOfModel( + data: BLEDeviceServiceData, + model: M, +): data is Extract { + return data.model === model +} diff --git a/src/types/bledevicestatus.ts b/src/types/ble.ts similarity index 61% rename from src/types/bledevicestatus.ts rename to src/types/ble.ts index 4c022639..0948a86f 100644 --- a/src/types/bledevicestatus.ts +++ b/src/types/ble.ts @@ -4,30 +4,28 @@ */ import type { MacAddress, SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../device.js' -export interface switchbot { - discover: (arg0: { duration?: any, model: string, quick: boolean, id?: MacAddress }) => Promise - wait: (arg0: number) => any +/** + * BLE discovery and wait methods for SwitchBot devices. + */ +export interface SwitchBotScanner { + /** Discover BLE devices based on filter criteria */ + discover: (args: { duration?: number, model: string, quick: boolean, id?: MacAddress }) => Promise + /** Wait for given milliseconds */ + wait: (ms: number) => void } -interface serviceData { +/** + * Common service data across BLE devices. + */ +interface BLEServiceData { model: SwitchBotBLEModel modelName: SwitchBotBLEModelName modelFriendlyName: SwitchBotBLEModelFriendlyName } - -export type botServiceData = serviceData & { - model: SwitchBotBLEModel.Bot - modelName: SwitchBotBLEModelName.Bot - modelFriendlyName: SwitchBotBLEModelFriendlyName.Bot - mode: boolean - state: boolean - battery: number -} - -export type colorBulbServiceData = serviceData & { - model: SwitchBotBLEModel.ColorBulb - modelName: SwitchBotBLEModelName.ColorBulb - modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb +/** + * Base interface for color-controllable devices. + */ +export interface ColorLightServiceDataBase extends BLEServiceData { color_temperature: number power: boolean state: boolean @@ -42,7 +40,62 @@ export type colorBulbServiceData = serviceData & { loop_index: number } -export type contactSensorServiceData = serviceData & { +/** + * Base interface for temperature-humidity meter devices. + */ +export interface TemperatureServiceDataBase extends BLEServiceData { + celsius: number + fahrenheit: number + fahrenheit_mode: boolean + humidity: number + battery: number +} + +/** + * Base interface for mini plug devices (US/JP share same schema). + */ +export interface PlugMiniServiceDataBase extends BLEServiceData { + state: string + delay: boolean + timer: boolean + syncUtcTime: boolean + wifiRssi: number + overload: boolean + currentPower: number +} + +/** + * Base interface for lock-style devices. + */ +export interface LockBaseServiceData extends BLEServiceData { + battery: number + calibration: boolean + status: string + update_from_secondary_lock: boolean + door_open: boolean + double_lock_mode: boolean + unclosed_alarm: boolean + unlocked_alarm: boolean + auto_lock_paused: boolean + night_latch: boolean +} + +export type botServiceData = BLEServiceData & { + model: SwitchBotBLEModel.Bot + modelName: SwitchBotBLEModelName.Bot + modelFriendlyName: SwitchBotBLEModelFriendlyName.Bot + mode: boolean + state: boolean + battery: number +} + +export type colorBulbServiceData = ColorLightServiceDataBase & { + model: SwitchBotBLEModel.ColorBulb + modelName: SwitchBotBLEModelName.ColorBulb + modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb +} + +export type contactSensorServiceData = BLEServiceData & { model: SwitchBotBLEModel.ContactSensor modelName: SwitchBotBLEModelName.ContactSensor modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor @@ -56,7 +109,7 @@ export type contactSensorServiceData = serviceData & { doorState: string } -export type curtainServiceData = serviceData & { +export type curtainServiceData = BLEServiceData & { model: SwitchBotBLEModel.Curtain modelName: SwitchBotBLEModelName.Curtain modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain @@ -68,7 +121,7 @@ export type curtainServiceData = serviceData & { deviceChain: number } -export type curtain3ServiceData = serviceData & { +export type curtain3ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Curtain3 modelName: SwitchBotBLEModelName.Curtain3 modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3 @@ -80,112 +133,56 @@ export type curtain3ServiceData = serviceData & { deviceChain: number } -export type stripLightServiceData = serviceData & { +export type stripLightServiceData = ColorLightServiceDataBase & { model: SwitchBotBLEModel.StripLight modelName: SwitchBotBLEModelName.StripLight modelFriendlyName: SwitchBotBLEModelFriendlyName.StripLight - power: boolean - state: boolean - red: number - green: number - blue: number - brightness: number - delay: number - preset: number - color_mode: number - speed: number - loop_index: number } -export type lockServiceData = serviceData & { +export type lockServiceData = LockBaseServiceData & { model: SwitchBotBLEModel.Lock modelName: SwitchBotBLEModelName.Lock modelFriendlyName: SwitchBotBLEModelFriendlyName.Lock - battery: number - calibration: boolean - status: string - update_from_secondary_lock: boolean - door_open: boolean - double_lock_mode: boolean - unclosed_alarm: boolean - unlocked_alarm: boolean - auto_lock_paused: boolean - night_latch: boolean } -export type lockProServiceData = serviceData & { +export type lockProServiceData = LockBaseServiceData & { model: SwitchBotBLEModel.LockPro modelName: SwitchBotBLEModelName.LockPro modelFriendlyName: SwitchBotBLEModelFriendlyName.LockPro - battery: number - calibration: boolean - status: string - update_from_secondary_lock: boolean - door_open: boolean - double_lock_mode: boolean - unclosed_alarm: boolean - unlocked_alarm: boolean - auto_lock_paused: boolean - night_latch: boolean } -export type meterServiceData = serviceData & { +export type meterServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.Meter modelName: SwitchBotBLEModelName.Meter modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter - celsius: number - fahrenheit: number - fahrenheit_mode: boolean - humidity: number - battery: number } -export type meterPlusServiceData = serviceData & { +export type meterPlusServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterPlus modelName: SwitchBotBLEModelName.MeterPlus modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus - celsius: number - fahrenheit: number - fahrenheit_mode: boolean - humidity: number - battery: number } -export type meterProServiceData = serviceData & { +export type meterProServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterPro modelName: SwitchBotBLEModelName.MeterPro modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPro - celsius: number - fahrenheit: number - fahrenheit_mode: boolean - humidity: number - battery: number } -export type meterProCO2ServiceData = serviceData & { +export type meterProCO2ServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterProCO2 modelName: SwitchBotBLEModelName.MeterProCO2 modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterProCO2 - celsius: number - fahrenheit: number - fahrenheit_mode: boolean - humidity: number - battery: number co2: number } -export type outdoorMeterServiceData = serviceData & { +export type outdoorMeterServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.OutdoorMeter modelName: SwitchBotBLEModelName.OutdoorMeter modelFriendlyName: SwitchBotBLEModelFriendlyName.OutdoorMeter - celsius: number - fahrenheit: number - fahrenheit_mode: boolean - humidity: number - battery: number } -export type motionSensorServiceData = serviceData & { +export type motionSensorServiceData = BLEServiceData & { model: SwitchBotBLEModel.MotionSensor modelName: SwitchBotBLEModelName.MotionSensor modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor @@ -199,33 +196,19 @@ export type motionSensorServiceData = serviceData & { is_light: boolean } -export type plugMiniUSServiceData = serviceData & { +export type plugMiniUSServiceData = PlugMiniServiceDataBase & { model: SwitchBotBLEModel.PlugMiniUS modelName: SwitchBotBLEModelName.PlugMini modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini - state: string - delay: boolean - timer: boolean - syncUtcTime: boolean - wifiRssi: number - overload: boolean - currentPower: number } -export type plugMiniJPServiceData = serviceData & { +export type plugMiniJPServiceData = PlugMiniServiceDataBase & { model: SwitchBotBLEModel.PlugMiniJP modelName: SwitchBotBLEModelName.PlugMini modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini - state: string - delay: boolean - timer: boolean - syncUtcTime: boolean - wifiRssi: number - overload: boolean - currentPower: number } -export type blindTiltServiceData = serviceData & { +export type blindTiltServiceData = BLEServiceData & { model: SwitchBotBLEModel.BlindTilt modelName: SwitchBotBLEModelName.BlindTilt modelFriendlyName: SwitchBotBLEModelFriendlyName.BlindTilt @@ -237,7 +220,7 @@ export type blindTiltServiceData = serviceData & { sequenceNumber: number } -export type ceilingLightServiceData = serviceData & { +export type ceilingLightServiceData = BLEServiceData & { model: SwitchBotBLEModel.CeilingLight modelName: SwitchBotBLEModelName.CeilingLight modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight @@ -255,7 +238,7 @@ export type ceilingLightServiceData = serviceData & { loop_index: number } -export type ceilingLightProServiceData = serviceData & { +export type ceilingLightProServiceData = BLEServiceData & { model: SwitchBotBLEModel.CeilingLightPro modelName: SwitchBotBLEModelName.CeilingLightPro modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLightPro @@ -273,7 +256,7 @@ export type ceilingLightProServiceData = serviceData & { loop_index: number } -export type hub2ServiceData = serviceData & { +export type hub2ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Hub2 modelName: SwitchBotBLEModelName.Hub2 modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub2 @@ -284,7 +267,18 @@ export type hub2ServiceData = serviceData & { lightLevel: number } -export type batteryCirculatorFanServiceData = serviceData & { +export type hub3ServiceData = BLEServiceData & { + model: SwitchBotBLEModel.Hub3 + modelName: SwitchBotBLEModelName.Hub3 + modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub3 + celsius: number + fahrenheit: number + fahrenheit_mode: boolean + humidity: number + lightLevel: number +} + +export type batteryCirculatorFanServiceData = BLEServiceData & { model: SwitchBotBLEModel.Unknown modelName: SwitchBotBLEModelName.Unknown modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown @@ -292,7 +286,7 @@ export type batteryCirculatorFanServiceData = serviceData & { fanSpeed: number } -export type waterLeakDetectorServiceData = serviceData & { +export type waterLeakDetectorServiceData = BLEServiceData & { model: SwitchBotBLEModel.Leak modelName: SwitchBotBLEModelName.Leak modelFriendlyName: SwitchBotBLEModelFriendlyName.Leak @@ -302,7 +296,7 @@ export type waterLeakDetectorServiceData = serviceData & { low_battery: boolean } -export type humidifierServiceData = serviceData & { +export type humidifierServiceData = BLEServiceData & { model: SwitchBotBLEModel.Humidifier modelName: SwitchBotBLEModelName.Humidifier modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier @@ -312,7 +306,7 @@ export type humidifierServiceData = serviceData & { humidity: number } -export type humidifier2ServiceData = serviceData & { +export type humidifier2ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Humidifier2 modelName: SwitchBotBLEModelName.Humidifier2 modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier2 @@ -331,7 +325,7 @@ export type humidifier2ServiceData = serviceData & { waterLevel: number } -export type robotVacuumCleanerServiceData = serviceData & { +export type robotVacuumCleanerServiceData = BLEServiceData & { model: SwitchBotBLEModel.Unknown modelName: SwitchBotBLEModelName.Unknown modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown @@ -339,7 +333,7 @@ export type robotVacuumCleanerServiceData = serviceData & { battery: number } -export type keypadDetectorServiceData = serviceData & { +export type keypadDetectorServiceData = BLEServiceData & { model: SwitchBotBLEModel.Keypad modelName: SwitchBotBLEModelName.Keypad modelFriendlyName: SwitchBotBLEModelFriendlyName.Keypad @@ -349,7 +343,7 @@ export type keypadDetectorServiceData = serviceData & { low_battery: boolean } -export type relaySwitch1ServiceData = serviceData & { +export type relaySwitch1ServiceData = BLEServiceData & { model: SwitchBotBLEModel.RelaySwitch1 modelName: SwitchBotBLEModelName.RelaySwitch1 modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1 @@ -358,7 +352,7 @@ export type relaySwitch1ServiceData = serviceData & { sequence_number: number } -export type relaySwitch1PMServiceData = serviceData & { +export type relaySwitch1PMServiceData = BLEServiceData & { model: SwitchBotBLEModel.RelaySwitch1PM modelName: SwitchBotBLEModelName.RelaySwitch1PM modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1PM @@ -370,9 +364,73 @@ export type relaySwitch1PMServiceData = serviceData & { current: number } -export type remoteServiceData = serviceData & { +export type remoteServiceData = BLEServiceData & { model: SwitchBotBLEModel.Remote modelName: SwitchBotBLEModelName.Remote modelFriendlyName: SwitchBotBLEModelFriendlyName.Remote battery: number } + +export type airPurifierServiceData = BLEServiceData & { + model: SwitchBotBLEModel.AirPurifier + modelName: SwitchBotBLEModelName.AirPurifier + modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifier + isOn: boolean + mode: string | null + isAqiValid: boolean + child_lock: boolean + speed: number + aqi_level: string + filter_element_working_time: number + err_code: number + sequence_number: number +} + +export type airPurifierTableServiceData = BLEServiceData & { + model: SwitchBotBLEModel.AirPurifierTable + modelName: SwitchBotBLEModelName.AirPurifierTable + modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifierTable + isOn: boolean + mode: string | null + isAqiValid: boolean + child_lock: boolean + speed: number + aqi_level: string + filter_element_working_time: number + err_code: number + sequence_number: number +} + +export type BLEDeviceServiceData + = | airPurifierServiceData + | airPurifierTableServiceData + | batteryCirculatorFanServiceData + | blindTiltServiceData + | botServiceData + | ceilingLightServiceData + | ceilingLightProServiceData + | colorBulbServiceData + | contactSensorServiceData + | curtain3ServiceData + | curtainServiceData + | hub2ServiceData + | hub3ServiceData + | keypadDetectorServiceData + | lockProServiceData + | lockServiceData + | meterPlusServiceData + | meterProCO2ServiceData + | meterProServiceData + | meterServiceData + | motionSensorServiceData + | outdoorMeterServiceData + | plugMiniJPServiceData + | plugMiniUSServiceData + | relaySwitch1PMServiceData + | relaySwitch1ServiceData + | remoteServiceData + | robotVacuumCleanerServiceData + | stripLightServiceData + | waterLeakDetectorServiceData + | humidifier2ServiceData + | humidifierServiceData diff --git a/src/types/devicelist.ts b/src/types/devicelist.ts deleted file mode 100644 index 3ab2b97d..00000000 --- a/src/types/devicelist.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * devicelist.ts: @switchbot/homebridge-switchbot platform class. - */ -export interface deviceList { - device: device[] -} - -export interface device { - deviceId: string - deviceName: string - deviceType: string - enableCloudService: boolean - hubDeviceId: string - version?: number -} - -export type bot = device & {} - -export type curtain = device & { - curtainDevicesIds: string[] - calibrate: boolean - group: boolean - master: boolean - openDirection: string -} - -export type curtain3 = device & { - curtainDevicesIds: string[] - calibrate: boolean - group: boolean - master: boolean - openDirection?: string -} - -export type hub2 = device & {} - -export type meter = device & {} - -export type meterPlus = device & {} - -export type meterPro = device & {} - -export type outdoorMeter = device & {} - -export type lock = device & { - group: boolean - master: boolean - groupName: string - lockDevicesIds: string[] -} - -export type lockPro = device & { - group: boolean - master: boolean - groupName: string - lockDevicesIds: string[] -} - -export type keypad = device & { - remoteType: string - lockDeviceId: string - keyList: keyList -} - -export type keypadTouch = device & { - remoteType: string - lockDeviceId: string - keyList: keyList -} - -interface keyList { - id: number - name: string - type: string - password: string - iv: string - status: string - createTime: number -} - -export type remote = device & {} - -export type motionSensor = device & {} - -export type contactSensor = device & {} - -export type waterLeakDetector = device & {} - -export type ceilingLight = device & {} - -export type ceilingLightPro = device & {} - -export type plug = device & {} - -export type plugMini = device & {} - -export type stripLight = device & {} - -export type colorBulb = device & {} - -export type robotVacuumCleanerS1 = device & {} - -export type robotVacuumCleanerS1Plus = device & {} - -export type floorCleaningRobotS10 = device & {} - -export type humidifier = device & {} - -export type indoorCam = device & {} - -export type pantiltCam = device & {} - -export type pantiltCam2k = device & {} - -export type blindTilt = device & { - blindTiltDevicesIds: string[] - calibrate: boolean - group: boolean - master: boolean - direction: string - slidePosition: number -} - -export type batteryCirculatorFan = device & {} diff --git a/src/types/devicepush.ts b/src/types/devicepush.ts deleted file mode 100644 index e5530374..00000000 --- a/src/types/devicepush.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * pushbody.ts: @switchbot/homebridge-switchbot platform class. - */ -export interface bodyChange { - command: string - parameter: string - commandType: string -} - -export interface pushResponse { - statusCode: number - body: { - commandId: string - } - message: string -} diff --git a/src/types/deviceresponse.ts b/src/types/deviceresponse.ts deleted file mode 100644 index c7f86595..00000000 --- a/src/types/deviceresponse.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * deviceresponse.ts: @switchbot/homebridge-switchbot platform class. - */ -import type { deviceList } from './devicelist.js' -import type { infraredRemoteList } from './irdevicelist.js' - -// json response from SwitchBot API -export interface devices { - statusCode: number - message: string - body: body -} - -export interface body { - deviceList: deviceList - infraredRemoteList: infraredRemoteList -} diff --git a/src/types/devicestatus.ts b/src/types/devicestatus.ts deleted file mode 100644 index 8651ca74..00000000 --- a/src/types/devicestatus.ts +++ /dev/null @@ -1,229 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * devicestatus.ts: @switchbot/homebridge-switchbot platform class. - */ -import type { device } from './devicelist.js' - -export interface deviceStatusRequest { - statusCode: number - message: string - body: deviceStatus -} - -export interface deviceStatus extends device { - // properties on all devices - deviceId: string - deviceType: string - hubDeviceId: string - version: number -}; - -export type botStatus = deviceStatus & { - power: string - battery: number - mode: 'pressMode' | 'switchMode' | 'customizeMode' -} - -export type curtainStatus = deviceStatus & { - calibrate: boolean - group: boolean - moving: boolean - battery: number - slidePosition: number - lightLevel?: 'bright' | 'dim' -} - -export type meterStatus = deviceStatus & { - temperature: number - battery: number - humidity: number -} - -export type meterPlusStatus = deviceStatus & { - temperature: number - battery: number - humidity: number -} - -export type meterProStatus = deviceStatus & { - temperature: number - battery: number - humidity: number - version: string -} - -export type meterProCO2Status = deviceStatus & { - temperature: number - battery: number - humidity: number - version: string - CO2: number -} - -export type outdoorMeterStatus = deviceStatus & { - battery: number - temperature: number - humidity: number -} - -export type lockStatus = deviceStatus & { - lockState: string - doorState: string - moveDetected: boolean - battery: number -} - -export type lockProStatus = deviceStatus & { - lockState: string - doorState: string - moveDetected: boolean - battery: number -} - -export type motionSensorStatus = deviceStatus & { - battery: number - moveDetected: boolean - brightness: 'bright' | 'dim' -} - -export type contactSensorStatus = deviceStatus & { - battery: number - moveDetected: boolean - openState: 'open' | 'close' | 'timeOutNotClose' - brightness: 'bright' | 'dim' -} - -export type waterLeakDetectorStatus = deviceStatus & { - battery: number - status: 0 /* dry */ | 1 /* leak detected */ -} - -export type ceilingLightStatus = deviceStatus & { - power: boolean - brightness: number - colorTemperature: number -} - -export type ceilingLightProStatus = deviceStatus & { - power: boolean - brightness: number - colorTemperature: number -} - -export type plugStatus = deviceStatus & { - power: string - version: string -} - -export type plugMiniStatus = deviceStatus & { - voltage: Float64Array - weight: Float64Array - electricityOfDay: number - electricCurrent: Float64Array - power: string -} - -export type stripLightStatus = deviceStatus & { - power: string - brightness: number - color: string -} - -export type colorBulbStatus = deviceStatus & { - power: string - brightness: number - color: string - colorTemperature: number -} - -export type robotVacuumCleanerS1Status = deviceStatus & { - workingStatus: string - onlineStatus: string - battery: number -} - -export type robotVacuumCleanerS1PlusStatus = deviceStatus & { - workingStatus: string - onlineStatus: string - battery: number -} - -export type floorCleaningRobotS10Status = deviceStatus & { - workingStatus: string - onlineStatus: string - battery: number - waterBaseBattery: number - taskType: string -} - -export type humidifierStatus = deviceStatus & { - power: string - humidity: number - temperature: number - nebulizationEfficiency: number - auto: boolean - childLock: boolean - sound: boolean - lackWater: boolean -} - -export type humidifier2Status = deviceStatus & { - power: string - humidity: number - temperature: number - nebulizationEfficiency: number - auto: boolean - childLock: boolean - sound: boolean - lackWater: boolean -} - -export type blindTiltStatus = deviceStatus & { - calibrate: boolean - battery: number - direction: string - slidePosition: string - lightLevel?: 'bright' | 'dim' -} - -export type hub2Status = deviceStatus & { - temperature: number - lightLevel: number - humidity: number -} - -export type batteryCirculatorFanStatus = deviceStatus & { - mode: 'direct' | 'natural' | 'sleep' | 'baby' - version: string - battery: number - power: string - nightStatus: number - oscillation: string - verticalOscillation: string - chargingStatus: string - fanSpeed: number -} - -export type circulatorFanStatus = deviceStatus & { - mode: 'direct' | 'natural' | 'sleep' | 'baby' - version: string - power: string - nightStatus: number - oscillation: string - verticalOscillation: string - fanSpeed: number -} - -export type relaySwitch1Status = deviceStatus & { - switchStatus: 0 | 1 - version: string -} - -export type relaySwitch1PMStatus = deviceStatus & { - switchStatus: 0 | 1 - voltage: number - version: string - power: number - usedElectricity: number - electricCurrent: number -} diff --git a/src/types/devicewebhookstatus.ts b/src/types/devicewebhookstatus.ts deleted file mode 100644 index 82322aab..00000000 --- a/src/types/devicewebhookstatus.ts +++ /dev/null @@ -1,283 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * devicewebhookstatus.ts: @switchbot/homebridge-switchbot platform class. - */ -export interface webhookRequest { - action: string - url: string - deviceList: string -} - -export interface setupWebhookResponse { - statusCode: number - body: object - message: string -} - -export interface queryWebhookResponse { - statusCode: number - body: WebhookDetail[] - message: string -} - -export interface WebhookDetail { - url: string - createTime: number - lastUpdateTime: number - deviceList: string - enable: boolean -} - -export interface updateWebhookResponse { - statusCode: number - body: object - message: string -} - -export interface deleteWebhookResponse { - statusCode: number - body: object - message: string -} - -interface deviceWebhook { - eventType: string - eventVersion: string - context: deviceWebhookContext -} - -export { deviceWebhook } - -export interface deviceWebhookContext { - // properties on all devices - deviceMac: string - deviceType: string - timeOfSample: number -} - -export type botWebhookContext = deviceWebhookContext & { - power: string // "on"or"off" - battery: number - deviceMode: 'pressMode' | 'switchMode' | 'customizeMode' -} - -export type curtainWebhookContext = deviceWebhookContext & { - calibrate: boolean - group: boolean - slidePosition: number // 0~100 - battery: number -} - -export type curtain3WebhookContext = deviceWebhookContext & { - calibrate: boolean - group: boolean - slidePosition: number // 0~100 - battery: number -} - -export type motionSensorWebhookContext = deviceWebhookContext & { - detectionState: 'NOT_DETECTED' | 'DETECTED' - battery: number // 0~100 -} - -export type contactSensorWebhookContext = deviceWebhookContext & { - detectionState: 'NOT_DETECTED' | 'DETECTED' - battery: number // 0~100 - doorMode: 'IN_DOOR' | 'OUT_DOOR' - brightness: 'dim' | 'bright' - openState: 'open' | 'close' | 'timeOutNotClose' -} - -export type waterLeakDetectorWebhookContext = deviceWebhookContext & { - detectionState: 0 | 1 - battery: number // 0~100 -} - -export type meterWebhookContext = deviceWebhookContext & { - temperature: number - battery: number // 0~100 - scale: 'CELSIUS' | 'FAHRENHEIT' - humidity: number -} - -export type meterPlusWebhookContext = deviceWebhookContext & { - temperature: number - battery: number // 0~100 - scale: 'CELSIUS' | 'FAHRENHEIT' - humidity: number -} - -export type meterProWebhookContext = deviceWebhookContext & { - temperature: number - battery: number // 0~100 - scale: 'CELSIUS' | 'FAHRENHEIT' - humidity: number -} - -export type meterProCO2WebhookContext = deviceWebhookContext & { - temperature: number - battery: number // 0~100 - scale: 'CELSIUS' | 'FAHRENHEIT' - humidity: number - CO2: number -} - -export type outdoorMeterWebhookContext = deviceWebhookContext & { - temperature: number - battery: number // 0~100 - scale: 'CELSIUS' | 'FAHRENHEIT' - humidity: number -} - -export type lockWebhookContext = deviceWebhookContext & { - lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' - battery: number // 0~100 -} - -export type lockProWebhookContext = deviceWebhookContext & { - lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' - battery: number // 0~100 -} - -export type indoorCameraWebhookContext = deviceWebhookContext & { - detectionState: 'DETECTED' -} - -export type panTiltCamWebhookContext = deviceWebhookContext & { - detectionState: 'DETECTED' -} - -export type colorBulbWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' - brightness: number - color: string // RGB 255:255:255 - colorTemperature: number // 2700~6500 -} - -export type stripLightWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' - brightness: number - color: string // RGB 255:255:255 -} - -export type plugWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' -} - -export type plugMiniUSWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' -} - -export type plugMiniJPWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' -} - -export type robotVacuumCleanerS1WebhookContext = deviceWebhookContext & { - workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' - onlineStatus: 'online' | 'offline' - battery: number // 0~100 -} - -export type robotVacuumCleanerS1PlusWebhookContext = deviceWebhookContext & { - workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' - onlineStatus: 'online' | 'offline' - battery: number // 0~100 -} - -export type floorCleaningRobotS10WebhookContext = deviceWebhookContext & { - workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' - onlineStatus: 'online' | 'offline' - battery: number // 0~100 - waterBaseBattery: number // 0~100 - taskType: 'standBy' | 'explore' | 'cleanAll' | 'cleanArea' | 'cleanRoom' | 'fillWater' | 'deepWashing' | 'backToCharge' | 'markingWaterBase' | 'drying' | 'collectDust' | 'remoteControl' | 'cleanWithExplorer' | 'fillWaterForHumi' | 'markingHumi' -} - -export type ceilingLightWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' - brightness: number - colorTemperature: number // 2700~6500 -} - -export type ceilingLightProWebhookContext = deviceWebhookContext & { - powerState: 'ON' | 'OFF' - brightness: number - colorTemperature: number // 2700~6500 -} - -export type keypadWebhookContext = deviceWebhookContext & { - eventName: 'createKey' | 'deleteKey' - commandId: string - result: 'success' | 'failed' | 'timeout' -} - -export type keypadTouchWebhookContext = deviceWebhookContext & { - eventName: 'createKey' | 'deleteKey' - commandId: string - result: 'success' | 'failed' | 'timeout' -} - -export type hub2WebhookContext = deviceWebhookContext & { - temperature: number - humidity: number - lightLevel: number - scale: 'CELSIUS' | 'FAHRENHEIT' -} - -export type batteryCirculatorFanWebhookContext = deviceWebhookContext & { - mode: 'direct' | 'natural' | 'sleep' | 'baby' - version: string - battery: number - powerState: 'ON' | 'OFF' - nightStatus: 'off' | 1 | 2 - oscillation: 'on' | 'off' - verticalOscillation: 'on' | 'off' - chargingStatus: 'charging' | 'uncharged' - fanSpeed: number // 1~100 -} - -export type circulatorFanWebhookContext = deviceWebhookContext & { - mode: 'direct' | 'natural' | 'sleep' | 'baby' - version: string - battery: number - powerState: 'ON' | 'OFF' - nightStatus: 'off' | 1 | 2 - oscillation: 'on' | 'off' - verticalOscillation: 'on' | 'off' - fanSpeed: number // 1~100 -} - -export type blindTiltWebhookContext = deviceWebhookContext & { - version: string - calibrate: boolean - group: boolean - direction: string - slidePosition: number // 0~100 - battery: number -} - -export type humidifierWebhookContext = deviceWebhookContext & { - temperature: number - humidity: number - scale: 'CELSIUS' | 'FAHRENHEIT' -} - -export type humidifier2WebhookContext = deviceWebhookContext & { - temperature: number - humidity: number - scale: 'CELSIUS' | 'FAHRENHEIT' -} - -export type relaySwitch1Context = deviceWebhookContext & { - online: boolean - overTemperature: boolean - switchStatus: 0 | 1 - version: string -} - -export type relaySwitch1PMContext = deviceWebhookContext & { - online: boolean - overTemperature: boolean - switchStatus: 0 | 1 - overload: boolean - version: string -} diff --git a/src/types/irdevicelist.ts b/src/types/irdevicelist.ts deleted file mode 100644 index 91d6acc1..00000000 --- a/src/types/irdevicelist.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. - * - * irdevicelist.ts: ds7@switchbot/homebridge-switchbot platform class. - */ -export interface infraredRemoteList { - device: irdevice[] -} - -export interface irdevice { - deviceId?: string - deviceName: string - remoteType: string - hubDeviceId: string -} diff --git a/src/types/openapi.ts b/src/types/openapi.ts new file mode 100644 index 00000000..c0d6e15b --- /dev/null +++ b/src/types/openapi.ts @@ -0,0 +1,760 @@ +/* Copyright(C) 2017-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved. + * + * openapi.ts: Aggregated types for SwitchBot OpenAPI and IR interfaces. + */ +export interface deviceList { + device: device[] +} + +export interface device { + deviceId: string + deviceName: string + deviceType: string + enableCloudService: boolean + hubDeviceId: string + version?: number +} + +export type bot = device + +export type curtain = device & { + curtainDevicesIds: string[] + calibrate: boolean + group: boolean + master: boolean + openDirection: string +} + +export type curtain3 = device & { + curtainDevicesIds: string[] + calibrate: boolean + group: boolean + master: boolean + openDirection?: string +} + +export type hub2 = device + +export type meter = device + +export type meterPlus = device + +export type meterPro = device + +export type outdoorMeter = device + +export type lock = device & { + group: boolean + master: boolean + groupName: string + lockDevicesIds: string[] +} + +export type lockPro = device & { + group: boolean + master: boolean + groupName: string + lockDevicesIds: string[] +} + +export type keypad = device & { + remoteType: string + lockDeviceId: string + keyList: keyList +} + +export type keypadTouch = device & { + remoteType: string + lockDeviceId: string + keyList: keyList +} + +interface keyList { + id: number + name: string + type: string + password: string + iv: string + status: string + createTime: number +} + +export type remote = device + +export type motionSensor = device + +export type contactSensor = device + +export type waterLeakDetector = device + +export type ceilingLight = device + +export type ceilingLightPro = device + +export type plug = device + +export type plugMini = device + +export type airPurifier = device + +export type airPurifierTable = device + +export type airPurifierVOC = device + +export type airPurifierTableVOC = device + +export type stripLight = device + +export type colorBulb = device + +export type robotVacuumCleanerS1 = device + +export type robotVacuumCleanerS1Plus = device + +export type floorCleaningRobotS10 = device + +export type humidifier = device + +export type IndoorCam = device + +export type pantiltCam = device + +export type pantiltCam2k = device + +export type blindTilt = device & { + blindTiltDevicesIds: string[] + calibrate: boolean + group: boolean + master: boolean + direction: string + slidePosition: number +} + +export type batteryCirculatorFan = device + +/** + * Allowed command types for device control. + */ +export type commandType = 'command' | 'customize' + +/** + * Request payload for controlling a device. + */ +export interface pushRequest { + command: string + parameter: string + commandType: commandType +} + +/** + * Body of a device push response. + */ +export interface pushResponseBody { + commandId: string +} + +/** + * Response from a device control (push) request. + */ +export interface pushResponse { + statusCode: number + body: pushResponseBody + message: string +} + +export interface bodyChange { + command: string + parameter: string + commandType: string +} + +// json response from SwitchBot API +export interface devices { + statusCode: number + message: string + body: body +} + +export interface body { + deviceList: device[] + infraredRemoteList: infraredRemoteList +} + +export interface deviceStatusRequest { + statusCode: number + message: string + body: deviceStatus +} + +export interface deviceStatus extends device { + // properties on all devices + deviceId: string + deviceType: string + hubDeviceId: string + version: number +}; + +export type botStatus = deviceStatus & { + power: string + battery: number + mode: 'pressMode' | 'switchMode' | 'customizeMode' +} + +export type curtainStatus = deviceStatus & { + calibrate: boolean + group: boolean + moving: boolean + battery: number + slidePosition: number + lightLevel?: 'bright' | 'dim' +} + +export type meterStatus = deviceStatus & { + temperature: number + battery: number + humidity: number +} + +export type meterPlusStatus = deviceStatus & { + temperature: number + battery: number + humidity: number +} + +export type meterProStatus = deviceStatus & { + temperature: number + battery: number + humidity: number + version: string +} + +export type meterProCO2Status = deviceStatus & { + temperature: number + battery: number + humidity: number + version: string + CO2: number +} + +export type outdoorMeterStatus = deviceStatus & { + battery: number + temperature: number + humidity: number +} + +export type lockStatus = deviceStatus & { + lockState: string + doorState: string + moveDetected: boolean + battery: number +} + +export type lockProStatus = deviceStatus & { + lockState: string + doorState: string + moveDetected: boolean + battery: number +} + +export type motionSensorStatus = deviceStatus & { + battery: number + moveDetected: boolean + brightness: 'bright' | 'dim' +} + +export type contactSensorStatus = deviceStatus & { + battery: number + moveDetected: boolean + openState: 'open' | 'close' | 'timeOutNotClose' + brightness: 'bright' | 'dim' +} + +export type waterLeakDetectorStatus = deviceStatus & { + battery: number + status: 0 /* dry */ | 1 /* leak detected */ +} + +export type ceilingLightStatus = deviceStatus & { + power: boolean + brightness: number + colorTemperature: number +} + +export type ceilingLightProStatus = deviceStatus & { + power: boolean + brightness: number + colorTemperature: number +} + +export type plugStatus = deviceStatus & { + power: string + version: string +} + +export type plugMiniStatus = deviceStatus & { + voltage: Float64Array + weight: Float64Array + electricityOfDay: number + electricCurrent: Float64Array + power: string +} + +export type stripLightStatus = deviceStatus & { + power: string + brightness: number + color: string +} + +export type colorBulbStatus = deviceStatus & { + power: string + brightness: number + color: string + colorTemperature: number +} + +export type robotVacuumCleanerS1Status = deviceStatus & { + workingStatus: string + onlineStatus: string + battery: number +} + +export type robotVacuumCleanerS1PlusStatus = deviceStatus & { + workingStatus: string + onlineStatus: string + battery: number +} + +export type floorCleaningRobotS10Status = deviceStatus & { + workingStatus: string + onlineStatus: string + battery: number + waterBaseBattery: number + taskType: string +} + +export type humidifierStatus = deviceStatus & { + power: string + humidity: number + temperature: number + nebulizationEfficiency: number + auto: boolean + childLock: boolean + sound: boolean + lackWater: boolean +} + +export type humidifier2Status = deviceStatus & { + power: string + humidity: number + temperature: number + nebulizationEfficiency: number + auto: boolean + childLock: boolean + sound: boolean + lackWater: boolean +} + +export type blindTiltStatus = deviceStatus & { + calibrate: boolean + battery: number + direction: string + slidePosition: string + lightLevel?: 'bright' | 'dim' +} + +export type hub2Status = deviceStatus & { + temperature: number + lightLevel: number + humidity: number +} + +export type batteryCirculatorFanStatus = deviceStatus & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + battery: number + power: string + nightStatus: number + oscillation: string + verticalOscillation: string + chargingStatus: string + fanSpeed: number +} + +export type circulatorFanStatus = deviceStatus & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + power: string + nightStatus: number + oscillation: string + verticalOscillation: string + fanSpeed: number +} + +export type relaySwitch1Status = deviceStatus & { + switchStatus: 0 | 1 + version: string +} + +export type relaySwitch1PMStatus = deviceStatus & { + switchStatus: 0 | 1 + voltage: number + version: string + power: number + usedElectricity: number + electricCurrent: number +} + +export type airPurifierStatus = deviceStatus & { + power: string + mode: number + childLock: number + version: string +} + +export type airPurifierTableStatus = deviceStatus & { + power: string + mode: number + childLock: number + version: string +} + +export type airPurifierVOCStatus = deviceStatus & { + power: string + mode: number + childLock: number + version: string +} + +export type airPurifierTableVOCStatus = deviceStatus & { + power: string + mode: number + childLock: number + version: string +} + +export interface webhookRequest { + action: string + url: string + deviceList: string +} + +export interface setupWebhookResponse { + statusCode: number + body: object + message: string +} + +export interface queryWebhookResponse { + statusCode: number + body: WebhookDetail[] + message: string +} + +export interface WebhookDetail { + url: string + createTime: number + lastUpdateTime: number + deviceList: string + enable: boolean +} + +export interface updateWebhookResponse { + statusCode: number + body: object + message: string +} + +export interface deleteWebhookResponse { + statusCode: number + body: object + message: string +} + +interface deviceWebhook { + eventType: string + eventVersion: string + context: deviceWebhookContext +} + +export { deviceWebhook } + +export interface deviceWebhookContext { + // properties on all devices + deviceMac: string + deviceType: string + timeOfSample: number +} + +export type botWebhookContext = deviceWebhookContext & { + power: string // "on"or"off" + battery: number + deviceMode: 'pressMode' | 'switchMode' | 'customizeMode' +} + +export type curtainWebhookContext = deviceWebhookContext & { + calibrate: boolean + group: boolean + slidePosition: number // 0~100 + battery: number +} + +export type curtain3WebhookContext = deviceWebhookContext & { + calibrate: boolean + group: boolean + slidePosition: number // 0~100 + battery: number +} + +export type motionSensorWebhookContext = deviceWebhookContext & { + detectionState: 'NOT_DETECTED' | 'DETECTED' + battery: number // 0~100 +} + +export type contactSensorWebhookContext = deviceWebhookContext & { + detectionState: 'NOT_DETECTED' | 'DETECTED' + battery: number // 0~100 + doorMode: 'IN_DOOR' | 'OUT_DOOR' + brightness: 'dim' | 'bright' + openState: 'open' | 'close' | 'timeOutNotClose' +} + +export type waterLeakDetectorWebhookContext = deviceWebhookContext & { + detectionState: 0 | 1 + battery: number // 0~100 +} + +export type meterWebhookContext = deviceWebhookContext & { + temperature: number + battery: number // 0~100 + scale: 'CELSIUS' | 'FAHRENHEIT' + humidity: number +} + +export type meterPlusWebhookContext = deviceWebhookContext & { + temperature: number + battery: number // 0~100 + scale: 'CELSIUS' | 'FAHRENHEIT' + humidity: number +} + +export type meterProWebhookContext = deviceWebhookContext & { + temperature: number + battery: number // 0~100 + scale: 'CELSIUS' | 'FAHRENHEIT' + humidity: number +} + +export type meterProCO2WebhookContext = deviceWebhookContext & { + temperature: number + battery: number // 0~100 + scale: 'CELSIUS' | 'FAHRENHEIT' + humidity: number + CO2: number +} + +export type outdoorMeterWebhookContext = deviceWebhookContext & { + temperature: number + battery: number // 0~100 + scale: 'CELSIUS' | 'FAHRENHEIT' + humidity: number +} + +export type lockWebhookContext = deviceWebhookContext & { + lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' + battery: number // 0~100 +} + +export type lockProWebhookContext = deviceWebhookContext & { + lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' + battery: number // 0~100 +} + +export type indoorCameraWebhookContext = deviceWebhookContext & { + detectionState: 'DETECTED' +} + +export type panTiltCamWebhookContext = deviceWebhookContext & { + detectionState: 'DETECTED' +} + +export type colorBulbWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' + brightness: number + color: string // RGB 255:255:255 + colorTemperature: number // 2700~6500 +} + +export type stripLightWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' + brightness: number + color: string // RGB 255:255:255 +} + +export type plugWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' +} + +export type plugMiniUSWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' +} + +export type plugMiniJPWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' +} + +export type robotVacuumCleanerS1WebhookContext = deviceWebhookContext & { + workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' + onlineStatus: 'online' | 'offline' + battery: number // 0~100 +} + +export type robotVacuumCleanerS1PlusWebhookContext = deviceWebhookContext & { + workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' + onlineStatus: 'online' | 'offline' + battery: number // 0~100 +} + +export type floorCleaningRobotS10WebhookContext = deviceWebhookContext & { + workingStatus: 'Standby' | 'Clearing' | 'Paused' | 'GotoChargeBase' | 'Charging' | 'ChargeDone' | 'Dormant' | 'InTrouble' | 'InRemoteControl' | 'InDustCollecting' + onlineStatus: 'online' | 'offline' + battery: number // 0~100 + waterBaseBattery: number // 0~100 + taskType: 'standBy' | 'explore' | 'cleanAll' | 'cleanArea' | 'cleanRoom' | 'fillWater' | 'deepWashing' | 'backToCharge' | 'markingWaterBase' | 'drying' | 'collectDust' | 'remoteControl' | 'cleanWithExplorer' | 'fillWaterForHumi' | 'markingHumi' +} + +export type ceilingLightWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' + brightness: number + colorTemperature: number // 2700~6500 +} + +export type ceilingLightProWebhookContext = deviceWebhookContext & { + powerState: 'ON' | 'OFF' + brightness: number + colorTemperature: number // 2700~6500 +} + +export type keypadWebhookContext = deviceWebhookContext & { + eventName: 'createKey' | 'deleteKey' + commandId: string + result: 'success' | 'failed' | 'timeout' +} + +export type keypadTouchWebhookContext = deviceWebhookContext & { + eventName: 'createKey' | 'deleteKey' + commandId: string + result: 'success' | 'failed' | 'timeout' +} + +export type hub2WebhookContext = deviceWebhookContext & { + temperature: number + humidity: number + lightLevel: number + scale: 'CELSIUS' | 'FAHRENHEIT' +} + +export type batteryCirculatorFanWebhookContext = deviceWebhookContext & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + battery: number + powerState: 'ON' | 'OFF' + nightStatus: 'off' | 1 | 2 + oscillation: 'on' | 'off' + verticalOscillation: 'on' | 'off' + chargingStatus: 'charging' | 'uncharged' + fanSpeed: number // 1~100 +} + +export type circulatorFanWebhookContext = deviceWebhookContext & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + battery: number + powerState: 'ON' | 'OFF' + nightStatus: 'off' | 1 | 2 + oscillation: 'on' | 'off' + verticalOscillation: 'on' | 'off' + fanSpeed: number // 1~100 +} + +export type blindTiltWebhookContext = deviceWebhookContext & { + version: string + calibrate: boolean + group: boolean + direction: string + slidePosition: number // 0~100 + battery: number +} + +export type humidifierWebhookContext = deviceWebhookContext & { + temperature: number + humidity: number + scale: 'CELSIUS' | 'FAHRENHEIT' +} + +export type humidifier2WebhookContext = deviceWebhookContext & { + temperature: number + humidity: number + scale: 'CELSIUS' | 'FAHRENHEIT' +} + +export type relaySwitch1Context = deviceWebhookContext & { + online: boolean + overTemperature: boolean + switchStatus: 0 | 1 + version: string +} + +export type relaySwitch1PMContext = deviceWebhookContext & { + online: boolean + overTemperature: boolean + switchStatus: 0 | 1 + overload: boolean + version: string +} + +export type airPurifierVOCWebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export type airPurifierTableVOCWebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export type airPurifierPM25WebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export type airPurifierTablePM25WebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export type airPurifierWebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export type airPurifierTableWebhookContext = deviceWebhookContext & { + power: string + mode: number + childLock: number +} + +export interface infraredRemoteList { + device: irdevice[] +} + +export interface irdevice { + deviceId?: string + deviceName: string + remoteType: string + hubDeviceId: string +} From a493969feb07f3728cc59f42db629da0a5f3f7ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Sep 2025 11:07:33 +0000 Subject: [PATCH 3/3] Initial plan