snapshot of https://github.com/toeverything/AFFiNE.git (canary, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Build & Test / Analyze (javascript, blocksuite) (push) Failing after 3s
Build & Test / Rust test filter (push) Failing after 3s
Build & Test / E2E BlockSuite Test (2) (push) Failing after 3s
Build & Test / E2E BlockSuite Test (3) (push) Failing after 4s
Build & Test / E2E BlockSuite Test (4) (push) Failing after 3s
Build & Test / E2E BlockSuite Cross Browser Test (push) Failing after 3s
Build & Test / E2E Mobile Test (1) (push) Failing after 3s
Build & Test / E2E Mobile Test (2) (push) Failing after 3s
Build & Test / Build AFFiNE native (x86_64-unknown-linux-gnu) (push) Failing after 4s
Build & Test / Unit Test (1) (push) Has been skipped
Build & Test / Unit Test (2) (push) Has been skipped
Build & Test / Unit Test (3) (push) Has been skipped
Build & Test / Build Server native (push) Failing after 3s
Build & Test / Check Git Status (push) Has been skipped
Build & Test / Server Test (0, 4) (push) Has been skipped
Build & Test / Server Test (1, 4) (push) Has been skipped
Build & Test / Analyze (javascript, affine) (push) Failing after 3s
Build & Test / Analyze (typescript, affine) (push) Failing after 3s
Build & Test / Analyze (typescript, blocksuite) (push) Failing after 3s
Build & Test / Mobile native build filter (push) Failing after 3s
Build & Test / Check yarn binary (push) Failing after 3s
Build & Test / E2E BlockSuite Test (1) (push) Failing after 4s
Build & Test / E2E BlockSuite Test (5) (push) Failing after 3s
Build & Test / Unit Test (4) (push) Has been skipped
Build & Test / Unit Test (5) (push) Has been skipped
Build & Test / Native Unit Test (push) Has been skipped
Build & Test / Server Test (2, 4) (push) Has been skipped
Build & Test / Server Test (3, 4) (push) Has been skipped
Build & Test / Server Test with Elasticsearch (push) Has been skipped
Build & Test / Server Test with Embedded Search (push) Has been skipped
Build & Test / Server Test with Manticore Search (push) Has been skipped
Build & Test / Server E2E Test (push) Has been skipped
Build & Test / Cloud Desktop E2E Test (push) Has been skipped
Build & Test / Cloud E2E Test 1/2 (push) Has been skipped
Build & Test / Cloud E2E Test 2/2 (push) Has been skipped
Build & Test / Build @affine/electron renderer (push) Failing after 3s
Build & Test / Copilot test filter (push) Failing after 4s
Build & Test / Lint Rust (push) Has been skipped
Build & Test / Build Android app (push) Has been skipped
Build & Test / Test Android app (push) Has been skipped
Build & Test / Run native tests (push) Has been skipped
Build & Test / Server Copilot Api Test (push) Has been skipped
Build & Test / Frontend Copilot E2E Test (3, 5) (push) Has been skipped
Build & Test / Frontend Copilot E2E Test (4, 5) (push) Has been skipped
Build & Test / Frontend Copilot E2E Test (1, 5) (push) Has been skipped
Build & Test / Frontend Copilot E2E Test (2, 5) (push) Has been skipped
Build & Test / Frontend Copilot E2E Test (5, 5) (push) Has been skipped
Build & Test / Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true) (push) Has been cancelled
Build & Test / Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true) (push) Has been cancelled
Build & Test / 3, 2, 1 Launch (push) Has been cancelled
Build & Test / Lint (push) Has been cancelled
Build & Test / Typecheck (push) Has been cancelled
Build & Test / Build iOS app (push) Has been cancelled
Build & Test / Build AFFiNE native (aarch64-apple-darwin) (push) Has been cancelled
Build & Test / E2E Test (1) (push) Has been cancelled
Build & Test / E2E Test (2) (push) Has been cancelled
Build & Test / E2E Test (3) (push) Has been cancelled
Build & Test / E2E Test (4) (push) Has been cancelled
Build & Test / E2E Test (5) (push) Has been cancelled
Build & Test / Build AFFiNE native (x86_64-apple-darwin) (push) Has been cancelled
Build & Test / Build AFFiNE native (aarch64-pc-windows-msvc) (push) Has been cancelled
Build & Test / Build AFFiNE native (x86_64-pc-windows-msvc) (push) Has been cancelled
Build & Test / Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true) (push) Has been cancelled
Build & Test / Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false) (push) Has been cancelled

This commit is contained in:
upstream-mirror
2026-09-16 00:31:07 +05:00
commit 50f788e799
7907 changed files with 988785 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
[**BlockSuite API Documentation**](../../../../README.md)
***
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/std](../../README.md) / [index](../README.md) / CommandManager
# Class: CommandManager
Command manager to manage all commands
Commands are functions that take a context and a next function as arguments
```ts
const myCommand: Command<input, output> = (ctx, next) => {
const count = ctx.count || 0;
const success = someOperation();
if (success) {
return next({ count: count + 1 });
}
// if the command is not successful, you can return without calling next
return;
```
Command input and output data can be defined in the `Command` type
```ts
// input: ctx.firstName, ctx.lastName
// output: ctx.fullName
const myCommand: Command<{ firstName: string; lastName: string }, { fullName: string }> = (ctx, next) => {
const { firstName, lastName } = ctx;
const fullName = `${firstName} ${lastName}`;
return next({ fullName });
}
```
---
Commands can be run in two ways:
1. Using `exec` method
`exec` is used to run a single command
```ts
const [result, data] = commandManager.exec(myCommand, payload);
```
2. Using `chain` method
`chain` is used to run a series of commands
```ts
const chain = commandManager.chain();
const [result, data] = chain
.pipe(myCommand1)
.pipe(myCommand2, payload)
.run();
```
---
Command chains will stop running if a command is not successful
```ts
const chain = commandManager.chain();
const [result, data] = chain
.chain(myCommand1) <-- if this fail
.chain(myCommand2, payload) <- this won't run
.run();
result <- result will be `false`
```
You can use `try` to run a series of commands and if one of them is successful, it will continue to the next command
```ts
const chain = commandManager.chain();
const [result, data] = chain
.try(chain => [
chain.pipe(myCommand1), <- if this fail
chain.pipe(myCommand2, payload), <- this will run, if this success
chain.pipe(myCommand3), <- this won't run
])
.run();
```
The `tryAll` method is similar to `try`, but it will run all commands even if one of them is successful
```ts
const chain = commandManager.chain();
const [result, data] = chain
.try(chain => [
chain.pipe(myCommand1), <- if this success
chain.pipe(myCommand2), <- this will also run
chain.pipe(myCommand3), <- so will this
])
.run();
```
## Extends
- [`LifeCycleWatcher`](LifeCycleWatcher.md)
## Methods
### chain()
> **chain**(): `Chain`\<`InitCommandCtx`\>
Create a chain to run a series of commands
```ts
const chain = commandManager.chain();
const [result, data] = chain
.myCommand1()
.myCommand2(payload)
.run();
```
#### Returns
`Chain`\<`InitCommandCtx`\>
[success, data] - success is a boolean to indicate if the chain is successful,
data is the final context after running the chain
***
### created()
> **created**(): `void`
Called when std is created.
#### Returns
`void`
#### Inherited from
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`created`](LifeCycleWatcher.md#created)
***
### mounted()
> **mounted**(): `void`
Called when editor host is mounted.
Which means the editor host emit the `connectedCallback` lifecycle event.
#### Returns
`void`
#### Inherited from
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`mounted`](LifeCycleWatcher.md#mounted)
***
### rendered()
> **rendered**(): `void`
Called when `std.render` is called.
#### Returns
`void`
#### Inherited from
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`rendered`](LifeCycleWatcher.md#rendered)
***
### unmounted()
> **unmounted**(): `void`
Called when editor host is unmounted.
Which means the editor host emit the `disconnectedCallback` lifecycle event.
#### Returns
`void`
#### Inherited from
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`unmounted`](LifeCycleWatcher.md#unmounted)