diff --git a/packages/core/src/registry.ts b/packages/core/src/registry.ts index 7d0f073..ccd7a54 100644 --- a/packages/core/src/registry.ts +++ b/packages/core/src/registry.ts @@ -89,7 +89,7 @@ export namespace Plugin { inject: Dict isReactive?: boolean scopes: EffectScope[] - plugin: Plugin + plugin: Plugin } export function resolve(plugin: Plugin): Meta { diff --git a/packages/hmr/src/index.ts b/packages/hmr/src/index.ts index e639067..f18c1c0 100644 --- a/packages/hmr/src/index.ts +++ b/packages/hmr/src/index.ts @@ -1,4 +1,4 @@ -import { Context, ForkScope, MainScope, Plugin, Schema, Service } from 'cordis' +import { Context, EffectScope, Plugin, Schema, Service } from 'cordis' import { Dict, makeArray } from 'cosmokit' import { ModuleJob, ModuleLoader } from 'cordis/loader' import { FSWatcher, watch, WatchOptions } from 'chokidar' @@ -33,7 +33,7 @@ async function loadDependencies(job: ModuleJob, ignored = new Set()) { interface Reload { filename: string - children: ForkScope[] + children: EffectScope[] } class Watcher extends Service { @@ -195,7 +195,7 @@ class Watcher extends Service { await this.analyzeChanges() /** plugins pending classification */ - const pending = new Map() + const pending = new Map() /** plugins that should be reloaded */ const reloads = new Map() @@ -236,28 +236,7 @@ class Watcher extends Service { // prepare for reload if (runtime) { - let isMarked = false - const visited = new Set() - const queued = [runtime] - while (queued.length) { - const runtime = queued.shift()! - if (visited.has(runtime)) continue - visited.add(runtime) - if (reloads.has(plugin)) { - isMarked = true - break - } - for (const fork of runtime.children) { - queued.push(fork.runtime) - } - } - if (!isMarked) { - const children: ForkScope[] = [] - reloads.set(plugin, { filename: job.url, children }) - for (const fork of runtime.children) { - children.push(fork) - } - } + reloads.set(plugin, { filename: job.url, children: runtime.scopes }) } else { reloads.set(plugin, { filename: job.url, children: [] }) } @@ -290,11 +269,11 @@ class Watcher extends Service { return rollback() } - const reload = (plugin: any, children: ForkScope[]) => { - for (const oldFork of children) { - const fork = oldFork.parent.plugin(plugin, oldFork.config) - fork.entry = oldFork.entry - if (fork.entry) fork.entry.fork = fork + const reload = (plugin: any, children: EffectScope[]) => { + for (const oldFiber of children) { + const scope = oldFiber.parent.plugin(plugin, oldFiber.config) + scope.entry = oldFiber.entry + if (scope.entry) scope.entry.fork = scope } } diff --git a/packages/loader/src/config/inject.ts b/packages/loader/src/config/inject.ts index 84001fa..eca809e 100644 --- a/packages/loader/src/config/inject.ts +++ b/packages/loader/src/config/inject.ts @@ -16,10 +16,7 @@ export function apply(ctx: Context) { } const checkInject = (scope: EffectScope, name: string) => { - if (!scope.runtime.plugin) return false - if (scope.runtime === scope) { - return scope.runtime.children.every(fork => checkInject(fork, name)) - } + if (!scope.meta) return false if (name in Inject.resolve(scope.entry?.options.inject)) return true return checkInject(scope.parent.scope, name) } diff --git a/packages/logger/package.json b/packages/logger/package.json index e0724d5..5febdd5 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -8,9 +8,9 @@ "types": "lib/index.d.ts", "exports": { ".": { + "types": "./lib/index.d.ts", "require": "./lib/index.cjs", - "import": "./lib/index.mjs", - "types": "./lib/index.d.ts" + "import": "./lib/index.mjs" }, "./src/*": "./src/*", "./package.json": "./package.json" diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 5750ade..5e09177 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -24,7 +24,7 @@ export interface LoggerService extends Pick { export class LoggerService extends Service { constructor(ctx: Context) { - super(ctx, 'logger', true) + super(ctx, 'logger') ctx.on('internal/info', function (format, ...args) { this.logger('app').info(format, ...args) diff --git a/packages/schema/package.json b/packages/schema/package.json index 7ad213c..35c3356 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -8,9 +8,9 @@ "types": "lib/index.d.ts", "exports": { ".": { + "types": "./lib/index.d.ts", "require": "./lib/index.cjs", - "import": "./lib/index.mjs", - "types": "./lib/index.d.ts" + "import": "./lib/index.mjs" }, "./src/*": "./src/*", "./package.json": "./package.json" diff --git a/packages/timer/package.json b/packages/timer/package.json index ad9c0dd..3009cbe 100644 --- a/packages/timer/package.json +++ b/packages/timer/package.json @@ -8,9 +8,9 @@ "types": "lib/index.d.ts", "exports": { ".": { + "types": "./lib/index.d.ts", "require": "./lib/index.cjs", - "import": "./lib/index.mjs", - "types": "./lib/index.d.ts" + "import": "./lib/index.mjs" }, "./src/*": "./src/*", "./package.json": "./package.json" diff --git a/packages/timer/src/index.ts b/packages/timer/src/index.ts index 78d33c4..9062979 100644 --- a/packages/timer/src/index.ts +++ b/packages/timer/src/index.ts @@ -16,7 +16,7 @@ type WithDispose = T & { dispose: () => void } export class TimerService extends Service { constructor(ctx: Context) { - super(ctx, 'timer', true) + super(ctx, 'timer') ctx.mixin('timer', ['setTimeout', 'setInterval', 'sleep', 'throttle', 'debounce']) }