Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: reorganize specs and adapter extensions #10359

Merged
merged 1 commit into from
Feb 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ async function renderNoteContent(
match: ids.map(id => ({ id, viewType: 'display' })),
};
const previewDoc = doc.doc.getStore({ query });
const previewSpec = SpecProvider.getInstance().getSpec('preview:page');
const previewSpec = SpecProvider._.getSpec('preview:page');
const previewStd = new BlockStdScope({
store: previewDoc,
extensions: previewSpec.value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ export class EmbedSyncedDocBlockComponent extends EmbedBlockComponent<EmbedSynce

protected _buildPreviewSpec = (name: 'preview:page' | 'preview:edgeless') => {
const nextDepth = this.depth + 1;
const previewSpecBuilder = SpecProvider.getInstance().getSpec(name);
const previewSpecBuilder = SpecProvider._.getSpec(name);
const currentDisposables = this.disposables;
const editorSetting =
this.std.getOptional(EditorSettingProvider) ??
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ export class FramePreview extends WithDisposable(ShadowlessElement) {

private _previewDoc: Store | null = null;

private readonly _previewSpec =
SpecProvider.getInstance().getSpec('preview:edgeless');
private readonly _previewSpec = SpecProvider._.getSpec('preview:edgeless');

private readonly _updateFrameViewportWH = () => {
const [, , w, h] = deserializeXYWH(this.frame.xywh);
Expand Down
2 changes: 1 addition & 1 deletion blocksuite/affine/block-root/src/transformers/html.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ type ImportHTMLZipOptions = {

function getProvider() {
const container = new Container();
const exts = SpecProvider.getInstance().getSpec('store').value;
const exts = SpecProvider._.getSpec('store').value;
exts.forEach(ext => {
ext.setup(container);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { createAssetsArchive, download, Unzip } from './utils.js';

function getProvider() {
const container = new Container();
const exts = SpecProvider.getInstance().getSpec('store').value;
const exts = SpecProvider._.getSpec('store').value;
exts.forEach(ext => {
ext.setup(container);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ type ImportNotionZipOptions = {

function getProvider() {
const container = new Container();
const exts = SpecProvider.getInstance().getSpec('store').value;
const exts = SpecProvider._.getSpec('store').value;
exts.forEach(ext => {
ext.setup(container);
});
Expand Down
2 changes: 1 addition & 1 deletion blocksuite/affine/block-surface-ref/src/portal/note.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ export class SurfaceRefNotePortal extends WithDisposable(ShadowlessElement) {
query: this.query,
readonly: true,
});
const previewSpec = SpecProvider.getInstance().getSpec('preview:page');
const previewSpec = SpecProvider._.getSpec('preview:page');
return new BlockStdScope({
store: doc,
extensions: previewSpec.value.slice(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,7 @@ export class SurfaceRefBlockComponent extends BlockComponent<SurfaceRefBlockMode

private _previewDoc: Store | null = null;

private readonly _previewSpec =
SpecProvider.getInstance().getSpec('preview:edgeless');
private readonly _previewSpec = SpecProvider._.getSpec('preview:edgeless');

private _referencedModel: GfxModel | null = null;

Expand Down
2 changes: 1 addition & 1 deletion blocksuite/affine/shared/src/utils/spec/spec-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class SpecProvider {

private constructor() {}

static getInstance() {
static get _() {
if (!SpecProvider.instance) {
SpecProvider.instance = new SpecProvider();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export class PreviewHelper {
const editorSetting = std.get(EditorSettingProvider).peek();
const query = this._calculateQuery(blockIds as string[], mode);
const store = widget.doc.doc.getStore({ query });
const previewSpec = SpecProvider.getInstance().getSpec(
const previewSpec = SpecProvider._.getSpec(
isEdgeless ? 'preview:edgeless' : 'preview:page'
);
const settingSignal = signal({ ...editorSetting });
Expand Down
29 changes: 2 additions & 27 deletions blocksuite/blocks/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,28 +47,7 @@
"@blocksuite/global": "workspace:*",
"@blocksuite/icons": "^2.2.1",
"@blocksuite/inline": "workspace:*",
"@blocksuite/store": "workspace:*",
"@floating-ui/dom": "^1.6.10",
"@lit/context": "^1.1.2",
"@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.11",
"@vanilla-extract/css": "^1.17.0",
"date-fns": "^4.0.0",
"dompurify": "^3.2.4",
"fflate": "^0.8.2",
"file-type": "^20.0.0",
"fractional-indexing": "^3.2.0",
"html2canvas": "^1.4.1",
"katex": "^0.16.11",
"lit": "^3.2.0",
"lodash-es": "^4.17.21",
"lz-string": "^1.5.0",
"minimatch": "^10.0.1",
"nanoid": "^5.0.7",
"shiki": "^2.0.0",
"simple-xml-to-json": "^1.2.2",
"yjs": "^13.6.21",
"zod": "^3.23.8"
"@blocksuite/store": "workspace:*"
},
"exports": {
".": "./src/index.ts",
Expand All @@ -79,13 +58,9 @@
"src",
"dist",
"!src/__tests__",
"!dist/__tests__",
"schemas.d.ts",
"schemas.js"
"!dist/__tests__"
],
"devDependencies": {
"@types/katex": "^0.16.7",
"@types/lodash-es": "^4.17.12",
"@vanilla-extract/vite-plugin": "^5.0.0",
"vitest": "3.0.6"
}
Expand Down
2 changes: 0 additions & 2 deletions blocksuite/blocks/schemas.d.ts

This file was deleted.

3 changes: 0 additions & 3 deletions blocksuite/blocks/schemas.js

This file was deleted.

17 changes: 2 additions & 15 deletions blocksuite/blocks/src/__tests__/adapters/html.unit.spec.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import {
HtmlInlineToDeltaAdapterExtensions,
InlineDeltaToHtmlAdapterExtensions,
} from '@blocksuite/affine-components/rich-text';
import { DefaultTheme, NoteDisplayMode } from '@blocksuite/affine-model';
import {
embedSyncedDocMiddleware,
HtmlAdapter,
} from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import type {
BlockSnapshot,
DocSnapshot,
Expand All @@ -16,19 +11,11 @@ import type {
import { AssetsManager, MemoryBlobCRUD } from '@blocksuite/store';
import { describe, expect, test } from 'vitest';

import { defaultBlockHtmlAdapterMatchers } from '../../_common/adapters/html/block-matcher.js';
import { createJob } from '../utils/create-job.js';
import { getProvider } from '../utils/get-provider.js';
import { nanoidReplacement } from '../utils/nanoid-replacement.js';

const container = new Container();
[
...HtmlInlineToDeltaAdapterExtensions,
...defaultBlockHtmlAdapterMatchers,
...InlineDeltaToHtmlAdapterExtensions,
].forEach(ext => {
ext.setup(container);
});
const provider = container.provider();
const provider = getProvider();

describe('snapshot to html', () => {
const template = (html: string, title?: string) => {
Expand Down
18 changes: 2 additions & 16 deletions blocksuite/blocks/src/__tests__/adapters/markdown.unit.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
import {
InlineDeltaToMarkdownAdapterExtensions,
MarkdownInlineToDeltaAdapterExtensions,
} from '@blocksuite/affine-components/rich-text';
import {
DefaultTheme,
NoteDisplayMode,
Expand All @@ -11,7 +7,6 @@ import {
embedSyncedDocMiddleware,
MarkdownAdapter,
} from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import type {
BlockSnapshot,
DocSnapshot,
Expand All @@ -21,20 +16,11 @@ import type {
import { AssetsManager, MemoryBlobCRUD } from '@blocksuite/store';
import { describe, expect, test } from 'vitest';

import { defaultBlockMarkdownAdapterMatchers } from '../../_common/adapters/markdown/block-matcher.js';
import { createJob } from '../utils/create-job.js';
import { getProvider } from '../utils/get-provider.js';
import { nanoidReplacement } from '../utils/nanoid-replacement.js';

const container = new Container();
[
...MarkdownInlineToDeltaAdapterExtensions,
...defaultBlockMarkdownAdapterMatchers,
...InlineDeltaToMarkdownAdapterExtensions,
].forEach(ext => {
ext.setup(container);
});

const provider = container.provider();
const provider = getProvider();

describe('snapshot to markdown', () => {
test('code', async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,17 @@
import { NotionHtmlInlineToDeltaAdapterExtensions } from '@blocksuite/affine-components/rich-text';
import { DefaultTheme, NoteDisplayMode } from '@blocksuite/affine-model';
import { NotionHtmlAdapter } from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import {
AssetsManager,
type BlockSnapshot,
MemoryBlobCRUD,
} from '@blocksuite/store';
import { describe, expect, test } from 'vitest';

import { defaultBlockNotionHtmlAdapterMatchers } from '../../_common/adapters/notion-html/block-matcher.js';
import { createJob } from '../utils/create-job.js';
import { getProvider } from '../utils/get-provider.js';
import { nanoidReplacement } from '../utils/nanoid-replacement.js';

const container = new Container();
[
...NotionHtmlInlineToDeltaAdapterExtensions,
...defaultBlockNotionHtmlAdapterMatchers,
].forEach(ext => {
ext.setup(container);
});

const provider = container.provider();
const provider = getProvider();

describe('notion html to snapshot', () => {
test('code', async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,19 @@
import { InlineDeltaToPlainTextAdapterExtensions } from '@blocksuite/affine-components/rich-text';
import { DefaultTheme, NoteDisplayMode } from '@blocksuite/affine-model';
import {
embedSyncedDocMiddleware,
PlainTextAdapter,
} from '@blocksuite/affine-shared/adapters';
import { Container } from '@blocksuite/global/di';
import type {
BlockSnapshot,
DocSnapshot,
TransformerMiddleware,
} from '@blocksuite/store';
import { describe, expect, test } from 'vitest';

import { defaultBlockPlainTextAdapterMatchers } from '../../_common/adapters/plain-text/block-matcher.js';
import { createJob } from '../utils/create-job.js';
import { getProvider } from '../utils/get-provider.js';

const container = new Container();
[
...defaultBlockPlainTextAdapterMatchers,
...InlineDeltaToPlainTextAdapterExtensions,
].forEach(ext => {
ext.setup(container);
});
const provider = container.provider();
const provider = getProvider();

describe('snapshot to plain text', () => {
test('paragraph', async () => {
Expand Down
15 changes: 15 additions & 0 deletions blocksuite/blocks/src/__tests__/utils/get-provider.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { SpecProvider } from '@blocksuite/affine-shared/utils';
import { Container } from '@blocksuite/global/di';

import { registerSpecs } from '../../extensions/register';

registerSpecs();

export function getProvider() {
const container = new Container();
const exts = SpecProvider._.getSpec('store').value;
exts.forEach(ext => {
ext.setup(container);
});
return container.provider();
}
22 changes: 0 additions & 22 deletions blocksuite/blocks/src/_common/adapters/extension.ts

This file was deleted.

6 changes: 0 additions & 6 deletions blocksuite/blocks/src/_specs/index.ts

This file was deleted.

31 changes: 0 additions & 31 deletions blocksuite/blocks/src/_specs/preset/adapters.ts

This file was deleted.

9 changes: 0 additions & 9 deletions blocksuite/blocks/src/_specs/preset/edgeless-specs.ts

This file was deleted.

Loading
Loading