curiouscorrelation 35acbe337f fix: finer cert control setting option 2 недель назад
..
src 35acbe337f fix: finer cert control setting option 21 часов назад
README.md fcc71a2c1a fix: typos in readme docs 21 часов назад
package.json 9903598c72 fix(gen): qualifier clash when invalidating cache 21 часов назад
tsconfig.base.json 54cb6158fd feat(kernel): `store` 22 часов назад
tsconfig.decl.json 2410e4cdc1 feat(kernel): `io` 22 часов назад
tsconfig.json f1f68d32e2 feat(kernel): init `hoppscotch-kernel` 22 часов назад
vite.config.d.ts f1f68d32e2 feat(kernel): init `hoppscotch-kernel` 22 часов назад
vite.config.ts 9903598c72 fix(gen): qualifier clash when invalidating cache 21 часов назад

README.md

Hoppscotch Kernel

Cross-platform abstraction kernel for Hoppscotch, a unified interface between application logic and platform-specific implementations.

Architecture

The kernel acts as a thin abstraction layer, mediating between high-level application logic and low-level platform implementations, similar to how operating system kernels abstract over hardware details. This helps the core Hoppscotch app be platform-agnostic while maintaining near native performance.

This codebase is minimal by design, providing just the building blocks for constructing features. If possible, always try composition before modifying the kernel directly.

Modules

IO Module

File system and external resource handling:

interface IoV1 {
  saveFileWithDialog(opts: SaveFileWithDialogOptions): Promise<SaveFileResponse>
  openExternalLink(opts: OpenExternalLinkOptions): Promise<OpenExternalLinkResponse>
  listen<T>(event: string, handler: EventCallback<T>): Promise<UnlistenFn>
}

Relay Module

Network operations with platform-specific optimizations:

interface RelayV1 {
  readonly capabilities: RelayCapabilities
  execute(request: RelayRequest): {
    cancel: () => Promise<void>
    emitter: RelayEventEmitter<RelayRequestEvents>
    response: Promise<Either<RelayError, RelayResponse>>
  }
}

Store Module

Cross-platform persistence with encryption support:

interface StoreV1 {
  readonly capabilities: Set<StoreCapability>
  set(namespace: string, key: string, value: unknown, options?: StorageOptions): Promise<Either<StoreError, void>>
  watch(namespace: string, key: string): StoreEventEmitter<StoreEvents>
}

Usage

Kernel Initialization

import { initKernel } from '@hoppscotch/kernel'

// Platform-specific initialization
const kernel = initKernel('web' | 'desktop')

Network Operations

import { RelayRequest } from '@hoppscotch/kernel'

const request: RelayRequest = {
  id: 1,
  url: "https://api.example.com",
  method: "GET",
  version: "HTTP/1.1",
  headers: { 
    "Content-Type": "application/json" 
  }
}

// Execute with capability checks
const { response, cancel } = kernel.relay.execute(request)

Storage Operations

// Encrypted storage with compression
await kernel.store.set("collections", "team-a", data, {
  encrypt: true,
  compress: true
})

// Watch for changes
kernel.store.watch("collections", "team-a").on("change", 
  (update) => console.log("Collection updated:", update)
)

File Operations

// Platform-agnostic file save
await kernel.io.saveFileWithDialog({
  data: new Uint8Array([...]),
  suggestedFilename: "export.json",
  contentType: "application/json"
})