存储适配器 API 分两部分:fabricjs-document-engine/storage 里的内置适配器,以及你自己的适配器要实现的 DocumentStorage 接口。
内置适配器
function createLocalStorage(options?: LocalStorageOptions): ManagedDocumentStorageThe same as createMemoryStorage, backed by localStorage. Also offers listDocuments() and deleteDocument(id).
function createMemoryStorage(): ManagedDocumentStorageIn-memory storage with revisions, listing and versions. Useful for tests and demos.
function createKeyValueStorage(store: KeyValueStore, prefix: string): ManagedDocumentStorageThe same, on any key-value store that has { read, write, remove, keys }.
| Name | Type | Default | Description |
|---|---|---|---|
| prefix | string | — | Prefix for every key, so several apps can share one origin. |
| storage | Storage | localStorage | Another Storage object, such as sessionStorage. |
内置适配器还提供 listDocuments() 和 deleteDocument(id),并支持版本。
检查适配器
function verifyStorageAdapter(storage: DocumentStorage): Promise<AdapterReport>Runs the storage contract against your adapter and returns { ok, checks }, so you know it follows the save rules.
每项检查的含义见检查适配器。
DocumentStorage 接口
| Name | Type | Default | Description |
|---|---|---|---|
| loadDocument* | (id: string): Promise<unknown> | — | Returns the stored document, or plain Fabric JSON. |
| saveDocument* | (document: FabricDocument, context: SaveContext): Promise<void | SaveResult> | — | Stores the document. Throw an error with code: 'SAVE_CONFLICT' when the stored revision differs from expectedRevision. Return { revision } if your backend assigns its own number. |
| Name | Type | Default | Description |
|---|---|---|---|
| expectedRevision* | number | null | — | The revision this editor last saved or loaded. null when the user chose to overwrite. |
| signal* | AbortSignal | — | Aborted when another document is opened. Pass it to fetch. |
版本
存储适配器实现下面四个方法,就能支持版本:
| Name | Type | Default | Description |
|---|---|---|---|
| saveVersion* | (version: DocumentVersion): Promise<void> | — | Stores a full copy of the document as a version. |
| listVersions* | (documentId: string): Promise<VersionSummary[]> | — | Version summaries for a document, newest first. |
| loadVersion* | (documentId: string, versionId: string): Promise<DocumentVersion> | — | Returns one version. |
| deleteVersion* | (documentId: string, versionId: string): Promise<void> | — | Deletes one version. |
冲突
function createConflictError(documentId: string, expectedRevision: number, actualRevision: number): DocumentEngineErrorA SAVE_CONFLICT error for your storage adapter to throw.
这套存储适配器 API 背后的规则,以及完整的 REST 示例,见自定义后端。