feat: bump more deps (#14079)

This commit is contained in:
DarkSky
2025-12-10 16:02:28 +08:00
committed by GitHub
parent 40f3337d45
commit cb0ff04efa
194 changed files with 2155 additions and 2297 deletions

View File

@@ -14,7 +14,6 @@ We recommend users to always use the latest major version. Security updates will
We welcome you to provide us with bug reports via and email at [security@toeverything.info](mailto:security@toeverything.info) or submit directly on [GitHub](https://github.com/toeverything/AFFiNE/security), **we encourage you to submit the relevant information directly via GitHub**. We expect your report to contain at least the following for us to evaluate and reproduce: We welcome you to provide us with bug reports via and email at [security@toeverything.info](mailto:security@toeverything.info) or submit directly on [GitHub](https://github.com/toeverything/AFFiNE/security), **we encourage you to submit the relevant information directly via GitHub**. We expect your report to contain at least the following for us to evaluate and reproduce:
1. Using platform and version, for example: 1. Using platform and version, for example:
- macos arm64 0.12.0-canary-202402220729-0868ac6 - macos arm64 0.12.0-canary-202402220729-0868ac6
- app.affine.pro 0.12.0-canary-202402220729-0868ac6 - app.affine.pro 0.12.0-canary-202402220729-0868ac6

View File

@@ -79,7 +79,7 @@
"@blocksuite/std": "workspace:*", "@blocksuite/std": "workspace:*",
"@blocksuite/store": "workspace:*", "@blocksuite/store": "workspace:*",
"@blocksuite/sync": "workspace:*", "@blocksuite/sync": "workspace:*",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",
@@ -299,7 +299,7 @@
"version": "0.25.7", "version": "0.25.7",
"devDependencies": { "devDependencies": {
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"msw": "^2.8.4", "msw": "^2.12.4",
"vitest": "^3.2.4" "vitest": "^3.2.4"
} }
} }

View File

@@ -26,8 +26,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"file-type": "^21.0.0", "file-type": "^21.0.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -26,9 +26,9 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.23", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -30,8 +30,8 @@
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"emoji-mart": "^5.6.0", "emoji-mart": "^5.6.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -31,9 +31,9 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"shiki": "^3.0.0", "shiki": "^3.19.0",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -1,6 +1,4 @@
export const CODE_BLOCK_DEFAULT_DARK_THEME = import( export const CODE_BLOCK_DEFAULT_DARK_THEME =
'shiki/themes/dark-plus.mjs' import('shiki/themes/dark-plus.mjs');
); export const CODE_BLOCK_DEFAULT_LIGHT_THEME =
export const CODE_BLOCK_DEFAULT_LIGHT_THEME = import( import('shiki/themes/light-plus.mjs');
'shiki/themes/light-plus.mjs'
);

View File

@@ -27,8 +27,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -32,9 +32,9 @@
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"date-fns": "^4.0.0", "date-fns": "^4.0.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -24,8 +24,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,8 +28,8 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -30,9 +30,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -30,9 +30,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -28,9 +28,9 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,8 +28,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"file-type": "^21.0.0", "file-type": "^21.0.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,11 +28,11 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/katex": "^0.16.7", "@types/katex": "^0.16.7",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"katex": "^0.16.11", "katex": "^0.16.27",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,8 +27,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -33,8 +33,8 @@
"@vanilla-extract/css": "^1.17.0", "@vanilla-extract/css": "^1.17.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -26,8 +26,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -50,9 +50,9 @@
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -30,8 +30,8 @@
"fractional-indexing": "^3.2.0", "fractional-indexing": "^3.2.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"nanoid": "^5.0.7", "nanoid": "^5.1.6",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -26,10 +26,10 @@
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"nanoid": "^5.0.7", "nanoid": "^5.1.6",
"pdf-lib": "^1.17.1", "pdf-lib": "^1.17.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -8,9 +8,8 @@ import type { RoughCanvas } from '../../index.js';
import type { CanvasRenderer } from '../canvas-renderer.js'; import type { CanvasRenderer } from '../canvas-renderer.js';
export type ElementRenderer< export type ElementRenderer<
T extends T extends GfxPrimitiveElementModel | GfxLocalElementModel =
| GfxPrimitiveElementModel GfxPrimitiveElementModel,
| GfxLocalElementModel = GfxPrimitiveElementModel,
> = ( > = (
model: T, model: T,
ctx: CanvasRenderingContext2D, ctx: CanvasRenderingContext2D,

View File

@@ -10,7 +10,7 @@
"author": "toeverything", "author": "toeverything",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.4.0", "@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
"@blocksuite/affine-components": "workspace:*", "@blocksuite/affine-components": "workspace:*",
"@blocksuite/affine-ext-loader": "workspace:*", "@blocksuite/affine-ext-loader": "workspace:*",
"@blocksuite/affine-inline-preset": "workspace:*", "@blocksuite/affine-inline-preset": "workspace:*",
@@ -27,8 +27,8 @@
"@floating-ui/dom": "^1.6.13", "@floating-ui/dom": "^1.6.13",
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,14 +28,14 @@
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"collapse-white-space": "^2.1.0", "collapse-white-space": "^2.1.0",
"date-fns": "^4.0.0", "date-fns": "^4.0.0",
"katex": "^0.16.11", "katex": "^0.16.27",
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"shiki": "^3.0.0", "shiki": "^3.19.0",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,12 +27,12 @@
"date-fns": "^4.0.0", "date-fns": "^4.0.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.3" "vitest": "^3.2.4"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -21,8 +21,7 @@ type FnValueType<
export class FnTypeInstance< export class FnTypeInstance<
Args extends readonly TypeInstance[] = readonly TypeInstance[], Args extends readonly TypeInstance[] = readonly TypeInstance[],
Return extends TypeInstance = TypeInstance, Return extends TypeInstance = TypeInstance,
> implements TypeInstance > implements TypeInstance {
{
_validate = fnSchema; _validate = fnSchema;
readonly _valueType = undefined as never as FnValueType<Args, Return>; readonly _valueType = undefined as never as FnValueType<Args, Return>;
@@ -55,7 +54,6 @@ export class FnTypeInstance<
unify(ctx: TypeVarContext, template: FnTypeInstance, unify: Unify): boolean { unify(ctx: TypeVarContext, template: FnTypeInstance, unify: Unify): boolean {
const newCtx = { ...ctx }; const newCtx = { ...ctx };
// eslint-disable-next-line @typescript-eslint/prefer-for-of
for (let i = 0; i < template.args.length; i++) { for (let i = 0; i < template.args.length; i++) {
const arg = template.args[i]; const arg = template.args[i];
const realArg = this.args[i]; const realArg = this.args[i];
@@ -79,9 +77,9 @@ export class FnTypeInstance<
const fnSchema = Zod.function(); const fnSchema = Zod.function();
export class ArrayTypeInstance<Element extends TypeInstance = TypeInstance> export class ArrayTypeInstance<
implements TypeInstance Element extends TypeInstance = TypeInstance,
{ > implements TypeInstance {
readonly _validate; readonly _validate;
readonly _valueType = undefined as never as ValueTypeOf<Element>[]; readonly _valueType = undefined as never as ValueTypeOf<Element>[];

View File

@@ -14,8 +14,7 @@ export class DTInstance<
Name extends string = string, Name extends string = string,
Data = unknown, Data = unknown,
ValueSchema extends Zod.ZodType = Zod.ZodType, ValueSchema extends Zod.ZodType = Zod.ZodType,
> implements TypeInstance > implements TypeInstance {
{
readonly _valueType = undefined as never as Zod.TypeOf<ValueSchema>; readonly _valueType = undefined as never as Zod.TypeOf<ValueSchema>;
constructor( constructor(
@@ -47,8 +46,7 @@ export class DataType<
Name extends string = string, Name extends string = string,
DataSchema extends Zod.ZodType = Zod.ZodType, DataSchema extends Zod.ZodType = Zod.ZodType,
ValueSchema extends Zod.ZodType = Zod.ZodType, ValueSchema extends Zod.ZodType = Zod.ZodType,
> implements TypeDefinition > implements TypeDefinition {
{
constructor( constructor(
private readonly name: Name, private readonly name: Name,
_dataSchema: DataSchema, _dataSchema: DataSchema,

View File

@@ -17,9 +17,9 @@ export class TypeVarDefinitionInstance<
) {} ) {}
} }
export class TypeVarReferenceInstance<Name extends string = string> export class TypeVarReferenceInstance<
implements TypeInstance Name extends string = string,
{ > implements TypeInstance {
readonly _validate = unknownSchema; readonly _validate = unknownSchema;
readonly _valueType = undefined as unknown; readonly _valueType = undefined as unknown;

View File

@@ -29,8 +29,7 @@ export class CellBase<
RawValue = unknown, RawValue = unknown,
JsonValue = unknown, JsonValue = unknown,
Data extends Record<string, unknown> = Record<string, unknown>, Data extends Record<string, unknown> = Record<string, unknown>,
> implements Cell<RawValue, JsonValue, Data> > implements Cell<RawValue, JsonValue, Data> {
{
get dataSource() { get dataSource() {
return this.view.manager.dataSource; return this.view.manager.dataSource;
} }

View File

@@ -68,8 +68,7 @@ export abstract class PropertyBase<
RawValue = unknown, RawValue = unknown,
JsonValue = unknown, JsonValue = unknown,
Data extends Record<string, unknown> = Record<string, unknown>, Data extends Record<string, unknown> = Record<string, unknown>,
> implements Property<RawValue, JsonValue, Data> > implements Property<RawValue, JsonValue, Data> {
{
meta$ = computed(() => { meta$ = computed(() => {
return this.dataSource.propertyMetaGet(this.type$.value); return this.dataSource.propertyMetaGet(this.type$.value);
}); });

View File

@@ -78,8 +78,7 @@ export interface SingleView {
export abstract class SingleViewBase< export abstract class SingleViewBase<
ViewData extends DataViewDataType = DataViewDataType, ViewData extends DataViewDataType = DataViewDataType,
> implements SingleView > implements SingleView {
{
private readonly searchString = signal(''); private readonly searchString = signal('');
private readonly traitMap = new Map<symbol, unknown>(); private readonly traitMap = new Map<symbol, unknown>();

View File

@@ -490,8 +490,11 @@ export interface GridGroupData {
rows: string[]; rows: string[];
} }
export interface GridVirtualScrollOptions<GroupData, RowData, CellData> export interface GridVirtualScrollOptions<
extends VirtualScrollOptions { GroupData,
RowData,
CellData,
> extends VirtualScrollOptions {
initGroupData: (group: GridGroup<GroupData, RowData, CellData>) => GroupData; initGroupData: (group: GridGroup<GroupData, RowData, CellData>) => GroupData;
initRowData: (row: GridRow<GroupData, RowData, CellData>) => RowData; initRowData: (row: GridRow<GroupData, RowData, CellData>) => RowData;
initCellData: (cell: GridCell<GroupData, RowData, CellData>) => CellData; initCellData: (cell: GridCell<GroupData, RowData, CellData>) => CellData;

View File

@@ -26,8 +26,8 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -23,7 +23,7 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -26,8 +26,8 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,8 +28,8 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,8 +27,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@vanilla-extract/css": "^1.17.0", "@vanilla-extract/css": "^1.17.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,9 +27,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,9 +28,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,9 +28,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -30,9 +30,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -34,10 +34,10 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"simple-xml-to-json": "^1.2.2", "simple-xml-to-json": "^1.2.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -30,9 +30,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,9 +27,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,9 +28,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -29,9 +29,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -27,9 +27,9 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -13,7 +13,7 @@
"@blocksuite/global": "workspace:*", "@blocksuite/global": "workspace:*",
"@blocksuite/std": "workspace:*", "@blocksuite/std": "workspace:*",
"@blocksuite/store": "workspace:*", "@blocksuite/store": "workspace:*",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -24,8 +24,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -29,8 +29,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -29,14 +29,14 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"collapse-white-space": "^2.1.0", "collapse-white-space": "^2.1.0",
"date-fns": "^4.0.0", "date-fns": "^4.0.0",
"katex": "^0.16.11", "katex": "^0.16.27",
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"shiki": "^3.0.0", "shiki": "^3.19.0",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -29,8 +29,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,8 +28,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -35,14 +35,14 @@
"@types/mdast": "^4.0.4", "@types/mdast": "^4.0.4",
"collapse-white-space": "^2.1.0", "collapse-white-space": "^2.1.0",
"date-fns": "^4.0.0", "date-fns": "^4.0.0",
"katex": "^0.16.11", "katex": "^0.16.27",
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"shiki": "^3.0.0", "shiki": "^3.19.0",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -28,8 +28,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -17,8 +17,8 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"fractional-indexing": "^3.2.0", "fractional-indexing": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -30,9 +30,8 @@ export type EmbedBlockModel<Props = object> = BlockModel<EmbedProps<Props>>;
export function createEmbedBlockSchema< export function createEmbedBlockSchema<
Props extends object, Props extends object,
Model extends EmbedBlockModel<Props>, Model extends EmbedBlockModel<Props>,
Transformer extends BaseBlockTransformer< Transformer extends BaseBlockTransformer<EmbedProps<Props>> =
EmbedProps<Props> BaseBlockTransformer<EmbedProps<Props>>,
> = BaseBlockTransformer<EmbedProps<Props>>,
>({ >({
name, name,
version, version,

View File

@@ -27,8 +27,8 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lit-html": "^3.2.1", "lit-html": "^3.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -29,7 +29,7 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"mdast-util-gfm-autolink-literal": "^2.0.1", "mdast-util-gfm-autolink-literal": "^2.0.1",
"mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-footnote": "^2.1.0",
"mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0",
"mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-table": "^2.0.0",
"mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0",
@@ -39,18 +39,18 @@
"micromark-extension-gfm-table": "^2.1.0", "micromark-extension-gfm-table": "^2.1.0",
"micromark-extension-gfm-task-list-item": "^2.1.0", "micromark-extension-gfm-task-list-item": "^2.1.0",
"micromark-util-combine-extensions": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"quick-lru": "^7.0.1", "quick-lru": "^7.3.0",
"rehype-parse": "^9.0.0", "rehype-parse": "^9.0.0",
"rehype-stringify": "^10.0.0", "rehype-stringify": "^10.0.0",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"remark-parse": "^11.0.0", "remark-parse": "^11.0.0",
"remark-stringify": "^11.0.0", "remark-stringify": "^11.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"ts-pattern": "^5.1.0", "ts-pattern": "^5.1.0",
"unified": "^11.0.5", "unified": "^11.0.5",
"unist-util-visit": "^5.0.0", "unist-util-visit": "^5.0.0",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -14,8 +14,7 @@ export interface VirtualKeyboardProvider {
readonly appTabSafeArea$: ReadonlySignal<string>; readonly appTabSafeArea$: ReadonlySignal<string>;
} }
export interface VirtualKeyboardProviderWithAction export interface VirtualKeyboardProviderWithAction extends VirtualKeyboardProvider {
extends VirtualKeyboardProvider {
show: () => void; show: () => void;
hide: () => void; hide: () => void;
} }

View File

@@ -31,8 +31,8 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -22,7 +22,7 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -23,8 +23,8 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21" "yjs": "^13.6.27"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -27,8 +27,8 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21" "yjs": "^13.6.27"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -26,7 +26,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -42,9 +42,9 @@ interface EventCache {
onTouchEnd?: (e: TouchEvent) => void; onTouchEnd?: (e: TouchEvent) => void;
} }
export class EdgelessDraggableElementController<T> export class EdgelessDraggableElementController<
implements ReactiveController T,
{ > implements ReactiveController {
clearTimeout: ReturnType<typeof setTimeout> | null = null; clearTimeout: ReturnType<typeof setTimeout> | null = null;
events: EventCache = {}; events: EventCache = {};

View File

@@ -24,7 +24,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -22,7 +22,7 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -43,7 +43,7 @@
"fflate": "^0.8.2", "fflate": "^0.8.2",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -29,7 +29,7 @@
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"mammoth": "^1.11.0", "mammoth": "^1.11.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {

View File

@@ -24,8 +24,8 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21" "yjs": "^13.6.27"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -25,7 +25,7 @@
"fflate": "^0.8.2", "fflate": "^0.8.2",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -23,7 +23,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -18,7 +18,7 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -24,7 +24,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -26,7 +26,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -23,7 +23,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1" "rxjs": "^7.8.2"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -74,7 +74,7 @@ The bound of the element without considering the response extension.
#### Get Signature #### Get Signature
> **get** **lockedBySelf**(): `undefined` \| `boolean` > **get** **lockedBySelf**(): `boolean` \| `undefined`
Indicates whether the current block is explicitly locked by self. Indicates whether the current block is explicitly locked by self.
For checking the lock status of the element, use `isLocked` instead. For checking the lock status of the element, use `isLocked` instead.
@@ -82,7 +82,7 @@ For (un)locking the element, use `(un)lock` instead.
##### Returns ##### Returns
`undefined` \| `boolean` `boolean` \| `undefined`
#### Set Signature #### Set Signature
@@ -96,7 +96,7 @@ For (un)locking the element, use `(un)lock` instead.
###### lockedBySelf ###### lockedBySelf
`undefined` | `boolean` `boolean` | `undefined`
##### Returns ##### Returns

View File

@@ -12,11 +12,11 @@
### a ### a
`undefined` | `null` | `string` `string` | `null` | `undefined`
### b ### b
`undefined` | `null` | `string` `string` | `null` | `undefined`
### digits? ### digits?

View File

@@ -17,11 +17,11 @@ make sure a and b are generated by this function.
### a ### a
`null` | `string` `string` | `null`
### b ### b
`null` | `string` `string` | `null`
## Returns ## Returns

View File

@@ -20,11 +20,11 @@ a and b.
### a ### a
`undefined` | `null` | `string` `string` | `null` | `undefined`
### b ### b
`undefined` | `null` | `string` `string` | `null` | `undefined`
### n ### n

View File

@@ -11,7 +11,7 @@
This type include the common props for the graphic block model. This type include the common props for the graphic block model.
You can use this type with Omit to define the props of a graphic block model. You can use this type with Omit to define the props of a graphic block model.
## Type declaration ## Type Declaration
### rotate ### rotate

View File

@@ -37,13 +37,13 @@ The type of the value stored in the Boxed.
### getValue() ### getValue()
> **getValue**(): `undefined` \| `Value` > **getValue**(): `Value` \| `undefined`
Get the current value of the Boxed. Get the current value of the Boxed.
#### Returns #### Returns
`undefined` \| `Value` `Value` \| `undefined`
*** ***

View File

@@ -35,7 +35,7 @@ Returns an object mapping each registered flavour to its version number.
### get() ### get()
> **get**(`flavour`): `undefined` \| \{ `model`: \{ `children?`: `string`[]; `flavour`: `string`; `isFlatData?`: `boolean`; `parent?`: `string`[]; `props?`: (...`args`) => `Record`\<`string`, `any`\>; `role`: `string`; `toModel?`: (...`args`) => `BlockModel`\<`object`\>; \}; `transformer?`: (...`args`) => `BaseBlockTransformer`\<`object`\>; `version`: `number`; \} > **get**(`flavour`): \{ `model`: \{ `children?`: `string`[]; `flavour`: `string`; `isFlatData?`: `boolean`; `parent?`: `string`[]; `props?`: (...`args`) => `Record`\<`string`, `any`\>; `role`: `string`; `toModel?`: (...`args`) => `BlockModel`\<`object`\>; \}; `transformer?`: (...`args`) => `BaseBlockTransformer`\<`object`\>; `version`: `number`; \} \| `undefined`
Retrieves the schema for a given block flavour. Retrieves the schema for a given block flavour.
@@ -49,7 +49,7 @@ The block flavour name.
#### Returns #### Returns
`undefined` \| \{ `model`: \{ `children?`: `string`[]; `flavour`: `string`; `isFlatData?`: `boolean`; `parent?`: `string`[]; `props?`: (...`args`) => `Record`\<`string`, `any`\>; `role`: `string`; `toModel?`: (...`args`) => `BlockModel`\<`object`\>; \}; `transformer?`: (...`args`) => `BaseBlockTransformer`\<`object`\>; `version`: `number`; \} \{ `model`: \{ `children?`: `string`[]; `flavour`: `string`; `isFlatData?`: `boolean`; `parent?`: `string`[]; `props?`: (...`args`) => `Record`\<`string`, `any`\>; `role`: `string`; `toModel?`: (...`args`) => `BlockModel`\<`object`\>; \}; `transformer?`: (...`args`) => `BaseBlockTransformer`\<`object`\>; `version`: `number`; \} \| `undefined`
The corresponding BlockSchemaType or undefined if not found. The corresponding BlockSchemaType or undefined if not found.

View File

@@ -106,13 +106,13 @@ Get the signal for the readonly state of the store.
#### Get Signature #### Get Signature
> **get** **root**(): `null` \| `BlockModel`\<`object`\> > **get** **root**(): `BlockModel`\<`object`\> \| `null`
Get the root block of the store. Get the root block of the store.
##### Returns ##### Returns
`null` \| `BlockModel`\<`object`\> `BlockModel`\<`object`\> \| `null`
*** ***
@@ -146,7 +146,7 @@ Optional properties for the new block
Optional parent block or parent block ID Optional parent block or parent block ID
`null` | `string` | `BlockModel`\<`object`\> `string` | `BlockModel`\<`object`\> | `null`
##### parentIndex? ##### parentIndex?
@@ -184,7 +184,7 @@ Array of blocks to add
Optional parent block or parent block ID Optional parent block or parent block ID
`null` | `string` | `BlockModel`\<`object`\> `string` | `BlockModel`\<`object`\> | `null`
##### parentIndex? ##### parentIndex?
@@ -286,7 +286,7 @@ Array of all models
### getBlock() ### getBlock()
> **getBlock**(`id`): `undefined` \| `Block` > **getBlock**(`id`): `Block` \| `undefined`
Gets a block by its ID Gets a block by its ID
@@ -300,7 +300,7 @@ The block's ID
#### Returns #### Returns
`undefined` \| `Block` `Block` \| `undefined`
The block instance if found, undefined otherwise The block instance if found, undefined otherwise
@@ -308,7 +308,7 @@ The block instance if found, undefined otherwise
### getBlock$() ### getBlock$()
> **getBlock$**(`id`): `undefined` \| `Block` > **getBlock$**(`id`): `Block` \| `undefined`
Gets a block by its ID Gets a block by its ID
@@ -322,7 +322,7 @@ The block's ID
#### Returns #### Returns
`undefined` \| `Block` `Block` \| `undefined`
The block instance in signal if found, undefined otherwise The block instance in signal if found, undefined otherwise
@@ -352,7 +352,7 @@ Array of matching blocks
### getModelById() ### getModelById()
> **getModelById**\<`Model`\>(`id`): `null` \| `Model` > **getModelById**\<`Model`\>(`id`): `Model` \| `null`
Get a model by its ID Get a model by its ID
@@ -372,7 +372,7 @@ The model's ID
#### Returns #### Returns
`null` \| `Model` `Model` \| `null`
The model instance if found, null otherwise The model instance if found, null otherwise
@@ -402,7 +402,7 @@ Array of matching models
### getNext() ### getNext()
> **getNext**(`block`): `null` \| `BlockModel`\<`object`\> > **getNext**(`block`): `BlockModel`\<`object`\> \| `null`
Get the next sibling block of a given block Get the next sibling block of a given block
@@ -416,7 +416,7 @@ Block model or block ID to find next sibling for
#### Returns #### Returns
`null` \| `BlockModel`\<`object`\> `BlockModel`\<`object`\> \| `null`
The next sibling block model if found, null otherwise The next sibling block model if found, null otherwise
@@ -446,7 +446,7 @@ Array of next sibling blocks if found, empty array otherwise
### getParent() ### getParent()
> **getParent**(`target`): `null` \| `BlockModel`\<`object`\> > **getParent**(`target`): `BlockModel`\<`object`\> \| `null`
Gets the parent block of a given block Gets the parent block of a given block
@@ -460,7 +460,7 @@ Block model or block ID to find parent for
#### Returns #### Returns
`null` \| `BlockModel`\<`object`\> `BlockModel`\<`object`\> \| `null`
The parent block model if found, null otherwise The parent block model if found, null otherwise
@@ -468,7 +468,7 @@ The parent block model if found, null otherwise
### getPrev() ### getPrev()
> **getPrev**(`block`): `null` \| `BlockModel`\<`object`\> > **getPrev**(`block`): `BlockModel`\<`object`\> \| `null`
Get the previous sibling block of a given block Get the previous sibling block of a given block
@@ -482,7 +482,7 @@ Block model or block ID to find previous sibling for
#### Returns #### Returns
`null` \| `BlockModel`\<`object`\> `BlockModel`\<`object`\> \| `null`
The previous sibling block model if found, null otherwise The previous sibling block model if found, null otherwise
@@ -556,7 +556,7 @@ The new parent block model
Optional target sibling block model Optional target sibling block model
`null` | `BlockModel`\<`object`\> `BlockModel`\<`object`\> | `null`
##### shouldInsertBeforeSibling ##### shouldInsertBeforeSibling
@@ -652,7 +652,7 @@ The extension instance
#### Get Signature #### Get Signature
> **get** **getOptional**(): \<`T`\>(`identifier`, `options?`) => `null` \| `T` > **get** **getOptional**(): \<`T`\>(`identifier`, `options?`) => `T` \| `null`
Optional get an extension instance from the store. Optional get an extension instance from the store.
The major difference between `get` and `getOptional` is that `getOptional` will not throw an error if the extension is not found. The major difference between `get` and `getOptional` is that `getOptional` will not throw an error if the extension is not found.
@@ -667,7 +667,7 @@ const extension = store.getOptional(SomeExtension);
The extension instance The extension instance
> \<`T`\>(`identifier`, `options?`): `null` \| `T` > \<`T`\>(`identifier`, `options?`): `T` \| `null`
###### Type Parameters ###### Type Parameters
@@ -687,7 +687,7 @@ The extension instance
###### Returns ###### Returns
`null` \| `T` `T` \| `null`
*** ***

View File

@@ -103,13 +103,13 @@ Clear the text content.
### clone() ### clone()
> **clone**(): `Text`\<\{ `bold?`: `null` \| `true`; `code?`: `null` \| `true`; `italic?`: `null` \| `true`; `link?`: `null` \| `string`; `strike?`: `null` \| `true`; `underline?`: `null` \| `true`; \}\> > **clone**(): `Text`\<\{ `bold?`: `true` \| `null`; `code?`: `true` \| `null`; `italic?`: `true` \| `null`; `link?`: `string` \| `null`; `strike?`: `true` \| `null`; `underline?`: `true` \| `null`; \}\>
Clone the text to a new Text instance. Clone the text to a new Text instance.
#### Returns #### Returns
`Text`\<\{ `bold?`: `null` \| `true`; `code?`: `null` \| `true`; `italic?`: `null` \| `true`; `link?`: `null` \| `string`; `strike?`: `null` \| `true`; `underline?`: `null` \| `true`; \}\> `Text`\<\{ `bold?`: `true` \| `null`; `code?`: `true` \| `null`; `italic?`: `true` \| `null`; `link?`: `string` \| `null`; `strike?`: `true` \| `null`; `underline?`: `true` \| `null`; \}\>
A new Text instance. A new Text instance.

View File

@@ -8,7 +8,7 @@
"license": "MPL-2.0", "license": "MPL-2.0",
"type": "module", "type": "module",
"devDependencies": { "devDependencies": {
"typedoc": "^0.28.0", "typedoc": "^0.28.15",
"typedoc-plugin-markdown": "^4.5.0" "typedoc-plugin-markdown": "^4.5.0"
}, },
"scripts": { "scripts": {

View File

@@ -56,9 +56,9 @@
], ],
"dependencies": { "dependencies": {
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"lib0": "^0.2.97", "lib0": "^0.2.114",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -10,9 +10,9 @@
"author": "toeverything", "author": "toeverything",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.4.0", "@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.0", "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.2",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
"@blocksuite/global": "workspace:*", "@blocksuite/global": "workspace:*",
"@blocksuite/store": "workspace:*", "@blocksuite/store": "workspace:*",
"@lit/context": "^1.1.2", "@lit/context": "^1.1.2",
@@ -21,15 +21,15 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"dompurify": "^3.3.0", "dompurify": "^3.3.0",
"fractional-indexing": "^3.2.0", "fractional-indexing": "^3.2.0",
"lib0": "^0.2.97", "lib0": "^0.2.114",
"lit": "^3.2.0", "lit": "^3.2.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"lz-string": "^1.5.0", "lz-string": "^1.5.0",
"rehype-parse": "^9.0.0", "rehype-parse": "^9.0.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"unified": "^11.0.5", "unified": "^11.0.5",
"w3c-keyname": "^2.2.8", "w3c-keyname": "^2.2.8",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -66,8 +66,7 @@ export type SerializedElement = Record<string, unknown> & {
}; };
export abstract class GfxPrimitiveElementModel< export abstract class GfxPrimitiveElementModel<
Props extends BaseElementProps = BaseElementProps, Props extends BaseElementProps = BaseElementProps,
> implements GfxCompatibleInterface > implements GfxCompatibleInterface {
{
private _lastXYWH!: SerializedXYWH; private _lastXYWH!: SerializedXYWH;
protected _disposable = new DisposableGroup(); protected _disposable = new DisposableGroup();

View File

@@ -351,10 +351,10 @@ export class SurfaceBlockModel extends BlockModel<SurfaceBlockProps> {
val, val,
{ {
onChange: payload => { onChange: payload => {
this.elementUpdated.next(payload), (this.elementUpdated.next(payload),
Object.keys(payload.props).forEach(key => { Object.keys(payload.props).forEach(key => {
model.model.propsUpdated.next({ key }); model.model.propsUpdated.next({ key });
}); }));
}, },
skipFieldInit: true, skipFieldInit: true,
} }

View File

@@ -15,15 +15,15 @@
"@preact/signals-core": "^1.8.0", "@preact/signals-core": "^1.8.0",
"@types/lodash.ismatch": "^4.4.9", "@types/lodash.ismatch": "^4.4.9",
"file-type": "^21.0.0", "file-type": "^21.0.0",
"lib0": "^0.2.97", "lib0": "^0.2.114",
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"lodash.ismatch": "^4.4.0", "lodash.ismatch": "^4.4.0",
"lodash.merge": "^4.6.2", "lodash.merge": "^4.6.2",
"minimatch": "^10.0.1", "minimatch": "^10.1.1",
"nanoid": "^5.0.7", "nanoid": "^5.1.6",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"y-protocols": "^1.0.6", "y-protocols": "^1.0.6",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -13,9 +13,9 @@
"@blocksuite/global": "workspace:*", "@blocksuite/global": "workspace:*",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"idb": "^8.0.0", "idb": "^8.0.0",
"idb-keyval": "^6.2.1", "idb-keyval": "^6.2.2",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"y-protocols": "^1.0.6" "y-protocols": "^1.0.6"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -22,8 +22,8 @@
"@toeverything/theme": "^1.1.16", "@toeverything/theme": "^1.1.16",
"@vanilla-extract/css": "^1.17.0", "@vanilla-extract/css": "^1.17.0",
"lit": "^3.2.0", "lit": "^3.2.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"exports": { "exports": {
@@ -41,9 +41,9 @@
], ],
"devDependencies": { "devDependencies": {
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"vite": "^7.0.0", "vite": "^7.2.7",
"vite-plugin-istanbul": "^7.0.0", "vite-plugin-istanbul": "^7.2.1",
"vite-plugin-wasm": "^3.4.1", "vite-plugin-wasm": "^3.5.0",
"vitest": "^3.2.4" "vitest": "^3.2.4"
}, },
"version": "0.25.7" "version": "0.25.7"

View File

@@ -24,14 +24,14 @@
"@types/katex": "^0.16.7", "@types/katex": "^0.16.7",
"browser-fs-access": "^0.37.0", "browser-fs-access": "^0.37.0",
"jszip": "^3.10.1", "jszip": "^3.10.1",
"katex": "^0.16.11", "katex": "^0.16.27",
"lit": "^3.2.0", "lit": "^3.2.0",
"lz-string": "^1.5.0", "lz-string": "^1.5.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.2",
"tweakpane": "^4.0.4", "tweakpane": "^4.0.5",
"y-indexeddb": "^9.0.12", "y-indexeddb": "^9.0.12",
"y-protocols": "^1.0.6", "y-protocols": "^1.0.6",
"yjs": "^13.6.21", "yjs": "^13.6.27",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"license": "MIT", "license": "MIT",
@@ -40,10 +40,10 @@
"@types/micromatch": "^4.0.9", "@types/micromatch": "^4.0.9",
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"graphql": "^16.9.0", "graphql": "^16.9.0",
"magic-string": "^0.30.11", "magic-string": "^0.30.21",
"vite": "^7.0.0", "vite": "^7.2.7",
"vite-plugin-istanbul": "^7.0.0", "vite-plugin-istanbul": "^7.2.1",
"vite-plugin-wasm": "^3.3.0", "vite-plugin-wasm": "^3.5.0",
"vite-plugin-web-components-hmr": "^0.1.3" "vite-plugin-web-components-hmr": "^0.1.3"
}, },
"version": "0.25.7" "version": "0.25.7"

View File

@@ -1,334 +0,0 @@
# Jobs
- <b>Fullstack Engineer - Mainly work with TypeScript</b> @[affine.pro]
<details><summary>TypeScript & Rust · BlockSuite & OctoBase · Singapore / China / Remote</summary>
<p>
## What we do
We **AFFiNE** hold a vision of shaping a world semantically connected through block components in modern applications.
We're open for Fullstack Engineer positions across the BlockSuite sub-team.
The **BlockSuite** team works on creating
the best **block-editor** and **open-block** protocol for use in AFFiNE.
Paving the way for a new generation of SaaS
software and developers.
## Fullstack Engineer
### This position is for
- Developing AFFiNE **the open source way**, including coding and community engagement.
- Researching and supporting **onboarding process** of new use cases for AFFiNE.pro subscribers.
- Improving our **block editor** and **graphics editor**.
- Assisting our subscribers in utilizing our product in a data-based way with help from the operational teams.
- Researching on better activation of potential subscribers.
- Engineers who're self-organized individuals and also responsible team members, no matter they're on-site or
working remotely.
### What we're looking for
- Software engineering experience with **editor** or **graphics** and professional real-world use cases.
- Experience and proficiency in **TypeScript** and a **second programming language** preferably **Rust**.
- Strong communication and writing skills in English.
- Ability to work in a diverse and cross-functional team with skill and ease.
- A love for open source, sharing our visions and working under those values.
### It would be great if you are
- Skillful in building UI with different web frameworks or native web components.
- Heavy user of knowledge/project management tools.
- Experienced in scaling **a successful SaaS product**.
- Experienced in developing platforms or tools for developers.
- Experienced in working with a **globally distributed team**.
- Enthusiastic about AFFiNE products as a user or contributor.
### What we offer
- $2800 vouchers for the latest MacBook Pro or working equipment of your choice.
- Public holidays and paid annual leave starting at 12 days.
- Free lunch, unlimited drinks and snacks.
- Free English language lessons (including free IELTS test) open to all employees.
- Become a maintainer of great open source projects and use Copilot powered by GitHub for free if you want.
## Contact us
Interested? Send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>
- <b>AFFiNE client app</b> @[affine.pro]
<details><summary>Nodejs · TypeScript · Remote</summary>
<p>
## What we do
We **AFFiNE** hold a vision of shaping a world semantically connected through block components in collaboration
applications.
We're open for Fullstack Engineer internship positions across the **Client Application Development** sub-team on
creating **AFFiNE client app** for desktop and mobile devices.
## Fullstack Engineer Intern
### This position is for
- Developing AFFiNE **the open source way**, including coding and community engagement.
- Build the **client app** for desktop and mobile devices using web technologies.
### What we're looking for
- Software engineering experience with cross-platform client app development and professional real-world use cases.
- Experience and proficiency in **TypeScript** and a **second programming language** preferably **Rust**.
- Strong communication and writing skills in English.
- Ability to work in a diverse and cross-functional team with skill and ease.
- A lover for open source, sharing our visions and working under those values.
### It would be great if you are
- Heavy user of knowledge/project management tools.
- Experience in Napi.rs, Electron, Tauri, Flutter, React Native, etc.
- Enthusiastic about AFFiNE products as a user or contributor.
## Contact us
Interested? You can full this [form](https://6dxre9ihosp.typeform.com/to/lnHWRsVS) or send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>
- <b>Fullstack Engineer - Mainly work with Rust</b> @[affine.pro]
<details><summary>Rust & TypeScript · OctoBase & BlockSuite · Singapore / China / Remote</summary>
<p>
## What we do
We, `AFFiNE` believe in shaping a world semantically connected through block components in modern applications. We're
open for Fullstack Engineer positions across the OctoBase sub-team. OctoBase is an offline, scalable, and
self-contained collaborative database. It provides a data collaboration engine for AFFiNE and BlockSuite. It can
either run on the server as a service or be embedded in our client to offer a complete offline computing capacity.
## Fullstack Engineer
### This position is for
- Developing AFFiNE the open source way, including coding and community engagement.
- Researching and supporting the onboarding process of new use cases for AFFiNE.pro subscribers.
- Improving our data computing engine with Rust.
- Assisting our subscribers in utilizing our product in a data-based way with help from the operational - teams.
- Researching on better activation of potential subscribers.
- Engineers who're self-organized individuals and also responsible team members, no matter whether - they're on-site
or working remotely.
### What we're looking for
- Ability to use TypeScript proficiently in engineering projects and at least one server-side development language (
preferably Rust).
- Strong English communication and writing skills.
- Ability to work skillfully and comfortably within diverse and cross-functional teams.
- Love open source, share our vision, and work within those values.
### It would be great if you are
- Experience in understanding the architecture and being responsible for the development of a function or module in a
real project
- Heavy user of knowledge/project management tools
- Experience in working on a real-world database, distributed server application, or serverless application projects
- Experience in using a collaborative algorithm on your own or participating in projects
- Experienced in working with a globally distributed team.
- Enthusiastic about AFFiNE products as a user or contributor.
### What we offer
- $2800 vouchers for latest generation MacBook Pr or working equipment of your choice.
- Public holidays and paid annual leave starting at 12 days.
- Free lunch, unlimited drinks and snacks.
- Free English language lessons (including free IELTS test) open to all employees.
- Become a maintainer of great open source projects and use Copilot powered by GitHub for free if you want.
## Contact us
Interested? Send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>
- <b>Senior UI/UX Designer </b> @[affine.pro]
<details><summary>UI / UX · Creative Designer · Singapore / China / Remote</summary>
<p>
## Senior UI/UX Designer
We're seeking a highly skilled and experienced Senior UI/UX Designer to join our team and lead the development and
implementation of a UI design system for our product AFFiNE.
The ideal candidate will have a proven track record in
UI/UX design, as well as a deep understanding of the latest design trends and technologies.
### Position Requirements
- Lead the development and implementation of a UI design system for AFFiNE
- Create and maintain a UI component library, including colors, fonts, buttons, text boxes, etc.
- Establish UI design guidelines and standards to ensure consistency and reusability of all components
- Collaborate with cross-functional teams to gather requirements and design intuitive, user-friendly interfaces
- Conduct user research and gather feedback to iterate and improve the UI design system
- Stay up-to-date with the latest design trends and technologies, and continuously improve the UI design system
- Extensive experience in creative design thinking
- Strong expertise in animate effect design
- Having abroad job experience background
- Having a strong visual background or experience, proficient in illutrations(bonus point)
- Having distinctive artistic talent (bonus point)
### Job Requirements
- Bachelor's or Master's degree in Graphic Design, UI/UX Design, or a related field
- Extensive experience in UI/UX design, with a portfolio showcasing previous work
- Proficiency in design tools such as Sketch, Figma, Adobe Creative Suite, etc.
- Strong understanding of design principles and best practices, including typography, color theory, and user-centered
design
- Experience leading and mentoring junior designers
- Excellent communication and collaboration skills
- This is a long-term project that requires constant iteration and improvement to ensure AFFiNE's UI design meets user
needs and remains competitive.
### What we offer
- $2800 vouchers for the latest MacBook Pro or working equipment of your choice.
- Public holidays and paid annual leave starting at 12 days.
- Free lunch, unlimited drinks and snacks.
- Free English language lessons (including free IELTS test) open to all employees.
- Become a maintainer of great open source projects and use Copilot powered by GitHub for free if you want.
## Contact us
Interested? Send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>
- <b>Fullstack Engineer - Intern</b> @[affine.pro]
<details><summary>Rust · TypeScript · BlockSuite · OctoBase · Remote</summary>
<p>
## What we do
We **AFFiNE** hold a vision of shaping a world semantically connected through block components in modern applications.
We're open for Fullstack Engineer positions across the BlockSuite sub-team. The **BlockSuite** team works on creating
the best **block-editor** and **open-block** protocol for use in AFFiNE. Paving the way for a new generation of SaaS
software and developers.
## Fullstack Engineer Intern
### This position is for
- Developing AFFiNE **the open source way**, including coding and community engagement.
- Improving our **block editor** and **graphics editor**.
- Researching on better activation of potential subscribers.
### What we're looking for
- Software engineering experience with **editor** or **graphics** and professional real-world use cases.
- Experience and proficiency in **TypeScript** and a **second programming language** preferably **Rust**.
- Strong communication and writing skills in English.
- Ability to work in a diverse and cross-functional team with skill and ease.
- A lover for open source, sharing our visions and working under those values.
### It would be great if you are
- Heavy user of knowledge/project management tools.
- Enthusiastic about AFFiNE products as a user or contributor.
## Contact us
Interested? Send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>
- <b>Full Stack Platform Engineer</b> @[mysc.app](https://mysc.app/)
<details><summary>Backend · Remote / Shanghai, China</summary>
<p>
## Full Stack Platform Engineer
### Your responsibilities will include
- Build APIs in the Data Platform to support new capabilities within mysc.
- Work with backend and client side databases (MongoDB, Redis, SQLite)
- Design and implement algorithms that are highly performant, resilient against failures and race conditions and are
easy to use by application developers
- Build up solid knowledge of our product to understand end to end system behavior and data flow
- Execute performance profiling on existing systems to identify key bottlenecks and improve their performance
characteristics
### What we're looking for
- Strong analytical thinking, planning, and problem-solving skills
- 3-5 years experience in building APIs or Platforms
- Strong computer science fundamentals, including knowledge of data structures, algorithmic complexity, and designing
for performance and scalability
- Experience in NodeJS, TypeScript, and Go
- Experience with unit / automated testing
### What we offer
- A fully remote team based on Gather Town
- A culture that encourages different opinions, respects different values and advocates work life balance
- Real ownership and actual impact
- Learning and career opportunities on the long run
</p>
</details>
[affine.pro]: http://affine.pro/
[contact@toeverything.info]: mailto:contact@toeverything.info
- <b>Full stack or intern engineer - Mainly work with TypeScript</b> @[affine.pro]
<details><summary>TypeScript · BlockSuite · Remote</summary>
<p>
## What we do
We **AFFiNE** hold a vision of shaping a world semantically connected through block components in modern applications.
We're open for Fullstack Engineer positions across the BlockSuite sub-team. The **BlockSuite** team works on creating
the best **block-editor** and **open-block** protocol for use in AFFiNE. Paving the way for a new generation of SaaS
software and developers.
## Full stack or intern engineer
### This position is for
- Actively participate in Affine's open source work, responsible for implementing Affine's core features and continuously improving the user experience.
- Optimise and improve the copy and paste function to increase the efficiency of user copy and paste operations.
- Responsible for Affine's import and export work. Familiar with the data structure design of software such as Affine, Markdown, and Notion to ensure the accuracy of imported and exported data.
### What we're looking for
- Proficient in the JavaScript technology stack.
- Good English communication and teamwork skills, able to communicate and collaborate effectively with team members both locally and internationally.
- Passionate about open source software, familiar with the open source community and experience in open source projects preferred.
- Willingness to take on challenging work, agile thinking, strong learning skills and ability to adapt quickly to new technology and job requirements.
## Contact us
Interested? Send us your CV to [contact@toeverything.info].
Feel free to include any extra information (GitHub link, previous projects, personal blog etc.).
</p>
</details>

View File

@@ -7,9 +7,9 @@
"dev": "nodemon --exec 'typedoc --options ../../typedoc.json' & serve dist/" "dev": "nodemon --exec 'typedoc --options ../../typedoc.json' & serve dist/"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^3.1.7", "nodemon": "^3.1.11",
"serve": "^14.2.4", "serve": "^14.2.4",
"typedoc": "^0.28.0" "typedoc": "^0.28.15"
}, },
"nodemonConfig": { "nodemonConfig": {
"watch": [ "watch": [

View File

@@ -67,7 +67,7 @@
"@vitest/browser": "^3.2.4", "@vitest/browser": "^3.2.4",
"@vitest/coverage-istanbul": "^3.2.4", "@vitest/coverage-istanbul": "^3.2.4",
"@vitest/ui": "^3.2.4", "@vitest/ui": "^3.2.4",
"cross-env": "^7.0.3", "cross-env": "^10.1.0",
"electron": "^36.0.0", "electron": "^36.0.0",
"eslint": "^9.16.0", "eslint": "^9.16.0",
"eslint-config-prettier": "^10.0.0", "eslint-config-prettier": "^10.0.0",
@@ -81,15 +81,15 @@
"happy-dom": "^20.0.0", "happy-dom": "^20.0.0",
"husky": "^9.1.7", "husky": "^9.1.7",
"lint-staged": "^16.0.0", "lint-staged": "^16.0.0",
"msw": "^2.6.8", "msw": "^2.12.4",
"oxlint": "~1.18.0", "oxlint": "~1.18.0",
"prettier": "^3.4.2", "prettier": "^3.7.4",
"semver": "^7.6.3", "semver": "^7.7.3",
"serve": "^14.2.4", "serve": "^14.2.4",
"typescript": "^5.7.2", "typescript": "^5.7.2",
"typescript-eslint": "^8.18.0", "typescript-eslint": "^8.18.0",
"unplugin-swc": "^1.5.1", "unplugin-swc": "^1.5.9",
"vite": "^7.0.0", "vite": "^7.2.7",
"vitest": "^3.2.4" "vitest": "^3.2.4"
}, },
"packageManager": "yarn@4.9.1", "packageManager": "yarn@4.9.1",

View File

@@ -1,5 +1,6 @@
[package] [package]
edition = "2021" edition = "2021"
license-file = "LICENSE"
name = "affine_server_native" name = "affine_server_native"
version = "1.0.0" version = "1.0.0"

Some files were not shown because too many files have changed in this diff Show More