@eggjs/tegg-standalone 4.0.0-beta.7 → 4.0.0-beta.9

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/Runner.js CHANGED
@@ -1,181 +1,236 @@
1
+ import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
2
+ import { EggPrototypeLifecycleUtil, GlobalGraph, LoadUnitFactory, LoadUnitLifecycleUtil, LoadUnitMultiInstanceProtoHook, } from '@eggjs/tegg-metadata';
3
+ import { ContextHandler, EggContainerFactory, EggObjectLifecycleUtil, LoadUnitInstanceFactory, ModuleLoadUnitInstance, } from '@eggjs/tegg-runtime';
4
+ import { PrototypeUtil, ModuleConfigs, ConfigSourceQualifierAttribute, } from '@eggjs/tegg';
5
+ import { StandaloneUtil } from '@eggjs/tegg/standalone';
6
+ import { CrosscutAdviceFactory } from '@eggjs/tegg/aop';
7
+ import { crossCutGraphHook, EggObjectAopHook, EggPrototypeCrossCutHook, LoadUnitAopHook, pointCutGraphHook, } from '@eggjs/tegg-aop-runtime';
8
+ import { DalTableEggPrototypeHook, DalModuleLoadUnitHook, MysqlDataSourceManager, SqlMapManager, TableModelManager, TransactionPrototypeHook, } from '@eggjs/tegg-dal-plugin';
1
9
  import { EggModuleLoader } from "./EggModuleLoader.js";
2
10
  import { StandaloneLoadUnit, StandaloneLoadUnitType } from "./StandaloneLoadUnit.js";
3
11
  import { StandaloneContext } from "./StandaloneContext.js";
4
12
  import { StandaloneContextHandler } from "./StandaloneContextHandler.js";
5
13
  import { ConfigSourceLoadUnitHook } from "./ConfigSourceLoadUnitHook.js";
6
- import { EggPrototypeLifecycleUtil, GlobalGraph, LoadUnitFactory, LoadUnitLifecycleUtil, LoadUnitMultiInstanceProtoHook } from "@eggjs/tegg-metadata";
7
- import { ModuleConfigUtil } from "@eggjs/tegg-common-util";
8
- import { ContextHandler, EggContainerFactory, EggObjectLifecycleUtil, LoadUnitInstanceFactory, ModuleLoadUnitInstance } from "@eggjs/tegg-runtime";
9
- import { ConfigSourceQualifierAttribute, ModuleConfigs, PrototypeUtil } from "@eggjs/tegg";
10
- import { StandaloneUtil } from "@eggjs/tegg/standalone";
11
- import { CrosscutAdviceFactory } from "@eggjs/tegg/aop";
12
- import { EggObjectAopHook, EggPrototypeCrossCutHook, LoadUnitAopHook, crossCutGraphHook, pointCutGraphHook } from "@eggjs/tegg-aop-runtime";
13
- import { DalModuleLoadUnitHook, DalTableEggPrototypeHook, MysqlDataSourceManager, SqlMapManager, TableModelManager, TransactionPrototypeHook } from "@eggjs/tegg-dal-plugin";
14
-
15
- //#region src/Runner.ts
16
- var Runner = class Runner {
17
- cwd;
18
- moduleReferences;
19
- moduleConfigs;
20
- env;
21
- name;
22
- options;
23
- loadUnitLoader;
24
- runnerProto;
25
- configSourceEggPrototypeHook;
26
- loadUnitMultiInstanceProtoHook;
27
- dalTableEggPrototypeHook;
28
- dalModuleLoadUnitHook;
29
- transactionPrototypeHook;
30
- crosscutAdviceFactory;
31
- loadUnitAopHook;
32
- eggPrototypeCrossCutHook;
33
- eggObjectAopHook;
34
- loadUnits = [];
35
- loadUnitInstances = [];
36
- innerObjects;
37
- constructor(cwd, options) {
38
- this.cwd = cwd;
39
- this.env = options?.env;
40
- this.name = options?.name;
41
- this.options = options;
42
- this.moduleReferences = Runner.getModuleReferences(this.cwd, options?.dependencies);
43
- this.moduleConfigs = {};
44
- this.innerObjects = {
45
- moduleConfigs: [{ obj: new ModuleConfigs(this.moduleConfigs) }],
46
- moduleConfig: []
47
- };
48
- const runtimeConfig = {
49
- baseDir: this.cwd,
50
- name: this.name,
51
- env: this.env
52
- };
53
- this.innerObjects.runtimeConfig = [{ obj: runtimeConfig }];
54
- if (!ModuleConfigUtil.configNames) ModuleConfigUtil.configNames = ["module.default", `module.${this.env}`];
55
- for (const reference of this.moduleReferences) {
56
- const absoluteRef = {
57
- path: ModuleConfigUtil.resolveModuleDir(reference.path, this.cwd),
58
- name: reference.name
59
- };
60
- const moduleName = ModuleConfigUtil.readModuleNameSync(absoluteRef.path);
61
- this.moduleConfigs[moduleName] = {
62
- name: moduleName,
63
- reference: absoluteRef,
64
- config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path)
65
- };
66
- }
67
- for (const moduleConfig of Object.values(this.moduleConfigs)) this.innerObjects.moduleConfig.push({
68
- obj: moduleConfig.config,
69
- qualifiers: [{
70
- attribute: ConfigSourceQualifierAttribute,
71
- value: moduleConfig.name
72
- }]
73
- });
74
- if (options?.innerObjects) for (const [name, obj] of Object.entries(options.innerObjects)) this.innerObjects[name] = [{ obj }];
75
- else if (options?.innerObjectHandlers) Object.assign(this.innerObjects, options.innerObjectHandlers);
76
- }
77
- async load() {
78
- StandaloneContextHandler.register();
79
- LoadUnitFactory.registerLoadUnitCreator(StandaloneLoadUnitType, () => {
80
- return new StandaloneLoadUnit(this.innerObjects);
81
- });
82
- LoadUnitInstanceFactory.registerLoadUnitInstanceClass(StandaloneLoadUnitType, ModuleLoadUnitInstance.createModuleLoadUnitInstance);
83
- const standaloneLoadUnit = await LoadUnitFactory.createLoadUnit("MockStandaloneLoadUnitPath", StandaloneLoadUnitType, { async load() {
84
- return [];
85
- } });
86
- const loadUnits = await this.loadUnitLoader.load();
87
- return [standaloneLoadUnit, ...loadUnits];
88
- }
89
- static getModuleReferences(cwd, dependencies) {
90
- return (dependencies || []).concat(cwd).reduce((list, baseDir) => {
91
- const module = typeof baseDir === "string" ? { baseDir } : baseDir;
92
- return list.concat(...ModuleConfigUtil.readModuleReference(module.baseDir, module));
93
- }, []);
94
- }
95
- static async preLoad(cwd, dependencies) {
96
- const moduleReferences = Runner.getModuleReferences(cwd, dependencies);
97
- await EggModuleLoader.preLoad(moduleReferences, {
98
- baseDir: cwd,
99
- logger: console,
100
- dump: false
101
- });
102
- }
103
- async initLoaderInstance() {
104
- this.loadUnitLoader = new EggModuleLoader(this.moduleReferences, {
105
- logger: (this.innerObjects.logger && this.innerObjects.logger[0])?.obj || console,
106
- baseDir: this.cwd,
107
- dump: this.options?.dump
108
- });
109
- await this.loadUnitLoader.init();
110
- GlobalGraph.instance.registerBuildHook(crossCutGraphHook);
111
- GlobalGraph.instance.registerBuildHook(pointCutGraphHook);
112
- const configSourceEggPrototypeHook = new ConfigSourceLoadUnitHook();
113
- LoadUnitLifecycleUtil.registerLifecycle(configSourceEggPrototypeHook);
114
- this.crosscutAdviceFactory = new CrosscutAdviceFactory();
115
- this.loadUnitAopHook = new LoadUnitAopHook(this.crosscutAdviceFactory);
116
- this.eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook(this.crosscutAdviceFactory);
117
- this.eggObjectAopHook = new EggObjectAopHook();
118
- EggPrototypeLifecycleUtil.registerLifecycle(this.eggPrototypeCrossCutHook);
119
- LoadUnitLifecycleUtil.registerLifecycle(this.loadUnitAopHook);
120
- EggObjectLifecycleUtil.registerLifecycle(this.eggObjectAopHook);
121
- this.loadUnitMultiInstanceProtoHook = new LoadUnitMultiInstanceProtoHook();
122
- LoadUnitLifecycleUtil.registerLifecycle(this.loadUnitMultiInstanceProtoHook);
123
- const logger = (this.innerObjects.logger && this.innerObjects.logger[0])?.obj || console;
124
- this.dalModuleLoadUnitHook = new DalModuleLoadUnitHook(this.env ?? "", this.moduleConfigs, logger);
125
- this.dalTableEggPrototypeHook = new DalTableEggPrototypeHook(logger);
126
- this.transactionPrototypeHook = new TransactionPrototypeHook(this.moduleConfigs, logger);
127
- EggPrototypeLifecycleUtil.registerLifecycle(this.dalTableEggPrototypeHook);
128
- EggPrototypeLifecycleUtil.registerLifecycle(this.transactionPrototypeHook);
129
- LoadUnitLifecycleUtil.registerLifecycle(this.dalModuleLoadUnitHook);
130
- }
131
- async init() {
132
- await this.initLoaderInstance();
133
- this.loadUnits = await this.load();
134
- const instances = [];
135
- for (const loadUnit of this.loadUnits) {
136
- const instance = await LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
137
- instances.push(instance);
138
- }
139
- this.loadUnitInstances = instances;
140
- const runnerClass = StandaloneUtil.getMainRunner();
141
- if (!runnerClass) throw new Error("not found runner class. Do you add @Runner decorator?");
142
- const proto = PrototypeUtil.getClazzProto(runnerClass);
143
- if (!proto) throw new Error(`can not get proto for clazz ${runnerClass.name}`);
144
- this.runnerProto = proto;
145
- }
146
- async run(aCtx) {
147
- const lifecycle = {};
148
- const ctx = aCtx || new StandaloneContext();
149
- return await ContextHandler.run(ctx, async () => {
150
- if (ctx.init) await ctx.init(lifecycle);
151
- const runner = (await EggContainerFactory.getOrCreateEggObject(this.runnerProto)).obj;
152
- try {
153
- return await runner.main();
154
- } finally {
155
- if (ctx.destroy) ctx.destroy(lifecycle).catch((e) => {
156
- e.message = `[tegg/standalone] destroy tegg context failed: ${e.message}`;
157
- console.warn(e);
158
- });
159
- }
160
- });
161
- }
162
- async destroy() {
163
- if (this.loadUnitInstances) for (const instance of this.loadUnitInstances) await LoadUnitInstanceFactory.destroyLoadUnitInstance(instance);
164
- if (this.loadUnits) for (const loadUnit of this.loadUnits) await LoadUnitFactory.destroyLoadUnit(loadUnit);
165
- if (this.configSourceEggPrototypeHook) LoadUnitLifecycleUtil.deleteLifecycle(this.configSourceEggPrototypeHook);
166
- if (this.eggPrototypeCrossCutHook) EggPrototypeLifecycleUtil.deleteLifecycle(this.eggPrototypeCrossCutHook);
167
- if (this.loadUnitAopHook) LoadUnitLifecycleUtil.deleteLifecycle(this.loadUnitAopHook);
168
- if (this.eggObjectAopHook) EggObjectLifecycleUtil.deleteLifecycle(this.eggObjectAopHook);
169
- if (this.loadUnitMultiInstanceProtoHook) LoadUnitLifecycleUtil.deleteLifecycle(this.loadUnitMultiInstanceProtoHook);
170
- if (this.dalTableEggPrototypeHook) EggPrototypeLifecycleUtil.deleteLifecycle(this.dalTableEggPrototypeHook);
171
- if (this.dalModuleLoadUnitHook) LoadUnitLifecycleUtil.deleteLifecycle(this.dalModuleLoadUnitHook);
172
- if (this.transactionPrototypeHook) EggPrototypeLifecycleUtil.deleteLifecycle(this.transactionPrototypeHook);
173
- MysqlDataSourceManager.instance.clear();
174
- SqlMapManager.instance.clear();
175
- TableModelManager.instance.clear();
176
- ModuleConfigUtil.setConfigNames(void 0);
177
- }
178
- };
179
-
180
- //#endregion
181
- export { Runner };
14
+ export class Runner {
15
+ cwd;
16
+ moduleReferences;
17
+ moduleConfigs;
18
+ env;
19
+ name;
20
+ options;
21
+ loadUnitLoader;
22
+ runnerProto;
23
+ configSourceEggPrototypeHook;
24
+ loadUnitMultiInstanceProtoHook;
25
+ dalTableEggPrototypeHook;
26
+ dalModuleLoadUnitHook;
27
+ transactionPrototypeHook;
28
+ crosscutAdviceFactory;
29
+ loadUnitAopHook;
30
+ eggPrototypeCrossCutHook;
31
+ eggObjectAopHook;
32
+ loadUnits = [];
33
+ loadUnitInstances = [];
34
+ innerObjects;
35
+ constructor(cwd, options) {
36
+ this.cwd = cwd;
37
+ this.env = options?.env;
38
+ this.name = options?.name;
39
+ this.options = options;
40
+ this.moduleReferences = Runner.getModuleReferences(this.cwd, options?.dependencies);
41
+ this.moduleConfigs = {};
42
+ this.innerObjects = {
43
+ moduleConfigs: [{
44
+ obj: new ModuleConfigs(this.moduleConfigs),
45
+ }],
46
+ moduleConfig: [],
47
+ };
48
+ const runtimeConfig = {
49
+ baseDir: this.cwd,
50
+ name: this.name,
51
+ env: this.env,
52
+ };
53
+ // Inject runtimeConfig
54
+ this.innerObjects.runtimeConfig = [{
55
+ obj: runtimeConfig,
56
+ }];
57
+ // load module.yml and module.env.yml by default
58
+ if (!ModuleConfigUtil.configNames) {
59
+ ModuleConfigUtil.configNames = ['module.default', `module.${this.env}`];
60
+ }
61
+ for (const reference of this.moduleReferences) {
62
+ const absoluteRef = {
63
+ path: ModuleConfigUtil.resolveModuleDir(reference.path, this.cwd),
64
+ name: reference.name,
65
+ };
66
+ const moduleName = ModuleConfigUtil.readModuleNameSync(absoluteRef.path);
67
+ this.moduleConfigs[moduleName] = {
68
+ name: moduleName,
69
+ reference: absoluteRef,
70
+ config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path),
71
+ };
72
+ }
73
+ for (const moduleConfig of Object.values(this.moduleConfigs)) {
74
+ this.innerObjects.moduleConfig.push({
75
+ obj: moduleConfig.config,
76
+ qualifiers: [{
77
+ attribute: ConfigSourceQualifierAttribute,
78
+ value: moduleConfig.name,
79
+ }],
80
+ });
81
+ }
82
+ if (options?.innerObjects) {
83
+ for (const [name, obj] of Object.entries(options.innerObjects)) {
84
+ this.innerObjects[name] = [{
85
+ obj,
86
+ }];
87
+ }
88
+ }
89
+ else if (options?.innerObjectHandlers) {
90
+ Object.assign(this.innerObjects, options.innerObjectHandlers);
91
+ }
92
+ }
93
+ async load() {
94
+ StandaloneContextHandler.register();
95
+ LoadUnitFactory.registerLoadUnitCreator(StandaloneLoadUnitType, () => {
96
+ return new StandaloneLoadUnit(this.innerObjects);
97
+ });
98
+ LoadUnitInstanceFactory.registerLoadUnitInstanceClass(StandaloneLoadUnitType, ModuleLoadUnitInstance.createModuleLoadUnitInstance);
99
+ const standaloneLoadUnit = await LoadUnitFactory.createLoadUnit('MockStandaloneLoadUnitPath', StandaloneLoadUnitType, {
100
+ async load() {
101
+ return [];
102
+ },
103
+ });
104
+ const loadUnits = await this.loadUnitLoader.load();
105
+ return [standaloneLoadUnit, ...loadUnits];
106
+ }
107
+ static getModuleReferences(cwd, dependencies) {
108
+ const moduleDirs = (dependencies || []).concat(cwd);
109
+ return moduleDirs.reduce((list, baseDir) => {
110
+ const module = typeof baseDir === 'string' ? { baseDir } : baseDir;
111
+ return list.concat(...ModuleConfigUtil.readModuleReference(module.baseDir, module));
112
+ }, []);
113
+ }
114
+ static async preLoad(cwd, dependencies) {
115
+ const moduleReferences = Runner.getModuleReferences(cwd, dependencies);
116
+ await EggModuleLoader.preLoad(moduleReferences, {
117
+ baseDir: cwd,
118
+ logger: console,
119
+ dump: false,
120
+ });
121
+ }
122
+ async initLoaderInstance() {
123
+ this.loadUnitLoader = new EggModuleLoader(this.moduleReferences, {
124
+ logger: (this.innerObjects.logger && this.innerObjects.logger[0])?.obj || console,
125
+ baseDir: this.cwd,
126
+ dump: this.options?.dump,
127
+ });
128
+ await this.loadUnitLoader.init();
129
+ GlobalGraph.instance.registerBuildHook(crossCutGraphHook);
130
+ GlobalGraph.instance.registerBuildHook(pointCutGraphHook);
131
+ const configSourceEggPrototypeHook = new ConfigSourceLoadUnitHook();
132
+ LoadUnitLifecycleUtil.registerLifecycle(configSourceEggPrototypeHook);
133
+ // TODO refactor with egg module
134
+ // aop runtime
135
+ this.crosscutAdviceFactory = new CrosscutAdviceFactory();
136
+ this.loadUnitAopHook = new LoadUnitAopHook(this.crosscutAdviceFactory);
137
+ this.eggPrototypeCrossCutHook = new EggPrototypeCrossCutHook(this.crosscutAdviceFactory);
138
+ this.eggObjectAopHook = new EggObjectAopHook();
139
+ EggPrototypeLifecycleUtil.registerLifecycle(this.eggPrototypeCrossCutHook);
140
+ LoadUnitLifecycleUtil.registerLifecycle(this.loadUnitAopHook);
141
+ EggObjectLifecycleUtil.registerLifecycle(this.eggObjectAopHook);
142
+ this.loadUnitMultiInstanceProtoHook = new LoadUnitMultiInstanceProtoHook();
143
+ LoadUnitLifecycleUtil.registerLifecycle(this.loadUnitMultiInstanceProtoHook);
144
+ const loggerInnerObject = this.innerObjects.logger && this.innerObjects.logger[0];
145
+ const logger = (loggerInnerObject?.obj || console);
146
+ this.dalModuleLoadUnitHook = new DalModuleLoadUnitHook(this.env ?? '', this.moduleConfigs, logger);
147
+ this.dalTableEggPrototypeHook = new DalTableEggPrototypeHook(logger);
148
+ this.transactionPrototypeHook = new TransactionPrototypeHook(this.moduleConfigs, logger);
149
+ EggPrototypeLifecycleUtil.registerLifecycle(this.dalTableEggPrototypeHook);
150
+ EggPrototypeLifecycleUtil.registerLifecycle(this.transactionPrototypeHook);
151
+ LoadUnitLifecycleUtil.registerLifecycle(this.dalModuleLoadUnitHook);
152
+ }
153
+ async init() {
154
+ await this.initLoaderInstance();
155
+ this.loadUnits = await this.load();
156
+ const instances = [];
157
+ for (const loadUnit of this.loadUnits) {
158
+ const instance = await LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
159
+ instances.push(instance);
160
+ }
161
+ this.loadUnitInstances = instances;
162
+ const runnerClass = StandaloneUtil.getMainRunner();
163
+ if (!runnerClass) {
164
+ throw new Error('not found runner class. Do you add @Runner decorator?');
165
+ }
166
+ const proto = PrototypeUtil.getClazzProto(runnerClass);
167
+ if (!proto) {
168
+ throw new Error(`can not get proto for clazz ${runnerClass.name}`);
169
+ }
170
+ this.runnerProto = proto;
171
+ }
172
+ async run(aCtx) {
173
+ const lifecycle = {};
174
+ const ctx = aCtx || new StandaloneContext();
175
+ return await ContextHandler.run(ctx, async () => {
176
+ if (ctx.init) {
177
+ await ctx.init(lifecycle);
178
+ }
179
+ const eggObject = await EggContainerFactory.getOrCreateEggObject(this.runnerProto);
180
+ const runner = eggObject.obj;
181
+ try {
182
+ return await runner.main();
183
+ }
184
+ finally {
185
+ if (ctx.destroy) {
186
+ ctx.destroy(lifecycle).catch(e => {
187
+ e.message = `[tegg/standalone] destroy tegg context failed: ${e.message}`;
188
+ console.warn(e);
189
+ });
190
+ }
191
+ }
192
+ });
193
+ }
194
+ async destroy() {
195
+ if (this.loadUnitInstances) {
196
+ for (const instance of this.loadUnitInstances) {
197
+ await LoadUnitInstanceFactory.destroyLoadUnitInstance(instance);
198
+ }
199
+ }
200
+ if (this.loadUnits) {
201
+ for (const loadUnit of this.loadUnits) {
202
+ await LoadUnitFactory.destroyLoadUnit(loadUnit);
203
+ }
204
+ }
205
+ if (this.configSourceEggPrototypeHook) {
206
+ LoadUnitLifecycleUtil.deleteLifecycle(this.configSourceEggPrototypeHook);
207
+ }
208
+ if (this.eggPrototypeCrossCutHook) {
209
+ EggPrototypeLifecycleUtil.deleteLifecycle(this.eggPrototypeCrossCutHook);
210
+ }
211
+ if (this.loadUnitAopHook) {
212
+ LoadUnitLifecycleUtil.deleteLifecycle(this.loadUnitAopHook);
213
+ }
214
+ if (this.eggObjectAopHook) {
215
+ EggObjectLifecycleUtil.deleteLifecycle(this.eggObjectAopHook);
216
+ }
217
+ if (this.loadUnitMultiInstanceProtoHook) {
218
+ LoadUnitLifecycleUtil.deleteLifecycle(this.loadUnitMultiInstanceProtoHook);
219
+ }
220
+ if (this.dalTableEggPrototypeHook) {
221
+ EggPrototypeLifecycleUtil.deleteLifecycle(this.dalTableEggPrototypeHook);
222
+ }
223
+ if (this.dalModuleLoadUnitHook) {
224
+ LoadUnitLifecycleUtil.deleteLifecycle(this.dalModuleLoadUnitHook);
225
+ }
226
+ if (this.transactionPrototypeHook) {
227
+ EggPrototypeLifecycleUtil.deleteLifecycle(this.transactionPrototypeHook);
228
+ }
229
+ MysqlDataSourceManager.instance.clear();
230
+ SqlMapManager.instance.clear();
231
+ TableModelManager.instance.clear();
232
+ // clear configNames
233
+ ModuleConfigUtil.setConfigNames(undefined);
234
+ }
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTZFLE1BQU0seUJBQXlCLENBQUM7QUFDdEksT0FBTyxFQUVMLHlCQUF5QixFQUFFLFdBQVcsRUFFdEMsZUFBZSxFQUNmLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUVuQixzQkFBc0IsRUFFdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxhQUFhLEVBRWIsYUFBYSxFQUNiLDhCQUE4QixHQUUvQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixlQUFlLEVBQUUsaUJBQWlCLEdBQ25DLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsd0JBQXdCLEdBQ3pCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JB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
@@ -1,9 +1,5 @@
1
- import { AbstractEggContext } from "@eggjs/tegg-runtime";
2
-
3
- //#region src/StandaloneContext.d.ts
4
- declare class StandaloneContext extends AbstractEggContext {
5
- id: string;
6
- constructor();
1
+ import { AbstractEggContext } from '@eggjs/tegg-runtime';
2
+ export declare class StandaloneContext extends AbstractEggContext {
3
+ id: string;
4
+ constructor();
7
5
  }
8
- //#endregion
9
- export { StandaloneContext };
@@ -1,14 +1,10 @@
1
- import { AbstractEggContext } from "@eggjs/tegg-runtime";
2
- import { IdenticalUtil } from "@eggjs/tegg-lifecycle";
3
-
4
- //#region src/StandaloneContext.ts
5
- var StandaloneContext = class extends AbstractEggContext {
6
- id;
7
- constructor() {
8
- super();
9
- this.id = IdenticalUtil.createContextId();
10
- }
11
- };
12
-
13
- //#endregion
14
- export { StandaloneContext };
1
+ import { AbstractEggContext } from '@eggjs/tegg-runtime';
2
+ import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
3
+ export class StandaloneContext extends AbstractEggContext {
4
+ id;
5
+ constructor() {
6
+ super();
7
+ this.id = IdenticalUtil.createContextId();
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhbmRhbG9uZUNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3RhbmRhbG9uZUNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFDdkQsRUFBRSxDQUFTO0lBRVg7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,6 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { type EggContext } from '@eggjs/tegg-runtime';
3
+ export declare class StandaloneContextHandler {
4
+ static storage: AsyncLocalStorage<EggContext>;
5
+ static register(): void;
6
+ }
@@ -1,18 +1,14 @@
1
- import { ContextHandler } from "@eggjs/tegg-runtime";
2
- import { AsyncLocalStorage } from "node:async_hooks";
3
-
4
- //#region src/StandaloneContextHandler.ts
5
- var StandaloneContextHandler = class StandaloneContextHandler {
6
- static storage = new AsyncLocalStorage();
7
- static register() {
8
- ContextHandler.getContextCallback = () => {
9
- return StandaloneContextHandler.storage.getStore();
10
- };
11
- ContextHandler.runInContextCallback = (context, fn) => {
12
- return StandaloneContextHandler.storage.run(context, fn);
13
- };
14
- }
15
- };
16
-
17
- //#endregion
18
- export { StandaloneContextHandler };
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { ContextHandler } from '@eggjs/tegg-runtime';
3
+ export class StandaloneContextHandler {
4
+ static storage = new AsyncLocalStorage();
5
+ static register() {
6
+ ContextHandler.getContextCallback = () => {
7
+ return StandaloneContextHandler.storage.getStore();
8
+ };
9
+ ContextHandler.runInContextCallback = (context, fn) => {
10
+ return StandaloneContextHandler.storage.run(context, fn);
11
+ };
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhbmRhbG9uZUNvbnRleHRIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1N0YW5kYWxvbmVDb250ZXh0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixFQUFjLENBQUM7SUFFckQsTUFBTSxDQUFDLFFBQVE7UUFDYixjQUFjLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ3ZDLE9BQU8sd0JBQXdCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELENBQUMsQ0FBQztRQUVGLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNwRCxPQUFPLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQztJQUNKLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ import { AbstractEggContext } from '@eggjs/tegg-runtime';
2
+ export declare class StandaloneContextImpl extends AbstractEggContext {
3
+ readonly id: string;
4
+ constructor();
5
+ }
@@ -0,0 +1,10 @@
1
+ import { AbstractEggContext } from '@eggjs/tegg-runtime';
2
+ import { IdenticalUtil } from '@eggjs/tegg';
3
+ export class StandaloneContextImpl extends AbstractEggContext {
4
+ id;
5
+ constructor() {
6
+ super();
7
+ this.id = IdenticalUtil.createContextId();
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhbmRhbG9uZUNvbnRleHRJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1N0YW5kYWxvbmVDb250ZXh0SW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBa0I7SUFDbEQsRUFBRSxDQUFTO0lBRXBCO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0NBQ0YifQ==
@@ -1,20 +1,17 @@
1
- import { StandaloneInnerObjectProto } from "./StandaloneInnerObjectProto.js";
2
- import { EggPrototype } from "@eggjs/tegg-metadata";
3
- import { EggObject } from "@eggjs/tegg-runtime";
4
- import { EggObjectName } from "@eggjs/tegg";
5
-
6
- //#region src/StandaloneInnerObject.d.ts
1
+ import { type EggObject } from '@eggjs/tegg-runtime';
2
+ import { type EggObjectName } from '@eggjs/tegg';
3
+ import { type EggPrototype } from '@eggjs/tegg-metadata';
4
+ import { StandaloneInnerObjectProto } from './StandaloneInnerObjectProto.ts';
7
5
  declare const OBJ: unique symbol;
8
- declare class StandaloneInnerObject implements EggObject {
9
- readonly isReady: boolean;
10
- private [OBJ];
11
- readonly proto: StandaloneInnerObjectProto;
12
- readonly name: EggObjectName;
13
- readonly id: string;
14
- constructor(name: EggObjectName, proto: StandaloneInnerObjectProto);
15
- get obj(): object;
16
- injectProperty(): void;
17
- static createObject(name: EggObjectName, proto: EggPrototype): Promise<StandaloneInnerObject>;
6
+ export declare class StandaloneInnerObject implements EggObject {
7
+ readonly isReady: boolean;
8
+ private [OBJ];
9
+ readonly proto: StandaloneInnerObjectProto;
10
+ readonly name: EggObjectName;
11
+ readonly id: string;
12
+ constructor(name: EggObjectName, proto: StandaloneInnerObjectProto);
13
+ get obj(): object;
14
+ injectProperty(): void;
15
+ static createObject(name: EggObjectName, proto: EggPrototype): Promise<StandaloneInnerObject>;
18
16
  }
19
- //#endregion
20
- export { StandaloneInnerObject };
17
+ export {};