@eggjs/watcher 5.0.0-beta.19 → 5.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -6
- package/dist/app.d.ts +2 -2
- package/dist/app.js +2 -6
- package/dist/config/config.default.d.ts +18 -20
- package/dist/config/config.default.js +16 -13
- package/dist/config/config.local.d.ts +2 -5
- package/dist/config/config.local.js +6 -5
- package/dist/config/config.unittest.d.ts +2 -5
- package/dist/config/config.unittest.js +6 -5
- package/dist/index.d.ts +3 -5
- package/dist/index.js +4 -7
- package/dist/lib/boot.d.ts +5 -9
- package/dist/lib/boot.js +29 -25
- package/dist/lib/event-sources/base.d.ts +4 -8
- package/dist/lib/event-sources/base.js +4 -7
- package/dist/lib/event-sources/default.d.ts +5 -9
- package/dist/lib/event-sources/default.js +15 -18
- package/dist/lib/event-sources/development.d.ts +6 -10
- package/dist/lib/event-sources/development.js +96 -65
- package/dist/lib/event-sources/index.d.ts +4 -4
- package/dist/lib/event-sources/index.js +2 -2
- package/dist/lib/utils.d.ts +1 -4
- package/dist/lib/utils.js +7 -8
- package/dist/lib/watcher.d.ts +17 -21
- package/dist/lib/watcher.js +114 -63
- package/dist/types.d.ts +9 -11
- package/dist/types.js +2 -1
- package/package.json +7 -7
package/dist/agent.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Boot } from
|
|
2
|
-
export
|
|
1
|
+
import { Boot } from './lib/boot.ts';
|
|
2
|
+
export default Boot;
|
package/dist/agent.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
import { Boot } from "./lib/boot.js";
|
|
2
|
-
|
|
3
|
-
//#
|
|
4
|
-
var agent_default = Boot;
|
|
5
|
-
|
|
6
|
-
//#endregion
|
|
7
|
-
export { agent_default as default };
|
|
2
|
+
export default Boot;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxlQUFlLElBQUksQ0FBQyJ9
|
package/dist/app.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Boot } from
|
|
2
|
-
export
|
|
1
|
+
import { Boot } from './lib/boot.ts';
|
|
2
|
+
export default Boot;
|
package/dist/app.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
import { Boot } from "./lib/boot.js";
|
|
2
|
-
|
|
3
|
-
//#
|
|
4
|
-
var app_default = Boot;
|
|
5
|
-
|
|
6
|
-
//#endregion
|
|
7
|
-
export { app_default as default };
|
|
2
|
+
export default Boot;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLGVBQWUsSUFBSSxDQUFDIn0=
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
eventSources: Record<string, string>;
|
|
1
|
+
export interface WatcherConfig {
|
|
2
|
+
/**
|
|
3
|
+
* event source type, default is `default`
|
|
4
|
+
* can be `default` or `development`
|
|
5
|
+
*/
|
|
6
|
+
type: string;
|
|
7
|
+
/**
|
|
8
|
+
* event sources
|
|
9
|
+
* key is event source type, value is event source module path
|
|
10
|
+
*/
|
|
11
|
+
eventSources: Record<string, string>;
|
|
13
12
|
}
|
|
14
13
|
declare const _default: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
/**
|
|
15
|
+
* watcher options
|
|
16
|
+
* @member Config#watcher
|
|
17
|
+
* @property {string} type - event source type
|
|
18
|
+
*/
|
|
19
|
+
watcher: WatcherConfig;
|
|
21
20
|
};
|
|
22
|
-
|
|
23
|
-
export { WatcherConfig, _default as default };
|
|
21
|
+
export default _default;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
export default {
|
|
3
|
+
/**
|
|
4
|
+
* watcher options
|
|
5
|
+
* @member Config#watcher
|
|
6
|
+
* @property {string} type - event source type
|
|
7
|
+
*/
|
|
8
|
+
watcher: {
|
|
9
|
+
type: 'default', // default event source
|
|
10
|
+
eventSources: {
|
|
11
|
+
default: path.join(import.meta.dirname, '../lib/event-sources/default'),
|
|
12
|
+
development: path.join(import.meta.dirname, '../lib/event-sources/development'),
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQWU3QixlQUFlO0lBQ2I7Ozs7T0FJRztJQUNILE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTLEVBQUUsdUJBQXVCO1FBQ3hDLFlBQVksRUFBRTtZQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLDhCQUE4QixDQUFDO1lBQ3ZFLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtDQUFrQyxDQUFDO1NBQ2hGO0tBQ2U7Q0FDbkIsQ0FBQyJ9
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export default {
|
|
2
|
+
watcher: {
|
|
3
|
+
type: 'development',
|
|
4
|
+
},
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmxvY2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcubG9jYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZUFBZTtJQUNiLE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxhQUFhO0tBQ3BCO0NBQ2tCLENBQUMifQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export default {
|
|
2
|
+
watcher: {
|
|
3
|
+
type: 'development',
|
|
4
|
+
},
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnVuaXR0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudW5pdHRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZUFBZTtJQUNiLE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxhQUFhO0tBQ3BCO0NBQ2tCLENBQUMifQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import DevelopmentEventSource from "./lib/event-sources/development.js";
|
|
5
|
-
export { BaseEventSource, ChangeInfo, DefaultEventSource, DevelopmentEventSource, WatchListener, Watcher };
|
|
1
|
+
import './types.ts';
|
|
2
|
+
export * from './lib/watcher.ts';
|
|
3
|
+
export * from './lib/event-sources/index.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import "./lib/event-sources/index.js";
|
|
6
|
-
|
|
7
|
-
export { BaseEventSource, DefaultEventSource, DevelopmentEventSource, Watcher };
|
|
1
|
+
import "./types.js";
|
|
2
|
+
export * from "./lib/watcher.js";
|
|
3
|
+
export * from "./lib/event-sources/index.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDhCQUE4QixDQUFDIn0=
|
package/dist/lib/boot.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(appOrAgent: EggApplicationCore);
|
|
7
|
-
didLoad(): Promise<void>;
|
|
1
|
+
import type { ILifecycleBoot, EggApplicationCore } from 'egg';
|
|
2
|
+
export declare class Boot implements ILifecycleBoot {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(appOrAgent: EggApplicationCore);
|
|
5
|
+
didLoad(): Promise<void>;
|
|
8
6
|
}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { Boot };
|
package/dist/lib/boot.js
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
1
2
|
import { Watcher } from "./watcher.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
3
|
+
const debug = debuglog('egg/watcher/lib/boot');
|
|
4
|
+
export class Boot {
|
|
5
|
+
#app;
|
|
6
|
+
constructor(appOrAgent) {
|
|
7
|
+
this.#app = appOrAgent;
|
|
8
|
+
if (this.#app.options.mode === 'all-in-one-process') {
|
|
9
|
+
debug('init watcher in all-in-one-process mode');
|
|
10
|
+
// FIXME: should use single instance of Watcher for all-in-one-process mode, avoid network port listen
|
|
11
|
+
this.#app.watcher = new Watcher(appOrAgent.config);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
debug('init watcher in cluster mode');
|
|
15
|
+
this.#app.watcher = this.#app
|
|
16
|
+
.clusterWrapper(Watcher, {})
|
|
17
|
+
.delegate('watch', 'subscribe')
|
|
18
|
+
.create(appOrAgent.config);
|
|
19
|
+
}
|
|
20
|
+
this.#app.watcher
|
|
21
|
+
.on('info', (msg, ...args) => this.#app.coreLogger.info(msg, ...args))
|
|
22
|
+
.on('warn', (msg, ...args) => this.#app.coreLogger.warn(msg, ...args))
|
|
23
|
+
.on('error', (msg, ...args) => this.#app.coreLogger.error(msg, ...args));
|
|
24
|
+
}
|
|
25
|
+
async didLoad() {
|
|
26
|
+
await this.#app.watcher.ready();
|
|
27
|
+
this.#app.coreLogger.info('[@eggjs/watcher:%s] watcher start success', this.#app.type);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYm9vdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSXJDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFL0MsTUFBTSxPQUFPLElBQUk7SUFDZixJQUFJLENBQXFCO0lBRXpCLFlBQVksVUFBOEI7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssb0JBQW9CLEVBQUUsQ0FBQztZQUNwRCxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUNqRCxzR0FBc0c7WUFDdEcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7aUJBQzFCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2lCQUMzQixRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2FBQ2QsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQ3BGLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNwRixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDRiJ9
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { Base } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
abstract watch(file: string): void;
|
|
6
|
-
abstract unwatch(file: string): void;
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
export declare abstract class BaseEventSource extends Base {
|
|
3
|
+
abstract watch(file: string): void;
|
|
4
|
+
abstract unwatch(file: string): void;
|
|
7
5
|
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { BaseEventSource };
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { Base } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
//#endregion
|
|
7
|
-
export { BaseEventSource };
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
export class BaseEventSource extends Base {
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZXZlbnQtc291cmNlcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEMsTUFBTSxPQUFnQixlQUFnQixTQUFRLElBQUk7Q0FHakQifQ==
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { BaseEventSource } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
watch(): void;
|
|
7
|
-
unwatch(): void;
|
|
1
|
+
import { BaseEventSource } from './base.ts';
|
|
2
|
+
export default class DefaultEventSource extends BaseEventSource {
|
|
3
|
+
constructor();
|
|
4
|
+
watch(): void;
|
|
5
|
+
unwatch(): void;
|
|
8
6
|
}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { DefaultEventSource as default };
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { BaseEventSource } from "./base.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//#endregion
|
|
19
|
-
export { DefaultEventSource as default };
|
|
2
|
+
export default class DefaultEventSource extends BaseEventSource {
|
|
3
|
+
constructor() {
|
|
4
|
+
super();
|
|
5
|
+
// delay emit so that can be listened
|
|
6
|
+
setImmediate(() => this.emit('info', '[@eggjs/watcher] defaultEventSource watcher will NOT take effect'));
|
|
7
|
+
this.ready(true);
|
|
8
|
+
}
|
|
9
|
+
watch() {
|
|
10
|
+
this.emit('info', '[@eggjs/watcher] using defaultEventSource watcher.watch() does NOTHING');
|
|
11
|
+
}
|
|
12
|
+
unwatch() {
|
|
13
|
+
this.emit('info', '[@eggjs/watcher] using defaultEventSource watcher.unwatch() does NOTHING');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZXZlbnQtc291cmNlcy9kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFNUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQzdEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixxQ0FBcUM7UUFDckMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtFQUFrRSxDQUFDLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsd0VBQXdFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLDBFQUEwRSxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUNGIn0=
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { BaseEventSource } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
watch(file: string): void;
|
|
8
|
-
unwatch(file: string): void;
|
|
1
|
+
import { BaseEventSource } from './base.ts';
|
|
2
|
+
export default class DevelopmentEventSource extends BaseEventSource {
|
|
3
|
+
#private;
|
|
4
|
+
constructor();
|
|
5
|
+
watch(file: string): void;
|
|
6
|
+
unwatch(file: string): void;
|
|
9
7
|
}
|
|
10
|
-
//#endregion
|
|
11
|
-
export { DevelopmentEventSource as default };
|
|
@@ -1,66 +1,97 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs, {} from 'node:fs';
|
|
1
4
|
import { BaseEventSource } from "./base.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
5
|
+
const debug = debuglog('egg-watcher/lib/event-sources/development');
|
|
6
|
+
// only used by local dev environment
|
|
7
|
+
export default class DevelopmentEventSource extends BaseEventSource {
|
|
8
|
+
#fileWatching = new Map();
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
this.ready(true);
|
|
12
|
+
}
|
|
13
|
+
watch(file) {
|
|
14
|
+
try {
|
|
15
|
+
const stat = fs.statSync(file, { throwIfNoEntry: false });
|
|
16
|
+
if (!stat) {
|
|
17
|
+
debug('watch %o ignore, file not exists', file);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
debug('watch %o, isFile: %o', file, stat.isFile());
|
|
21
|
+
// https://nodejs.org/docs/latest/api/fs.html#fswatchfilename-options-listener
|
|
22
|
+
let recursive = true;
|
|
23
|
+
if (process.platform === 'linux' && process.version.startsWith('v18.')) {
|
|
24
|
+
// https://github.com/fgnass/filewatcher/pull/6
|
|
25
|
+
// disable recursive on linux + Node.js <= 18
|
|
26
|
+
recursive = false;
|
|
27
|
+
}
|
|
28
|
+
const handler = fs.watch(file, {
|
|
29
|
+
persistent: true,
|
|
30
|
+
recursive,
|
|
31
|
+
}, (event, filename) => {
|
|
32
|
+
debug('watch %o => event: %o, filename: %o', file, event, filename);
|
|
33
|
+
let changePath = file;
|
|
34
|
+
if (stat.isFile()) {
|
|
35
|
+
this.#onFsWatchChange(event, changePath);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// dir
|
|
39
|
+
if (filename) {
|
|
40
|
+
changePath = path.join(file, filename);
|
|
41
|
+
}
|
|
42
|
+
this.#onFsWatchChange(event, changePath);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
// 保存 handler,用于解除监听
|
|
46
|
+
this.#fileWatching.set(file, handler);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
// file not exist, do nothing
|
|
50
|
+
// do not emit error, in case of too many logs
|
|
51
|
+
this.emit('warn', '[@eggjs/watcher:DevelopmentEventSource] watch %o error: %s', file, e);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
unwatch(file) {
|
|
55
|
+
if (!file)
|
|
56
|
+
return;
|
|
57
|
+
const h = this.#fileWatching.get(file);
|
|
58
|
+
if (!h)
|
|
59
|
+
return;
|
|
60
|
+
// fs.watch 文件监听
|
|
61
|
+
h.removeAllListeners();
|
|
62
|
+
h.close();
|
|
63
|
+
this.#fileWatching.delete(file);
|
|
64
|
+
}
|
|
65
|
+
#onFsWatchChange(event, file) {
|
|
66
|
+
if (!file) {
|
|
67
|
+
this.emit('warn', '[@eggjs/watcher:DevelopmentEventSource] event: %o', event);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// { event: 'change',
|
|
71
|
+
// path: '/Users/mk2/git/changing/test/fixtures/foo.js',
|
|
72
|
+
// stat:
|
|
73
|
+
// { dev: 16777220,
|
|
74
|
+
// mode: 33188,
|
|
75
|
+
// nlink: 1,
|
|
76
|
+
// uid: 501,
|
|
77
|
+
// gid: 20,
|
|
78
|
+
// rdev: 0,
|
|
79
|
+
// blksize: 4096,
|
|
80
|
+
// ino: 72656587,
|
|
81
|
+
// size: 11,
|
|
82
|
+
// blocks: 8,
|
|
83
|
+
// atime: Wed Jun 17 2015 00:08:11 GMT+0800 (CST),
|
|
84
|
+
// mtime: Wed Jun 17 2015 00:08:38 GMT+0800 (CST),
|
|
85
|
+
// ctime: Wed Jun 17 2015 00:08:38 GMT+0800 (CST),
|
|
86
|
+
// birthtime: Tue Jun 16 2015 23:19:13 GMT+0800 (CST) } }
|
|
87
|
+
const stat = fs.statSync(file, { throwIfNoEntry: false });
|
|
88
|
+
const info = {
|
|
89
|
+
path: file,
|
|
90
|
+
event,
|
|
91
|
+
stat,
|
|
92
|
+
isDirectory: stat?.isDirectory(),
|
|
93
|
+
};
|
|
94
|
+
this.emit('change', info);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2V2ZW50LXNvdXJjZXMvZGV2ZWxvcG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsRUFBdUMsTUFBTSxTQUFTLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsMkNBQTJDLENBQUMsQ0FBQztBQUVwRSxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE9BQU8sT0FBTyxzQkFBdUIsU0FBUSxlQUFlO0lBQ2pFLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUU3QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVk7UUFDaEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkQsOEVBQThFO1lBQzlFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseEventSource } from
|
|
2
|
-
import DefaultEventSource from
|
|
3
|
-
import DevelopmentEventSource from
|
|
4
|
-
export { BaseEventSource, DefaultEventSource, DevelopmentEventSource };
|
|
1
|
+
import { BaseEventSource } from './base.ts';
|
|
2
|
+
import DefaultEventSource from './default.ts';
|
|
3
|
+
import DevelopmentEventSource from './development.ts';
|
|
4
|
+
export { BaseEventSource, DefaultEventSource, DevelopmentEventSource };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseEventSource } from "./base.js";
|
|
2
2
|
import DefaultEventSource from "./default.js";
|
|
3
3
|
import DevelopmentEventSource from "./development.js";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
export { BaseEventSource, DefaultEventSource, DevelopmentEventSource };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2V2ZW50LXNvdXJjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLGtCQUFrQixNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLHNCQUFzQixNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyJ9
|
package/dist/lib/utils.d.ts
CHANGED
package/dist/lib/utils.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
// judge if parent is child's parent path
|
|
3
|
+
// isEqualOrParentPath('/foo', '/foo/bar') => true
|
|
4
|
+
// isEqualOrParentPath('/foo/bar', '/foo') => false
|
|
5
|
+
export function isEqualOrParentPath(parent, child) {
|
|
6
|
+
return !path.relative(parent, child).startsWith('..');
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
//#endregion
|
|
9
|
-
export { isEqualOrParentPath };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3Qix5Q0FBeUM7QUFDekMsa0RBQWtEO0FBQ2xELG1EQUFtRDtBQUNuRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQWE7SUFDL0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxDQUFDIn0=
|
package/dist/lib/watcher.d.ts
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { EggAppConfig } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
path: string;
|
|
13
|
-
isDirectory?: boolean;
|
|
1
|
+
import type { WatchEventType, Stats } from 'node:fs';
|
|
2
|
+
import { Base } from 'sdk-base';
|
|
3
|
+
import type { EggAppConfig } from 'egg';
|
|
4
|
+
export interface ChangeInfo extends Record<string, any> {
|
|
5
|
+
event: WatchEventType;
|
|
6
|
+
/**
|
|
7
|
+
* file stat if path exists
|
|
8
|
+
*/
|
|
9
|
+
stat?: Stats;
|
|
10
|
+
path: string;
|
|
11
|
+
isDirectory?: boolean;
|
|
14
12
|
}
|
|
15
|
-
type WatchListener = (info: ChangeInfo) => void;
|
|
16
|
-
declare class Watcher extends Base {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
export type WatchListener = (info: ChangeInfo) => void;
|
|
14
|
+
export declare class Watcher extends Base {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(config: EggAppConfig);
|
|
17
|
+
protected _init(): Promise<void>;
|
|
18
|
+
watch(path: string | string[], listener: WatchListener): void;
|
|
21
19
|
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { ChangeInfo, WatchListener, Watcher };
|
package/dist/lib/watcher.js
CHANGED
|
@@ -1,64 +1,115 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { Base } from 'sdk-base';
|
|
3
|
+
import camelcase from 'camelcase';
|
|
4
|
+
import { importModule } from '@eggjs/utils';
|
|
5
|
+
import { BaseEventSource } from "./event-sources/base.js";
|
|
2
6
|
import { isEqualOrParentPath } from "./utils.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
7
|
+
const debug = debuglog('egg/watcher/lib/watcher');
|
|
8
|
+
export class Watcher extends Base {
|
|
9
|
+
#config;
|
|
10
|
+
#eventSource;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super({
|
|
13
|
+
initMethod: '_init',
|
|
14
|
+
});
|
|
15
|
+
this.#config = config;
|
|
16
|
+
}
|
|
17
|
+
async _init() {
|
|
18
|
+
const watcherType = this.#config.watcher?.type;
|
|
19
|
+
debug('init with watcherType %o', watcherType);
|
|
20
|
+
if (!watcherType) {
|
|
21
|
+
// If watcher config is not defined, skip initialization
|
|
22
|
+
debug('watcherType is not defined, skip initialization');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let EventSource = this.#config.watcher?.eventSources[watcherType];
|
|
26
|
+
if (typeof EventSource === 'string') {
|
|
27
|
+
EventSource = await importModule(EventSource, {
|
|
28
|
+
importDefaultOnly: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// chokidar => watcherChokidar
|
|
32
|
+
// custom => watcherCustom
|
|
33
|
+
//
|
|
34
|
+
// e.g:
|
|
35
|
+
// config => { watcher: { type: 'custom' }, watcherCustom: { ... } }
|
|
36
|
+
const key = camelcase(['watcher', watcherType]);
|
|
37
|
+
const eventSourceOptions = this.#config[key] ?? {};
|
|
38
|
+
this.#eventSource = Reflect.construct(EventSource, [eventSourceOptions]);
|
|
39
|
+
this.#eventSource
|
|
40
|
+
.on('change', this.#onChange.bind(this))
|
|
41
|
+
.on('fuzzy-change', this.#onFuzzyChange.bind(this))
|
|
42
|
+
.on('info', (...args) => this.emit('info', ...args))
|
|
43
|
+
.on('warn', (...args) => this.emit('warn', ...args))
|
|
44
|
+
.on('error', (...args) => this.emit('error', ...args));
|
|
45
|
+
await this.#eventSource.ready();
|
|
46
|
+
}
|
|
47
|
+
watch(path, listener) {
|
|
48
|
+
debug('watch %o', path);
|
|
49
|
+
this.emit('info', '[@eggjs/watcher] Start watching: %j', path);
|
|
50
|
+
if (!path)
|
|
51
|
+
return;
|
|
52
|
+
// support array
|
|
53
|
+
if (Array.isArray(path)) {
|
|
54
|
+
path.forEach(p => this.watch(p, listener));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// one file only watch once
|
|
58
|
+
if (!this.listenerCount(path)) {
|
|
59
|
+
this.#eventSource.watch(path);
|
|
60
|
+
}
|
|
61
|
+
this.on(path, listener);
|
|
62
|
+
}
|
|
63
|
+
/*
|
|
64
|
+
// TODO wait unsubscribe implementation of cluster-client
|
|
65
|
+
unwatch(path, callback) {
|
|
66
|
+
if (!path) return;
|
|
67
|
+
|
|
68
|
+
// support array
|
|
69
|
+
if (Array.isArray(path)) {
|
|
70
|
+
path.forEach(p => this.unwatch(p, callback));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (callback) {
|
|
75
|
+
this.removeListener(path, callback);
|
|
76
|
+
// stop watching when no listener bound to the path
|
|
77
|
+
if (this.listenerCount(path) === 0) {
|
|
78
|
+
this._eventSource.unwatch(path);
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
this.removeAllListeners(path);
|
|
84
|
+
this._eventSource.unwatch(path);
|
|
85
|
+
}
|
|
86
|
+
*/
|
|
87
|
+
#onChange(info) {
|
|
88
|
+
debug('onChange %o', info);
|
|
89
|
+
this.emit('info', '[@eggjs/watcher] Received a change event from eventSource: %j', info);
|
|
90
|
+
const path = info.path;
|
|
91
|
+
for (const p of this.eventNames()) {
|
|
92
|
+
if (typeof p !== 'string')
|
|
93
|
+
continue;
|
|
94
|
+
// if it is a sub path, emit a `change` event
|
|
95
|
+
if (isEqualOrParentPath(p, path)) {
|
|
96
|
+
this.emit(p, info);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
#onFuzzyChange(info) {
|
|
101
|
+
debug('onFuzzyChange %o', info);
|
|
102
|
+
this.emit('info', '[@eggjs/watcher] Received a fuzzy-change event from eventSource: %j', info);
|
|
103
|
+
const path = info.path;
|
|
104
|
+
for (const p of this.eventNames()) {
|
|
105
|
+
if (typeof p !== 'string')
|
|
106
|
+
continue;
|
|
107
|
+
// if it is a parent path, emit a `change` event
|
|
108
|
+
// just the opposite to `_onChange`
|
|
109
|
+
if (isEqualOrParentPath(path, p)) {
|
|
110
|
+
this.emit(p, info);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvd2F0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3JDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQWNsRCxNQUFNLE9BQU8sT0FBUSxTQUFRLElBQUk7SUFDL0IsT0FBTyxDQUFlO0lBQ3RCLFlBQVksQ0FBa0I7SUFFOUIsWUFBWSxNQUFvQjtRQUM5QixLQUFLLENBQUM7WUFDSixVQUFVLEVBQUUsT0FBTztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRVMsS0FBSyxDQUFDLEtBQUs7UUFDbkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQy9DLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsd0RBQXdEO1lBQ3hELEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBc0MsQ0FBQztRQUN2RyxJQUFJLE9BQU8sV0FBVyxLQUFL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
|
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
//#region src/types.d.ts
|
|
1
|
+
import type { Watcher } from './lib/watcher.ts';
|
|
2
|
+
import type { WatcherConfig } from './config/config.default.ts';
|
|
5
3
|
declare module 'egg' {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
4
|
+
interface EggApplicationCore {
|
|
5
|
+
watcher: Watcher;
|
|
6
|
+
}
|
|
7
|
+
interface EggAppConfig {
|
|
8
|
+
watcher?: WatcherConfig;
|
|
9
|
+
}
|
|
10
|
+
}
|
package/dist/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/watcher",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.21",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -26,18 +26,18 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"camelcase": "^8.0.0",
|
|
28
28
|
"sdk-base": "^5.0.1",
|
|
29
|
-
"@eggjs/utils": "5.0.0-beta.
|
|
29
|
+
"@eggjs/utils": "5.0.0-beta.21"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"egg": "4.1.0-beta.
|
|
32
|
+
"egg": "4.1.0-beta.21"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"tsdown": "^0.15.4",
|
|
36
36
|
"typescript": "^5.9.3",
|
|
37
37
|
"vitest": "4.0.0-beta.16",
|
|
38
|
-
"@eggjs/
|
|
39
|
-
"@eggjs/
|
|
40
|
-
"@eggjs/
|
|
38
|
+
"@eggjs/tsconfig": "3.1.0-beta.21",
|
|
39
|
+
"@eggjs/mock": "7.0.0-beta.21",
|
|
40
|
+
"@eggjs/utils": "5.0.0-beta.21"
|
|
41
41
|
},
|
|
42
42
|
"type": "module",
|
|
43
43
|
"exports": {
|
|
@@ -67,6 +67,6 @@
|
|
|
67
67
|
"lint": "oxlint --type-aware",
|
|
68
68
|
"typecheck": "tsc --noEmit",
|
|
69
69
|
"test": "vitest run",
|
|
70
|
-
"build": "tsdown"
|
|
70
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc"
|
|
71
71
|
}
|
|
72
72
|
}
|