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:
1. Using platform and version, for example:
- macos arm64 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/store": "workspace:*",
"@blocksuite/sync": "workspace:*",
"rxjs": "^7.8.1"
"rxjs": "^7.8.2"
},
"exports": {
".": "./src/index.ts",
@@ -299,7 +299,7 @@
"version": "0.25.7",
"devDependencies": {
"@vanilla-extract/vite-plugin": "^5.0.0",
"msw": "^2.8.4",
"msw": "^2.12.4",
"vitest": "^3.2.4"
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -29,7 +29,7 @@
"lit": "^3.2.0",
"lodash-es": "^4.17.21",
"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-table": "^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-task-list-item": "^2.1.0",
"micromark-util-combine-extensions": "^2.0.0",
"minimatch": "^10.0.1",
"quick-lru": "^7.0.1",
"minimatch": "^10.1.1",
"quick-lru": "^7.3.0",
"rehype-parse": "^9.0.0",
"rehype-stringify": "^10.0.0",
"remark-math": "^6.0.0",
"remark-parse": "^11.0.0",
"remark-stringify": "^11.0.0",
"rxjs": "^7.8.1",
"rxjs": "^7.8.2",
"ts-pattern": "^5.1.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0",
"yjs": "^13.6.21",
"yjs": "^13.6.27",
"zod": "^3.25.76"
},
"exports": {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,7 +11,7 @@
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.
## Type declaration
## Type Declaration
### rotate

View File

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

View File

@@ -35,7 +35,7 @@ Returns an object mapping each registered flavour to its version number.
### 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.
@@ -49,7 +49,7 @@ The block flavour name.
#### 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.

View File

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

View File

@@ -103,13 +103,13 @@ Clear the text content.
### 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.
#### 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.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -24,14 +24,14 @@
"@types/katex": "^0.16.7",
"browser-fs-access": "^0.37.0",
"jszip": "^3.10.1",
"katex": "^0.16.11",
"katex": "^0.16.27",
"lit": "^3.2.0",
"lz-string": "^1.5.0",
"rxjs": "^7.8.1",
"tweakpane": "^4.0.4",
"rxjs": "^7.8.2",
"tweakpane": "^4.0.5",
"y-indexeddb": "^9.0.12",
"y-protocols": "^1.0.6",
"yjs": "^13.6.21",
"yjs": "^13.6.27",
"zod": "^3.25.76"
},
"license": "MIT",
@@ -40,10 +40,10 @@
"@types/micromatch": "^4.0.9",
"@vanilla-extract/vite-plugin": "^5.0.0",
"graphql": "^16.9.0",
"magic-string": "^0.30.11",
"vite": "^7.0.0",
"vite-plugin-istanbul": "^7.0.0",
"vite-plugin-wasm": "^3.3.0",
"magic-string": "^0.30.21",
"vite": "^7.2.7",
"vite-plugin-istanbul": "^7.2.1",
"vite-plugin-wasm": "^3.5.0",
"vite-plugin-web-components-hmr": "^0.1.3"
},
"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 illutrationsbonus 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/"
},
"devDependencies": {
"nodemon": "^3.1.7",
"nodemon": "^3.1.11",
"serve": "^14.2.4",
"typedoc": "^0.28.0"
"typedoc": "^0.28.15"
},
"nodemonConfig": {
"watch": [

View File

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

View File

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

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