@eggjs/tegg-schedule-plugin 4.0.0-beta.1 → 4.0.0-beta.11
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/README.md +12 -0
- package/{agent.d.ts → dist/agent.d.ts} +1 -1
- package/dist/agent.js +30 -0
- package/{app.d.ts → dist/app.d.ts} +1 -1
- package/dist/app.js +24 -0
- package/dist/index.d.ts +1 -0
- package/{index.js → dist/index.js} +2 -2
- package/{lib → dist/lib}/EggScheduleAdapter.d.ts +3 -3
- package/dist/lib/EggScheduleAdapter.js +15 -0
- package/{lib → dist/lib}/EggScheduleMetadataConvertor.d.ts +7 -1
- package/dist/lib/EggScheduleMetadataConvertor.js +16 -0
- package/{lib → dist/lib}/SchedulePrototypeHook.d.ts +2 -2
- package/dist/lib/SchedulePrototypeHook.js +16 -0
- package/{lib → dist/lib}/ScheduleSubscriberRegister.d.ts +3 -3
- package/dist/lib/ScheduleSubscriberRegister.js +27 -0
- package/{lib → dist/lib}/ScheduleWorkerLoadUnitHook.d.ts +3 -3
- package/dist/lib/ScheduleWorkerLoadUnitHook.js +21 -0
- package/{lib → dist/lib}/ScheduleWorkerRegister.d.ts +2 -2
- package/dist/lib/ScheduleWorkerRegister.js +26 -0
- package/dist/types.js +2 -0
- package/package.json +49 -45
- package/agent.js +0 -29
- package/app.js +0 -24
- package/lib/EggScheduleAdapter.js +0 -15
- package/lib/EggScheduleMetadataConvertor.js +0 -12
- package/lib/SchedulePrototypeHook.js +0 -14
- package/lib/ScheduleSubscriberRegister.js +0 -21
- package/lib/ScheduleWorkerLoadUnitHook.js +0 -21
- package/lib/ScheduleWorkerRegister.js +0 -20
- /package/{index.d.ts → dist/types.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @eggjs/tegg-schedule-plugin
|
|
2
2
|
|
|
3
|
+
[![NPM version][npm-image]][npm-url]
|
|
4
|
+
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
|
5
|
+
[![npm download][download-image]][download-url]
|
|
6
|
+
[](https://nodejs.org/en/download/)
|
|
7
|
+
|
|
8
|
+
[npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-schedule-plugin.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-schedule-plugin
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-schedule-plugin/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-schedule-plugin
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-schedule-plugin.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-schedule-plugin
|
|
14
|
+
|
|
3
15
|
使用注解的方式来开发 egg 中的 schedule
|
|
4
16
|
|
|
5
17
|
## Install
|
package/dist/agent.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Agent } from 'egg';
|
|
2
|
+
import { LoaderFactory } from '@eggjs/tegg-loader';
|
|
3
|
+
import { EggLoadUnitType } from '@eggjs/tegg-metadata';
|
|
4
|
+
import { ScheduleInfoUtil, ScheduleMetaBuilder } from '@eggjs/tegg/schedule';
|
|
5
|
+
import { ScheduleSubscriberRegister } from "./lib/ScheduleSubscriberRegister.js";
|
|
6
|
+
export default class ScheduleAppBootHook {
|
|
7
|
+
agent;
|
|
8
|
+
scheduleSubscriberRegister;
|
|
9
|
+
constructor(agent) {
|
|
10
|
+
this.agent = agent;
|
|
11
|
+
this.scheduleSubscriberRegister = new ScheduleSubscriberRegister(this.agent);
|
|
12
|
+
}
|
|
13
|
+
async didLoad() {
|
|
14
|
+
// FIXME: tegg use lots singleton, in mm.app test case, agent/app in one process
|
|
15
|
+
// if use start tegg in agent, the app will use the same singleton
|
|
16
|
+
// so we should refactor tegg to not use singleton.
|
|
17
|
+
for (const moduleConfig of this.agent.moduleReferences) {
|
|
18
|
+
const loader = LoaderFactory.createLoader(moduleConfig.path, EggLoadUnitType.MODULE);
|
|
19
|
+
const clazzList = await loader.load();
|
|
20
|
+
for (const clazz of clazzList) {
|
|
21
|
+
if (ScheduleInfoUtil.isSchedule(clazz)) {
|
|
22
|
+
const builder = new ScheduleMetaBuilder(clazz);
|
|
23
|
+
const metadata = builder.build();
|
|
24
|
+
this.scheduleSubscriberRegister.register(clazz, metadata);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBdUIsTUFBTSxLQUFLLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRixNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFtQjtJQUNyQixLQUFLLENBQVE7SUFDYiwwQkFBMEIsQ0FBNkI7SUFFeEUsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxnRkFBZ0Y7UUFDaEYsa0VBQWtFO1FBQ2xFLG1EQUFtRDtRQUNuRCxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzlCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9DLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ScheduleWorkerRegister } from "./lib/ScheduleWorkerRegister.js";
|
|
2
|
+
import { ScheduleWorkerLoadUnitHook } from "./lib/ScheduleWorkerLoadUnitHook.js";
|
|
3
|
+
import { SchedulePrototypeHook } from "./lib/SchedulePrototypeHook.js";
|
|
4
|
+
export default class ScheduleAppBootHook {
|
|
5
|
+
app;
|
|
6
|
+
scheduleWorkerRegister;
|
|
7
|
+
scheduleWorkerLoadUnitHook;
|
|
8
|
+
schedulePrototypeHook;
|
|
9
|
+
constructor(app) {
|
|
10
|
+
this.app = app;
|
|
11
|
+
this.scheduleWorkerRegister = new ScheduleWorkerRegister(this.app);
|
|
12
|
+
this.scheduleWorkerLoadUnitHook = new ScheduleWorkerLoadUnitHook(this.scheduleWorkerRegister);
|
|
13
|
+
this.schedulePrototypeHook = new SchedulePrototypeHook();
|
|
14
|
+
}
|
|
15
|
+
configWillLoad() {
|
|
16
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.scheduleWorkerLoadUnitHook);
|
|
17
|
+
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.schedulePrototypeHook);
|
|
18
|
+
}
|
|
19
|
+
async beforeClose() {
|
|
20
|
+
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.scheduleWorkerLoadUnitHook);
|
|
21
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.schedulePrototypeHook);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RSxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFtQjtJQUNyQixHQUFHLENBQWM7SUFDakIsc0JBQXNCLENBQXlCO0lBQy9DLDBCQUEwQixDQUE2QjtJQUN2RCxxQkFBcUIsQ0FBd0I7SUFFOUQsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRiJ9
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './types.ts';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import "./types.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Context } from '
|
|
2
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
1
|
+
import type { Context } from 'egg';
|
|
2
|
+
import type { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
+
import type { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
4
4
|
export type EggScheduleFunction = (ctx: Context, data: any) => Promise<any>;
|
|
5
5
|
export declare function eggScheduleAdapterFactory(proto: EggPrototype, metaData: ScheduleMetadata<object>): EggScheduleFunction;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
2
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
3
|
+
export function eggScheduleAdapterFactory(proto, metaData) {
|
|
4
|
+
return async function (ctx, data) {
|
|
5
|
+
ctx[ROOT_PROTO] = proto;
|
|
6
|
+
await ctx.beginModuleScope(async () => {
|
|
7
|
+
if (metaData.disable)
|
|
8
|
+
return;
|
|
9
|
+
const eggObject = await EggContainerFactory.getOrCreateEggObject(proto, proto.name);
|
|
10
|
+
const subscriber = eggObject.obj;
|
|
11
|
+
await subscriber.subscribe(data);
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnU2NoZWR1bGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9FZ2dTY2hlZHVsZUFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTFELE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsS0FBbUIsRUFDbkIsUUFBa0M7SUFFbEMsT0FBTyxLQUFLLFdBQVcsR0FBWSxFQUFFLElBQVM7UUFDNUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQyxJQUFJLFFBQVEsQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFDN0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUF5QixDQUFDO1lBQ3ZELE1BQU0sVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import type { EggAppConfig } from 'egg';
|
|
1
2
|
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
3
|
+
type EggScheduleConfig = EggAppConfig['schedule'];
|
|
2
4
|
export declare class EggScheduleMetadataConvertor {
|
|
3
|
-
|
|
5
|
+
/**
|
|
6
|
+
* convert to egg schedule config
|
|
7
|
+
*/
|
|
8
|
+
static convertToEggSchedule(metadata: ScheduleMetadata<object>): EggScheduleConfig;
|
|
4
9
|
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
2
|
+
export class EggScheduleMetadataConvertor {
|
|
3
|
+
/**
|
|
4
|
+
* convert to egg schedule config
|
|
5
|
+
*/
|
|
6
|
+
static convertToEggSchedule(metadata) {
|
|
7
|
+
return {
|
|
8
|
+
...metadata.scheduleData,
|
|
9
|
+
type: metadata.type,
|
|
10
|
+
env: metadata.env,
|
|
11
|
+
disable: metadata.disable,
|
|
12
|
+
immediate: metadata.immediate,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnU2NoZWR1bGVNZXRhZGF0YUNvbnZlcnRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWdnU2NoZWR1bGVNZXRhZGF0YUNvbnZlcnRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlsRSxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWtDO1FBQzVELE9BQU87WUFDTCxHQUFHLFFBQVEsQ0FBQyxZQUFZO1lBQ3hCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNuQixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7WUFDakIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1lBQ3pCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztTQUNULENBQUM7SUFDekIsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg-lifecycle';
|
|
2
|
-
import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg-lifecycle';
|
|
2
|
+
import { type EggPrototype, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
3
|
export declare class SchedulePrototypeHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
|
|
4
4
|
postCreate(ctx: EggPrototypeLifecycleContext): Promise<void>;
|
|
5
5
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {} from '@eggjs/tegg-lifecycle';
|
|
2
|
+
import {} from '@eggjs/tegg-metadata';
|
|
3
|
+
import { ScheduleInfoUtil, ScheduleMetadataUtil, ScheduleMetaBuilder } from '@eggjs/tegg-schedule-decorator';
|
|
4
|
+
export class SchedulePrototypeHook {
|
|
5
|
+
async postCreate(ctx) {
|
|
6
|
+
if (!ScheduleInfoUtil.isSchedule(ctx.clazz)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const builder = new ScheduleMetaBuilder(ctx.clazz);
|
|
10
|
+
const metadata = builder.build();
|
|
11
|
+
if (metadata) {
|
|
12
|
+
ScheduleMetadataUtil.setScheduleMetadata(ctx.clazz, metadata);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVQcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9TY2hlZHVsZVByb3RvdHlwZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBd0QsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBaUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2Isb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EggProtoImplClass } from '@eggjs/tegg';
|
|
1
|
+
import type { Agent } from 'egg';
|
|
2
|
+
import { type EggProtoImplClass } from '@eggjs/tegg';
|
|
3
3
|
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
4
4
|
export declare class ScheduleSubscriberRegister {
|
|
5
5
|
private readonly agent;
|
|
6
|
-
constructor(agent:
|
|
6
|
+
constructor(agent: Agent);
|
|
7
7
|
register(clazz: EggProtoImplClass<object>, metadata: ScheduleMetadata<object>): void;
|
|
8
8
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { PrototypeUtil } from '@eggjs/tegg';
|
|
3
|
+
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
4
|
+
import { EggScheduleMetadataConvertor } from "./EggScheduleMetadataConvertor.js";
|
|
5
|
+
const debug = debuglog('tegg/plugin/schedule/ScheduleSubscriberRegister');
|
|
6
|
+
export class ScheduleSubscriberRegister {
|
|
7
|
+
agent;
|
|
8
|
+
constructor(agent) {
|
|
9
|
+
this.agent = agent;
|
|
10
|
+
}
|
|
11
|
+
register(clazz, metadata) {
|
|
12
|
+
// bind subscriber
|
|
13
|
+
const schedule = EggScheduleMetadataConvertor.convertToEggSchedule(metadata);
|
|
14
|
+
const path = PrototypeUtil.getFilePath(clazz);
|
|
15
|
+
if (!metadata.disable) {
|
|
16
|
+
this.agent.logger.info('[@eggjs/tegg-schedule-plugin]: register schedule %s', path);
|
|
17
|
+
}
|
|
18
|
+
// TODO: why disable is not used?
|
|
19
|
+
// @ts-expect-error agent registerSchedule only need key and schedule config
|
|
20
|
+
this.agent.schedule.registerSchedule({
|
|
21
|
+
schedule,
|
|
22
|
+
key: path,
|
|
23
|
+
});
|
|
24
|
+
debug('register schedule %s, config: %j', path, schedule);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVTdWJzY3JpYmVyUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NjaGVkdWxlU3Vic2NyaWJlclJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHckMsT0FBTyxFQUFFLGFBQWEsRUFBMEIsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFakYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFFMUUsTUFBTSxPQUFPLDBCQUEwQjtJQUNwQixLQUFLLENBQVE7SUFFOUIsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBZ0MsRUFBRSxRQUFrQztRQUMzRSxrQkFBa0I7UUFDbEIsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBRUQsaUNBQWlDO1FBRWpDLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuQyxRQUFRO1lBQ1IsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { ScheduleWorkerRegister } from './ScheduleWorkerRegister.
|
|
1
|
+
import type { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import type { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
+
import type { ScheduleWorkerRegister } from './ScheduleWorkerRegister.ts';
|
|
4
4
|
export declare class ScheduleWorkerLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
5
5
|
private readonly scheduleWorkerRegister;
|
|
6
6
|
constructor(scheduleWorkerRegister: ScheduleWorkerRegister);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IS_SCHEDULE, SCHEDULE_METADATA } from '@eggjs/tegg-schedule-decorator';
|
|
2
|
+
export class ScheduleWorkerLoadUnitHook {
|
|
3
|
+
scheduleWorkerRegister;
|
|
4
|
+
constructor(scheduleWorkerRegister) {
|
|
5
|
+
this.scheduleWorkerRegister = scheduleWorkerRegister;
|
|
6
|
+
}
|
|
7
|
+
async postCreate(_, obj) {
|
|
8
|
+
const iterator = obj.iterateEggPrototype();
|
|
9
|
+
for (const proto of iterator) {
|
|
10
|
+
if (!proto.getMetaData(IS_SCHEDULE)) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const metadata = proto.getMetaData(SCHEDULE_METADATA);
|
|
14
|
+
if (!metadata) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
this.scheduleWorkerRegister.register(proto, metadata);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJMb2FkVW5pdEhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NjaGVkdWxlV29ya2VyTG9hZFVuaXRIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sZ0NBQWdDLENBQUM7QUFLdkcsTUFBTSxPQUFPLDBCQUEwQjtJQUNwQixzQkFBc0IsQ0FBeUI7SUFFaEUsWUFBWSxzQkFBOEM7UUFDeEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQTJCLEVBQUUsR0FBYTtRQUN6RCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQXlDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsU0FBUztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
1
|
+
import type { Application } from 'egg';
|
|
2
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
3
|
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
4
4
|
export declare class ScheduleWorkerRegister {
|
|
5
5
|
private readonly app;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { PrototypeUtil } from '@eggjs/tegg';
|
|
3
|
+
import {} from '@eggjs/tegg-metadata';
|
|
4
|
+
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
5
|
+
import { eggScheduleAdapterFactory } from "./EggScheduleAdapter.js";
|
|
6
|
+
import { EggScheduleMetadataConvertor } from "./EggScheduleMetadataConvertor.js";
|
|
7
|
+
const debug = debuglog('tegg/plugin/schedule/ScheduleWorkerRegister');
|
|
8
|
+
export class ScheduleWorkerRegister {
|
|
9
|
+
app;
|
|
10
|
+
constructor(app) {
|
|
11
|
+
this.app = app;
|
|
12
|
+
}
|
|
13
|
+
register(proto, metadata) {
|
|
14
|
+
const task = eggScheduleAdapterFactory(proto, metadata);
|
|
15
|
+
const schedule = EggScheduleMetadataConvertor.convertToEggSchedule(metadata);
|
|
16
|
+
const path = proto.getMetaData(PrototypeUtil.FILE_PATH);
|
|
17
|
+
this.app.scheduleWorker.registerSchedule({
|
|
18
|
+
schedule,
|
|
19
|
+
scheduleQueryString: '',
|
|
20
|
+
task,
|
|
21
|
+
key: path,
|
|
22
|
+
});
|
|
23
|
+
debug('register schedule %s, config: %j', path, schedule);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvU2NoZWR1bGVXb3JrZXJSZWdpc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpGLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsR0FBRyxDQUFjO0lBRWxDLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFtQixFQUFFLFFBQWtDO1FBQzlELE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFTLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2QyxRQUFRO1lBQ1IsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRiJ9
|
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"schedule"
|
|
8
8
|
]
|
|
9
9
|
},
|
|
10
|
-
"version": "4.0.0-beta.
|
|
10
|
+
"version": "4.0.0-beta.11",
|
|
11
11
|
"description": "schedule decorator for egg",
|
|
12
12
|
"keywords": [
|
|
13
13
|
"egg",
|
|
@@ -18,34 +18,23 @@
|
|
|
18
18
|
"schedule"
|
|
19
19
|
],
|
|
20
20
|
"files": [
|
|
21
|
-
"
|
|
22
|
-
"app.d.ts",
|
|
23
|
-
"agent.js",
|
|
24
|
-
"agent.d.ts",
|
|
25
|
-
"lib/**/*.js",
|
|
26
|
-
"lib/**/*.d.ts",
|
|
27
|
-
"app/**/*.js",
|
|
28
|
-
"app/**/*.d.ts",
|
|
29
|
-
"index.js",
|
|
30
|
-
"index.d.ts"
|
|
21
|
+
"dist"
|
|
31
22
|
],
|
|
32
23
|
"type": "module",
|
|
33
24
|
"exports": {
|
|
34
|
-
".":
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
".": "./dist/index.js",
|
|
26
|
+
"./agent": "./dist/agent.js",
|
|
27
|
+
"./app": "./dist/app.js",
|
|
28
|
+
"./lib/EggScheduleAdapter": "./dist/lib/EggScheduleAdapter.js",
|
|
29
|
+
"./lib/EggScheduleMetadataConvertor": "./dist/lib/EggScheduleMetadataConvertor.js",
|
|
30
|
+
"./lib/SchedulePrototypeHook": "./dist/lib/SchedulePrototypeHook.js",
|
|
31
|
+
"./lib/ScheduleSubscriberRegister": "./dist/lib/ScheduleSubscriberRegister.js",
|
|
32
|
+
"./lib/ScheduleWorkerLoadUnitHook": "./dist/lib/ScheduleWorkerLoadUnitHook.js",
|
|
33
|
+
"./lib/ScheduleWorkerRegister": "./dist/lib/ScheduleWorkerRegister.js",
|
|
34
|
+
"./types": "./dist/types.js",
|
|
38
35
|
"./package.json": "./package.json"
|
|
39
36
|
},
|
|
40
|
-
"
|
|
41
|
-
"test": "egg-bin test",
|
|
42
|
-
"cov": "egg-bin cov",
|
|
43
|
-
"clean": "tsc -b --clean",
|
|
44
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
45
|
-
"tsc:pub": "npm run tsc",
|
|
46
|
-
"prepublishOnly": "npm run tsc"
|
|
47
|
-
},
|
|
48
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
37
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/plugin/schedule",
|
|
49
38
|
"bugs": {
|
|
50
39
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
51
40
|
},
|
|
@@ -55,32 +44,47 @@
|
|
|
55
44
|
"directory": "plugin/schedule"
|
|
56
45
|
},
|
|
57
46
|
"engines": {
|
|
58
|
-
"node": ">=
|
|
47
|
+
"node": ">=22.18.0"
|
|
59
48
|
},
|
|
60
49
|
"dependencies": {
|
|
61
|
-
"@eggjs/
|
|
62
|
-
"@eggjs/
|
|
63
|
-
"@eggjs/tegg": "
|
|
64
|
-
"@eggjs/tegg-
|
|
65
|
-
"@eggjs/tegg-
|
|
66
|
-
"@eggjs/tegg-
|
|
67
|
-
"@eggjs/tegg-metadata": "
|
|
68
|
-
|
|
69
|
-
|
|
50
|
+
"@eggjs/egg-module-common": "4.0.0-beta.11",
|
|
51
|
+
"@eggjs/tegg": "4.0.0-beta.11",
|
|
52
|
+
"@eggjs/tegg-lifecycle": "4.0.0-beta.11",
|
|
53
|
+
"@eggjs/tegg-loader": "4.0.0-beta.11",
|
|
54
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.11",
|
|
55
|
+
"@eggjs/tegg-schedule-decorator": "4.0.0-beta.11",
|
|
56
|
+
"@eggjs/tegg-metadata": "4.0.0-beta.11"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"egg": "beta",
|
|
60
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.11"
|
|
70
61
|
},
|
|
71
62
|
"devDependencies": {
|
|
72
|
-
"@eggjs/
|
|
73
|
-
"@eggjs/
|
|
74
|
-
"@
|
|
75
|
-
"@
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
63
|
+
"@eggjs/bin": "beta",
|
|
64
|
+
"@eggjs/mock": "beta",
|
|
65
|
+
"@types/mocha": "^10.0.10",
|
|
66
|
+
"@types/node": "^22.10.5",
|
|
67
|
+
"mocha": "^11.0.1",
|
|
68
|
+
"egg": "beta",
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"tsdown": "^0.15.6",
|
|
71
|
+
"unplugin-unused": "^0.5.3",
|
|
72
|
+
"@eggjs/module-test-util": "4.0.0-beta.4",
|
|
73
|
+
"@eggjs/tegg-common-util": "4.0.0-beta.11",
|
|
74
|
+
"@eggjs/tegg-config": "4.0.0-beta.11",
|
|
75
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.11"
|
|
81
76
|
},
|
|
82
77
|
"publishConfig": {
|
|
83
78
|
"access": "public"
|
|
84
79
|
},
|
|
85
|
-
"
|
|
86
|
-
|
|
80
|
+
"main": "./dist/index.js",
|
|
81
|
+
"module": "./dist/index.js",
|
|
82
|
+
"types": "./dist/index.d.ts",
|
|
83
|
+
"scripts": {
|
|
84
|
+
"test:mocha": "NODE_DEBUG=egg/schedule*,tegg/plugin/schedule* egg-bin test",
|
|
85
|
+
"cov:mocha": "egg-bin cov",
|
|
86
|
+
"clean": "rimraf dist",
|
|
87
|
+
"build": "tsdown && rimraf dist *.tsbuildinfo && tsc -p tsconfig.build.json",
|
|
88
|
+
"typecheck": "tsc --noEmit"
|
|
89
|
+
}
|
|
90
|
+
}
|
package/agent.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { LoaderFactory } from '@eggjs/tegg-loader';
|
|
2
|
-
import { EggLoadUnitType } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { ScheduleInfoUtil, ScheduleMetaBuilder } from '@eggjs/tegg/schedule';
|
|
4
|
-
import { ScheduleSubscriberRegister } from './lib/ScheduleSubscriberRegister.js';
|
|
5
|
-
export default class ScheduleAppBootHook {
|
|
6
|
-
agent;
|
|
7
|
-
scheduleSubscriberRegister;
|
|
8
|
-
constructor(agent) {
|
|
9
|
-
this.agent = agent;
|
|
10
|
-
this.scheduleSubscriberRegister = new ScheduleSubscriberRegister(this.agent);
|
|
11
|
-
}
|
|
12
|
-
async didLoad() {
|
|
13
|
-
// FIXME: tegg use lots singleton, in mm.app test case, agent/app in one process
|
|
14
|
-
// if use start tegg in agent, the app will use the same singleton
|
|
15
|
-
// so we should refactor tegg to not use singleton.
|
|
16
|
-
for (const moduleConfig of this.agent.moduleReferences) {
|
|
17
|
-
const loader = LoaderFactory.createLoader(moduleConfig.path, EggLoadUnitType.MODULE);
|
|
18
|
-
const clazzList = await loader.load();
|
|
19
|
-
for (const clazz of clazzList) {
|
|
20
|
-
if (ScheduleInfoUtil.isSchedule(clazz)) {
|
|
21
|
-
const builder = new ScheduleMetaBuilder(clazz);
|
|
22
|
-
const metadata = builder.build();
|
|
23
|
-
this.scheduleSubscriberRegister.register(clazz, metadata);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW1CO0lBQ3JCLEtBQUssQ0FBUTtJQUNiLDBCQUEwQixDQUE2QjtJQUV4RSxZQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLGdGQUFnRjtRQUNoRixrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckYsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEMsS0FBSyxNQUFNLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDL0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
package/app.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ScheduleWorkerRegister } from './lib/ScheduleWorkerRegister.js';
|
|
2
|
-
import { ScheduleWorkerLoadUnitHook } from './lib/ScheduleWorkerLoadUnitHook.js';
|
|
3
|
-
import { SchedulePrototypeHook } from './lib/SchedulePrototypeHook.js';
|
|
4
|
-
export default class ScheduleAppBootHook {
|
|
5
|
-
app;
|
|
6
|
-
scheduleWorkerRegister;
|
|
7
|
-
scheduleWorkerLoadUnitHook;
|
|
8
|
-
schedulePrototypeHook;
|
|
9
|
-
constructor(app) {
|
|
10
|
-
this.app = app;
|
|
11
|
-
this.scheduleWorkerRegister = new ScheduleWorkerRegister(this.app);
|
|
12
|
-
this.scheduleWorkerLoadUnitHook = new ScheduleWorkerLoadUnitHook(this.scheduleWorkerRegister);
|
|
13
|
-
this.schedulePrototypeHook = new SchedulePrototypeHook();
|
|
14
|
-
}
|
|
15
|
-
configWillLoad() {
|
|
16
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.scheduleWorkerLoadUnitHook);
|
|
17
|
-
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.schedulePrototypeHook);
|
|
18
|
-
}
|
|
19
|
-
async beforeClose() {
|
|
20
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.scheduleWorkerLoadUnitHook);
|
|
21
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.schedulePrototypeHook);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW1CO0lBQ3JCLEdBQUcsQ0FBYztJQUNqQixzQkFBc0IsQ0FBeUI7SUFDL0MsMEJBQTBCLENBQTZCO0lBQ3ZELHFCQUFxQixDQUF3QjtJQUU5RCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIn0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
2
|
-
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
3
|
-
export function eggScheduleAdapterFactory(proto, metaData) {
|
|
4
|
-
return async function (ctx, data) {
|
|
5
|
-
ctx[ROOT_PROTO] = proto;
|
|
6
|
-
await ctx.beginModuleScope(async () => {
|
|
7
|
-
if (metaData.disable)
|
|
8
|
-
return;
|
|
9
|
-
const eggObject = await EggContainerFactory.getOrCreateEggObject(proto, proto.name);
|
|
10
|
-
const subscriber = eggObject.obj;
|
|
11
|
-
await subscriber.subscribe(data);
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnU2NoZWR1bGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRWdnU2NoZWR1bGVBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkxRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBbUIsRUFBRSxRQUFrQztJQUMvRixPQUFPLEtBQUssV0FBVSxHQUFZLEVBQUUsSUFBUztRQUMxQyxHQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BDLElBQUksUUFBUSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUM3QixNQUFNLFNBQVMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEYsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQXlCLENBQUM7WUFDdkQsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class EggScheduleMetadataConvertor {
|
|
2
|
-
static convertToEggSchedule(metadata) {
|
|
3
|
-
return {
|
|
4
|
-
...metadata.scheduleData,
|
|
5
|
-
type: metadata.type,
|
|
6
|
-
env: metadata.env,
|
|
7
|
-
disable: metadata.disable,
|
|
8
|
-
immediate: metadata.immediate,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnU2NoZWR1bGVNZXRhZGF0YUNvbnZlcnRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVnZ1NjaGVkdWxlTWV0YWRhdGFDb252ZXJ0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxNQUFNLENBQUMsb0JBQW9CLENBQUMsUUFBa0M7UUFDNUQsT0FBTztZQUNMLEdBQUcsUUFBUSxDQUFDLFlBQVk7WUFDeEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztZQUNqQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1NBQzlCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ScheduleInfoUtil, ScheduleMetadataUtil, ScheduleMetaBuilder } from '@eggjs/tegg-schedule-decorator';
|
|
2
|
-
export class SchedulePrototypeHook {
|
|
3
|
-
async postCreate(ctx) {
|
|
4
|
-
if (!ScheduleInfoUtil.isSchedule(ctx.clazz)) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
const builder = new ScheduleMetaBuilder(ctx.clazz);
|
|
8
|
-
const metadata = builder.build();
|
|
9
|
-
if (metadata) {
|
|
10
|
-
ScheduleMetadataUtil.setScheduleMetadata(ctx.clazz, metadata);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVQcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiU2NoZWR1bGVQcm90b3R5cGVIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdHLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFpQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { PrototypeUtil } from '@eggjs/tegg';
|
|
2
|
-
import { EggScheduleMetadataConvertor } from './EggScheduleMetadataConvertor.js';
|
|
3
|
-
export class ScheduleSubscriberRegister {
|
|
4
|
-
agent;
|
|
5
|
-
constructor(agent) {
|
|
6
|
-
this.agent = agent;
|
|
7
|
-
}
|
|
8
|
-
register(clazz, metadata) {
|
|
9
|
-
// bind subscriber
|
|
10
|
-
const schedule = EggScheduleMetadataConvertor.convertToEggSchedule(metadata);
|
|
11
|
-
const path = PrototypeUtil.getFilePath(clazz);
|
|
12
|
-
if (!metadata.disable) {
|
|
13
|
-
this.agent.logger.info('[@eggjs/tegg-schedule-plugin]: register schedule %s', path);
|
|
14
|
-
}
|
|
15
|
-
this.agent.schedule.registerSchedule({
|
|
16
|
-
schedule,
|
|
17
|
-
key: path,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVTdWJzY3JpYmVyUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTY2hlZHVsZVN1YnNjcmliZXJSZWdpc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFxQixNQUFNLGFBQWEsQ0FBQztBQUUvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLEtBQUssQ0FBYztJQUVwQyxZQUFZLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBZ0MsRUFBRSxRQUFrQztRQUMzRSxrQkFBa0I7UUFDbEIsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0EsSUFBSSxDQUFDLEtBQWEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsUUFBUTtZQUNSLEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { IS_SCHEDULE, SCHEDULE_METADATA } from '@eggjs/tegg-schedule-decorator';
|
|
2
|
-
export class ScheduleWorkerLoadUnitHook {
|
|
3
|
-
scheduleWorkerRegister;
|
|
4
|
-
constructor(scheduleWorkerRegister) {
|
|
5
|
-
this.scheduleWorkerRegister = scheduleWorkerRegister;
|
|
6
|
-
}
|
|
7
|
-
async postCreate(_, obj) {
|
|
8
|
-
const iterator = obj.iterateEggPrototype();
|
|
9
|
-
for (const proto of iterator) {
|
|
10
|
-
if (!proto.getMetaData(IS_SCHEDULE)) {
|
|
11
|
-
continue;
|
|
12
|
-
}
|
|
13
|
-
const metadata = proto.getMetaData(SCHEDULE_METADATA);
|
|
14
|
-
if (!metadata) {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
this.scheduleWorkerRegister.register(proto, metadata);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJMb2FkVW5pdEhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTY2hlZHVsZVdvcmtlckxvYWRVbml0SG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBSWxHLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsc0JBQXNCLENBQXlCO0lBRWhFLFlBQVksc0JBQThDO1FBQ3hELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUEyQixFQUFFLEdBQWE7UUFDekQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUF5QyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { PrototypeUtil } from '@eggjs/tegg';
|
|
2
|
-
import { eggScheduleAdapterFactory } from './EggScheduleAdapter.js';
|
|
3
|
-
import { EggScheduleMetadataConvertor } from './EggScheduleMetadataConvertor.js';
|
|
4
|
-
export class ScheduleWorkerRegister {
|
|
5
|
-
app;
|
|
6
|
-
constructor(app) {
|
|
7
|
-
this.app = app;
|
|
8
|
-
}
|
|
9
|
-
register(proto, metadata) {
|
|
10
|
-
const task = eggScheduleAdapterFactory(proto, metadata);
|
|
11
|
-
const schedule = EggScheduleMetadataConvertor.convertToEggSchedule(metadata);
|
|
12
|
-
const path = proto.getMetaData(PrototypeUtil.FILE_PATH);
|
|
13
|
-
this.app.scheduleWorker.registerSchedule({
|
|
14
|
-
schedule,
|
|
15
|
-
task,
|
|
16
|
-
key: path,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNjaGVkdWxlV29ya2VyUmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixNQUFNLE9BQU8sc0JBQXNCO0lBQ2hCLEdBQUcsQ0FBYztJQUVsQyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBbUIsRUFBRSxRQUFrQztRQUM5RCxNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQVcsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7WUFDaEQsUUFBUTtZQUNSLElBQUk7WUFDSixHQUFHLEVBQUUsSUFBSTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
|
|
File without changes
|