# @cloudbase/adapter-interface

> cloudbase javascript sdk adapter interface

Latest version **0.7.1** (published 2025-07-02) · ISC license · 0 weekly downloads

## Install

```sh
npm install @cloudbase/adapter-interface
pnpm add @cloudbase/adapter-interface
yarn add @cloudbase/adapter-interface
bun add @cloudbase/adapter-interface
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.7.1 |
| Published | 2025-07-02 |
| First published | 2019-12-16 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 15.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | wangjiachen, daniel-dx, starkwang, yhyang, binggg, fengkx, liuyanjie, justan, woodenstone, miusuncle, wedabot, areo-joe |
| Keywords | cloudbase, tcb, sdk |

## Links

- npm: https://www.npmjs.com/package/@cloudbase/adapter-interface
- npm.io page: https://npm.io/package/@cloudbase/adapter-interface

## Recent versions

- 0.7.1 (latest) — 2025-07-02
- 0.7.0 — 2025-04-14
- 0.6.0 — 2024-11-22
- 0.5.0 — 2024-08-08
- 0.4.1 — 2020-06-09
- 0.4.0 — 2020-01-17
- 0.3.0 — 2020-01-06
- 0.2.0 — 2019-12-16
- 0.1.1 — 2019-12-16
- 0.1.0 — 2019-12-16

## README

## @cloudbase/adapter-interface

[![NPM Version](https://img.shields.io/npm/v/@cloudbase/adapter-interface.svg?style=flat)](https://www.npmjs.com/package/@cloudbase/adapter-interface)
[![](https://img.shields.io/npm/dt/@cloudbase/adapter-interface.svg)](https://www.npmjs.com/package/@cloudbase/adapter-interface)

tcb-js-sdk适配器接口，各平台适配器按照此接口规范进行开发。

## 安装
```bash
npm i @cloudbase/adapter-interface -S
```

## 使用
```typescript
import {
  AbstractSDKRequest,
  IRequestOptions,
  IUploadRequestOptions,
  StorageInterface,
  WebSocketInterface,
  WebSocketContructor,
  SDKAdapterInterface,
  StorageType,
  formatUrl
} from '@cloudbase/adapter-interface';

// isMatch函数判断当前平台是否匹配
function isMatch(): boolean {
  // ...
  return true;
}

// Request类为平台特有的网络请求，必须实现post/upload/download三个public接口
export class Request extends AbstractSDKRequest {
  // 实现post接口
  public post(options: IRequestOptions) {
    return new Promise(resolve=>{
      // ...
      resolve();
    })
  }
  // 实现upload接口
  public upload(options: IUploadRequestOptions) {
    return new Promise(resolve=>{
      // ...
      resolve();
    })
  }
  // 实现download接口
  public download(options: IRequestOptions) {
    return new Promise(resolve=>{
      // ...
      resolve();
    })
  }
}
// Storage为平台特有的本地存储，必须实现setItem/getItem/removeItem/clear四个接口
export const Storage: StorageInterface = {
  setItem(key: string, value: any) {
    // ...
  },
  getItem(key: string): any {
    // ...
  },
  removeItem(key: string) {
    // ...
  },
  clear() {
    // ...
  }
};
// WebSocket为平台特有的WebSocket，与HTML5标准规范一致
export class WebSocket {
  constructor(url: string, options: object = {}) {
    const socketTask: WebSocketInterface = {
      set onopen(cb) {
        // ...
      },
      set onmessage(cb) {
        // ...
      },
      set onclose(cb) {
        // ...
      },
      set onerror(cb) {
        // ...
      },
      send: (data) => {
        // ...
      },
      close: (code? : number, reason? : string) => {
        // ...
      },
      get readyState() {
        // ...
        return readyState;
      },
      CONNECTING: 0,
      OPEN: 1,
      CLOSING: 2,
      CLOSED: 3
    };
    return socketTask;
  }
}

// genAdapter函数创建adapter实体
function genAdapter() {
  const adapter: SDKAdapterInterface = {
    // root对象为全局根对象，没有则填空对象{}
    root: window,
    reqClass: Request,
    wsClass: WebSocket as WebSocketContructor,
    localStorage: Storage,
    // 首先缓存存放策略，建议始终保持localstorage
    primaryStorage: StorageType.local,
    // sessionStorage为可选项，如果平台不支持可不填
    sessionStorage: sessionStorage
  };
  return adapter;
}

// 三者缺一不可
const adapter = {
  genAdapter,
  isMatch,
  // runtime为标记平台唯一性的说明
  runtime: 'wx_mp'
};

export default adapter;
```

---
_Source: https://npm.io/package/@cloudbase/adapter-interface · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
