Skip to content

Commit 0065b4d

Browse files
author
v_yuanwenbin
committed
🔨继续重构service模块
1 parent 059244e commit 0065b4d

12 files changed

Lines changed: 233 additions & 109 deletions

package-lock.json

Lines changed: 62 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@
206206
"mocha": "^8.2.1",
207207
"multispinner": "^0.2.1",
208208
"node-loader": "^1.0.0",
209-
"node-sass": "^5.0.0",
209+
"node-sass": "^4.9.2",
210210
"p-finally": "^2.0.1",
211211
"puppeteer-core": "^10.4.0",
212212
"puppeteer-in-electron": "^3.0.4",

src/civet.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ declare module 'civet' {
7575

7676

7777
export enum ViewType {
78-
Property = 1,
79-
Navigation = 2,
80-
Overview = 3,
81-
ContentView = 4,
82-
Search = 5
78+
Property = 0x1,
79+
Navigation = 0x2,
80+
Overview = 0x4,
81+
ContentView = 0x8,
82+
Search = 0x10
8383
}
8484

8585
/**

src/public/ExtensionHostType.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ export enum PropertyType {
99
}
1010

1111
export enum ViewType {
12-
Property = 1,
13-
Navigation = 2,
14-
Overview = 3,
15-
ContentView = 4,
16-
Search = 5
12+
Property = 0x1,
13+
Navigation = 0x2,
14+
Overview = 0x4,
15+
ContentView = 0x8,
16+
Search = 0x10
1717
}
1818

1919
export enum OverviewItemLayout {

src/worker/ExtensionManager.ts

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import { ExtensionInstallManager, ExtensionDescriptor } from './ExtensionInstall
1313
import fs from 'fs'
1414
import { injectable, showErrorInfo, getSingleton } from './Singleton'
1515
import { IPCRendererResponse, IPCNormalMessage } from '@/../public/IPCMessage'
16-
import { AlgorithmService } from './service/AlgorithmService'
17-
import { MenuDetail } from './ExtensionPackage'
16+
import { ServiceFactory } from './service/ServiceFactory'
17+
import { ExtensionType, MenuDetail } from './ExtensionPackage'
1818
import { BaseService } from './service/ServiceInterface'
1919

2020
class ExtensionCommandAccessor implements ExtensionAccessor {
@@ -99,7 +99,8 @@ export class ExtensionManager {
9999
// aviable extension of this
100100
private _extensionsOfConfig: string[] = [];
101101
private _extensions: ExtensionService[] = []; //
102-
#extensions: BaseService[] = [];
102+
#services: Map<string,BaseService> = new Map<string,BaseService>(); // name, service
103+
#extensions: Map<string,BaseService[]> = new Map<string, BaseService[]>(); // contentType, service
103104
private _activableExtensions: Map<string, ExtensionService[]> = new Map<string, ExtensionService[]>(); // contentType, service
104105
private _viewServices: Map<string, ExtensionService> = new Map<string, ExtensionService>();
105106
private _installManager: ExtensionInstallManager|null = null;
@@ -167,8 +168,13 @@ export class ExtensionManager {
167168
private _initService(root: string, extensionName: string, pipeline: MessagePipeline): boolean {
168169
let service = this._getService(extensionName)
169170
try {
171+
const packPath = root + '/' + extensionName
172+
if (!this.#services.has(extensionName)) {
173+
const serv = ServiceFactory.createService(packPath)
174+
if (!serv) return false
175+
this.#services.set(extensionName, serv)
176+
}
170177
if (!service) {
171-
const packPath = root + '/' + extensionName
172178
service = new ExtensionService(packPath, pipeline)
173179
this._extensions.push(service)
174180
console.info('extension name:', extensionName)
@@ -182,21 +188,22 @@ export class ExtensionManager {
182188

183189
private _buildGraph() {
184190
this._activableExtensions.clear()
191+
this.#extensions.clear()
185192
console.info('service:', this._extensions)
186193
let extServs: ExtensionService[] = this._extensions
187194
console.info('service:', extServs)
188195
// build dependent service
189-
for (let idx = 0, len = extServs.length; idx < len; ++idx) {
190-
let service = extServs[idx]
191-
if (!service.dependency) continue
192-
for (let pos = 0; pos < len; ++pos) {
193-
if (service.dependency === extServs[pos].name) {
194-
extServs[pos].addDependency(service)
195-
// this._algorithmService.registExtension(service.name, service)
196-
break
197-
}
198-
}
199-
}
196+
// for (let idx = 0, len = extServs.length; idx < len; ++idx) {
197+
// let service = extServs[idx]
198+
// if (!service.dependency) continue
199+
// for (let pos = 0; pos < len; ++pos) {
200+
// if (service.dependency === extServs[pos].name) {
201+
// extServs[pos].addDependency(service)
202+
// // this._algorithmService.registExtension(service.name, service)
203+
// break
204+
// }
205+
// }
206+
// }
200207
// check if loop circle exist
201208
// build empty dependent service
202209
for (let idx = extServs.length - 1; idx >= 0; --idx) {
@@ -331,7 +338,7 @@ export class ExtensionManager {
331338

332339
private _initViewExtension(service: ExtensionService) {
333340
let activeType = service.viewType()
334-
if (!activeType) return
341+
if (!(activeType & ExtensionType.ViewExtension)) return
335342
this._viewServices.set(service.name, service)
336343
}
337344

src/worker/ExtensionPackage.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ const ViewTypeTable = {
1616
Search: ViewType.Search
1717
}
1818

19+
export enum ExtensionType {
20+
ServiceExtension = 1<<8,
21+
ViewExtension = 1 << 9
22+
}
1923
export abstract class BaseExtension {
2024
#name: string = '';
2125
#instance: any = null;
@@ -36,8 +40,8 @@ export class ExtensionPackage extends BaseExtension {
3640
private _license?: string;
3741
private _description?: string;
3842
private _activeEvents: string[] = [];
39-
private _viewEvents: ViewType[] = [];
40-
private _dependency: string|undefined;
43+
private _extensionInfo: number = 0;
44+
private _dependency: string[]|undefined;
4145
private _menus: Map<string, MenuDetail[]> = new Map<string, MenuDetail[]>(); //
4246
// private _dependency: Map<string, string> = new Map<string, string>();
4347

@@ -58,12 +62,15 @@ export class ExtensionPackage extends BaseExtension {
5862
if (map[0] === 'onContentType') {
5963
this._activeEvents = str.split(',')
6064
// console.debug('support content type:', this._activeEvents)
65+
this._extensionInfo |= ExtensionType.ServiceExtension
6166
} else if (map[0] === 'onView') {
6267
const views = str.split(',')
63-
this._viewEvents = views.map((item: string) => {
64-
return ViewTypeTable[item]
68+
views.forEach(item => {
69+
this._extensionInfo |= ViewTypeTable[item]
6570
})
71+
this._extensionInfo |= ExtensionType.ViewExtension
6672
} else if (map[0] === 'onSave') {
73+
this._extensionInfo |= ExtensionType.ServiceExtension
6774
}
6875
}
6976
// contrib
@@ -73,13 +80,7 @@ export class ExtensionPackage extends BaseExtension {
7380
this._initMenus(contrib['menus'])
7481
}
7582
// dependency
76-
const dependency = pack['civet']['dependency']
77-
if (dependency !== undefined) {
78-
for (let name in dependency) {
79-
// this._dependency[name] = dependency[name]
80-
this._dependency = name
81-
}
82-
}
83+
this._dependency = pack['civet']['dependency']
8384
}
8485

8586
private _initMenus(menus: any) {
@@ -106,6 +107,7 @@ export class ExtensionPackage extends BaseExtension {
106107
get owner() { return this._owner; }
107108
get activeTypes() { return this._activeEvents }
108109
get dependency() { return this._dependency }
109-
get viewEvents() { return this._viewEvents }
110+
get viewEvents() { return this._extensionInfo }
111+
get extensionType(): ExtensionType { return (this._extensionInfo & (ExtensionType.ServiceExtension|ExtensionType.ViewExtension)) }
110112
get menus() { return this._menus }
111113
}

src/worker/ExtensionService.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { IPCRendererResponse } from '@/../public/IPCMessage'
44
import { ViewType } from '@/../public/ExtensionHostType'
55
import { ExtensionModule } from './api/ExtensionRequire'
66
import { logger } from '@/../public/Logger'
7-
import { ExtensionPackage } from './ExtensionPackage'
7+
import { ExtensionPackage, ExtensionType } from './ExtensionPackage'
88
const fs = require('fs')
99

1010
export interface ExtensionAccessor {
@@ -61,7 +61,7 @@ export class ExtensionService {
6161
return this._package.activeTypes
6262
}
6363

64-
viewType(): ViewType[] {
64+
viewType(): ViewType {
6565
return this._package.viewEvents
6666
}
6767

@@ -79,7 +79,7 @@ export class ExtensionService {
7979
case ExtensionActiveType.ExtContentType:
8080
return this._package.activeTypes.length > 0
8181
case ExtensionActiveType.ExtView:
82-
return this._package.viewEvents.length > 0
82+
return this._package.viewEvents & ExtensionType.ViewExtension
8383
default:
8484
return false
8585
}

src/worker/service/AlgorithmService.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)