From 9252822c5853ed7d673da3852729c583cec3f691 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Wed, 30 Apr 2025 17:03:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(data-source):=20=E6=B3=A8=E5=86=8Cbase?= =?UTF-8?q?/http=E6=95=B0=E6=8D=AE=E6=BA=90=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=9C=89=E5=89=AF=E4=BD=9C=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/data-source/src/DataSourceManager.ts | 18 ++++++++++++------ .../tests/DataSourceMenager.spec.ts | 6 +++++- .../tests/createDataSourceManager.spec.ts | 2 ++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/data-source/src/DataSourceManager.ts b/packages/data-source/src/DataSourceManager.ts index a0f81fea..db05b2cb 100644 --- a/packages/data-source/src/DataSourceManager.ts +++ b/packages/data-source/src/DataSourceManager.ts @@ -21,8 +21,8 @@ import EventEmitter from 'events'; import { cloneDeep } from 'lodash-es'; -import type { DataSourceSchema, default as TMagicApp, DisplayCond, Id, MNode, NODE_CONDS_KEY } from '@tmagic/core'; -import { compiledNode } from '@tmagic/core'; +import type { DataSourceSchema, default as TMagicApp, DisplayCond, Id, MNode } from '@tmagic/core'; +import { compiledNode, NODE_CONDS_KEY } from '@tmagic/core'; import { SimpleObservedData } from './observed-data/SimpleObservedData'; import { DataSource, HttpDataSource } from './data-sources'; @@ -31,7 +31,10 @@ import type { ChangeEvent, DataSourceManagerData, DataSourceManagerOptions, Obse import { compiledNodeField, compliedConditions, compliedIteratorItem, createIteratorContentData } from './utils'; class DataSourceManager extends EventEmitter { - private static dataSourceClassMap = new Map(); + private static dataSourceClassMap = new Map([ + ['base', DataSource], + ['http', HttpDataSource], + ]); private static ObservedDataClass: ObservedDataClass = SimpleObservedData; private static waitInitSchemaList = new Map>(); @@ -52,6 +55,12 @@ class DataSourceManager extends EventEmitter { return DataSourceManager.dataSourceClassMap.get(type); } + public static clearDataSourceClass() { + DataSourceManager.dataSourceClassMap.clear(); + DataSourceManager.dataSourceClassMap.set('base', DataSource); + DataSourceManager.dataSourceClassMap.set('http', HttpDataSource); + } + public static registerObservedData(ObservedDataClass: ObservedDataClass) { DataSourceManager.ObservedDataClass = ObservedDataClass; } @@ -320,7 +329,4 @@ class DataSourceManager extends EventEmitter { } } -DataSourceManager.register('http', HttpDataSource as any); -DataSourceManager.register('base', DataSource as any); - export default DataSourceManager; diff --git a/packages/data-source/tests/DataSourceMenager.spec.ts b/packages/data-source/tests/DataSourceMenager.spec.ts index 0088f25b..ee2654c1 100644 --- a/packages/data-source/tests/DataSourceMenager.spec.ts +++ b/packages/data-source/tests/DataSourceMenager.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { afterAll, describe, expect, test } from 'vitest'; import TMagicApp, { NodeType } from '@tmagic/core'; @@ -28,6 +28,10 @@ const app = new TMagicApp({ }, }); +afterAll(async () => { + DataSourceManager.clearDataSourceClass(); +}); + describe('DataSourceManager', () => { const dsm = new DataSourceManager({ app, diff --git a/packages/data-source/tests/createDataSourceManager.spec.ts b/packages/data-source/tests/createDataSourceManager.spec.ts index fa953017..360b4291 100644 --- a/packages/data-source/tests/createDataSourceManager.spec.ts +++ b/packages/data-source/tests/createDataSourceManager.spec.ts @@ -47,5 +47,7 @@ describe('createDataSourceManager', () => { test('instance', () => { const manager = createDataSourceManager(new TMagicApp({ config: dsl })); expect(manager).toBeInstanceOf(DataSourceManager); + + DataSourceManager.clearDataSourceClass(); }); });