@chromahq/core 0.1.12 → 0.1.13

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.
@@ -1,5 +1,11 @@
1
+ import { Container } from '@inversifyjs/container';
2
+
1
3
  const TOKENS = { Store: Symbol.for("Store") };
2
4
 
5
+ const container = new Container({
6
+ defaultScope: "Singleton"
7
+ });
8
+
3
9
  var JobState = /* @__PURE__ */ ((JobState2) => {
4
10
  JobState2["SCHEDULED"] = "scheduled";
5
11
  JobState2["RUNNING"] = "running";
@@ -10,5 +16,5 @@ var JobState = /* @__PURE__ */ ((JobState2) => {
10
16
  return JobState2;
11
17
  })(JobState || {});
12
18
 
13
- export { JobState as J, TOKENS as T };
14
- //# sourceMappingURL=IJob-aWBqI3FC.js.map
19
+ export { JobState as J, TOKENS as T, container as c };
20
+ //# sourceMappingURL=IJob-ByOJx8qA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IJob-ByOJx8qA.js","sources":["../src/decorators/tokens.ts","../src/di/Container.ts","../src/scheduler/core/IJob.ts"],"sourcesContent":["export const TOKENS = { Store: Symbol.for('Store') };\n","import { Container as Di } from '@inversifyjs/container';\n\nexport const METADATA_KEY = {\n PARAM_TYPES: 'design:paramtypes',\n TYPE: 'design:type',\n RETURN_TYPE: 'design:returntype',\n};\n\nexport const container = new Di({\n defaultScope: 'Singleton',\n});\n\nexport const bind = <T>(id: symbol | (new (...a: any[]) => T), cls: new (...a: any[]) => T) =>\n container\n .bind<T>(id as any)\n .to(cls)\n .inSingletonScope();\n\nexport const resolve = <T>(id: symbol | (new (...a: any[]) => T)): T => container.get<T>(id as any);\n\nexport function isInjectable(target: any): boolean {\n return !!Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, target);\n}\n","import { JobOptions } from './JobOptions';\n\nexport interface IJob<T = unknown> {\n readonly data?: T;\n handle(context?: JobContext): Promise<void> | void;\n pause?(): Promise<void> | void;\n resume?(): Promise<void> | void;\n stop?(): Promise<void> | void;\n}\n\nexport enum JobState {\n SCHEDULED = 'scheduled',\n RUNNING = 'running',\n PAUSED = 'paused',\n STOPPED = 'stopped',\n COMPLETED = 'completed',\n FAILED = 'failed',\n}\n\nexport interface JobContext {\n id: string;\n options?: JobOptions;\n state: JobState;\n createdAt: Date;\n updatedAt: Date;\n startedAt?: Date;\n pausedAt?: Date;\n stoppedAt?: Date;\n completedAt?: Date;\n error?: Error;\n retryCount?: number;\n\n /**\n * Pause the job execution.\n * @returns Promise<void> | void\n */\n pause: () => Promise<void> | void;\n resume: () => Promise<void> | void;\n stop: () => Promise<void> | void;\n complete: () => Promise<void> | void;\n fail: (error: Error) => Promise<void> | void;\n retry: () => Promise<void> | void;\n\n isRunning: () => boolean;\n isPaused: () => boolean;\n isStopped: () => boolean;\n isCompleted: () => boolean;\n isFailed: () => boolean;\n isRetrying: () => boolean;\n isScheduled: () => boolean;\n isDelayed: () => boolean;\n isRecurring: () => boolean;\n isCron: () => boolean;\n isTimeout: () => boolean;\n isAlarm: () => boolean;\n}\n"],"names":["Di","JobState"],"mappings":";;AAAO,MAAM,SAAS,EAAE,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;;ACQ1C,MAAM,SAAA,GAAY,IAAIA,SAAA,CAAG;AAAA,EAC9B,YAAA,EAAc;AAChB,CAAC;;ACAM,IAAK,QAAA,qBAAAC,SAAAA,KAAL;AACL,EAAAA,UAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,UAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,UAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,UAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,UAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,UAAA,QAAA,CAAA,GAAS,QAAA;AANC,EAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;;;;"}
@@ -1,7 +1,13 @@
1
1
  'use strict';
2
2
 
3
+ var container$1 = require('@inversifyjs/container');
4
+
3
5
  const TOKENS = { Store: Symbol.for("Store") };
4
6
 
7
+ const container = new container$1.Container({
8
+ defaultScope: "Singleton"
9
+ });
10
+
5
11
  var JobState = /* @__PURE__ */ ((JobState2) => {
6
12
  JobState2["SCHEDULED"] = "scheduled";
7
13
  JobState2["RUNNING"] = "running";
@@ -14,4 +20,5 @@ var JobState = /* @__PURE__ */ ((JobState2) => {
14
20
 
15
21
  exports.JobState = JobState;
16
22
  exports.TOKENS = TOKENS;
17
- //# sourceMappingURL=IJob-Bds0eWrM.js.map
23
+ exports.container = container;
24
+ //# sourceMappingURL=IJob-CoWGJUZM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IJob-CoWGJUZM.js","sources":["../src/decorators/tokens.ts","../src/di/Container.ts","../src/scheduler/core/IJob.ts"],"sourcesContent":["export const TOKENS = { Store: Symbol.for('Store') };\n","import { Container as Di } from '@inversifyjs/container';\n\nexport const METADATA_KEY = {\n PARAM_TYPES: 'design:paramtypes',\n TYPE: 'design:type',\n RETURN_TYPE: 'design:returntype',\n};\n\nexport const container = new Di({\n defaultScope: 'Singleton',\n});\n\nexport const bind = <T>(id: symbol | (new (...a: any[]) => T), cls: new (...a: any[]) => T) =>\n container\n .bind<T>(id as any)\n .to(cls)\n .inSingletonScope();\n\nexport const resolve = <T>(id: symbol | (new (...a: any[]) => T)): T => container.get<T>(id as any);\n\nexport function isInjectable(target: any): boolean {\n return !!Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, target);\n}\n","import { JobOptions } from './JobOptions';\n\nexport interface IJob<T = unknown> {\n readonly data?: T;\n handle(context?: JobContext): Promise<void> | void;\n pause?(): Promise<void> | void;\n resume?(): Promise<void> | void;\n stop?(): Promise<void> | void;\n}\n\nexport enum JobState {\n SCHEDULED = 'scheduled',\n RUNNING = 'running',\n PAUSED = 'paused',\n STOPPED = 'stopped',\n COMPLETED = 'completed',\n FAILED = 'failed',\n}\n\nexport interface JobContext {\n id: string;\n options?: JobOptions;\n state: JobState;\n createdAt: Date;\n updatedAt: Date;\n startedAt?: Date;\n pausedAt?: Date;\n stoppedAt?: Date;\n completedAt?: Date;\n error?: Error;\n retryCount?: number;\n\n /**\n * Pause the job execution.\n * @returns Promise<void> | void\n */\n pause: () => Promise<void> | void;\n resume: () => Promise<void> | void;\n stop: () => Promise<void> | void;\n complete: () => Promise<void> | void;\n fail: (error: Error) => Promise<void> | void;\n retry: () => Promise<void> | void;\n\n isRunning: () => boolean;\n isPaused: () => boolean;\n isStopped: () => boolean;\n isCompleted: () => boolean;\n isFailed: () => boolean;\n isRetrying: () => boolean;\n isScheduled: () => boolean;\n isDelayed: () => boolean;\n isRecurring: () => boolean;\n isCron: () => boolean;\n isTimeout: () => boolean;\n isAlarm: () => boolean;\n}\n"],"names":["Di","JobState"],"mappings":";;;;AAAO,MAAM,SAAS,EAAE,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;;ACQ1C,MAAM,SAAA,GAAY,IAAIA,qBAAA,CAAG;AAAA,EAC9B,YAAA,EAAc;AAChB,CAAC;;ACAM,IAAK,QAAA,qBAAAC,SAAAA,KAAL;AACL,EAAAA,UAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,UAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,UAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,UAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,UAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,UAAA,QAAA,CAAA,GAAS,QAAA;AANC,EAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;;;;;;"}
package/dist/boot.cjs.js CHANGED
@@ -1,11 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var container$1 = require('@inversifyjs/container');
4
- var IJob = require('./IJob-Bds0eWrM.js');
5
-
6
- const container = new container$1.Container({
7
- defaultScope: "Singleton"
8
- });
3
+ var IJob = require('./IJob-CoWGJUZM.js');
4
+ require('@inversifyjs/container');
9
5
 
10
6
  class MiddlewareRegistryClass {
11
7
  constructor() {
@@ -1098,7 +1094,7 @@ class Scheduler {
1098
1094
  try {
1099
1095
  this.registry.updateState(id, IJob.JobState.RUNNING);
1100
1096
  console.log(`Executing job ${id}`);
1101
- const jobInstance = container.get(id);
1097
+ const jobInstance = IJob.container.get(id);
1102
1098
  console.log(jobInstance);
1103
1099
  await jobInstance.handle.bind(jobInstance).call(jobInstance, context);
1104
1100
  if (!context.isStopped() && !context.isPaused()) {
@@ -1179,7 +1175,7 @@ class ApplicationBootstrap {
1179
1175
  await this.bootMessages();
1180
1176
  await this.bootServices();
1181
1177
  this.logger.success("\u{1F389} Chroma application initialization complete!");
1182
- bootstrap$1({ container, keepAlive: keepPortAlive, portName });
1178
+ bootstrap$1({ container: IJob.container, keepAlive: keepPortAlive, portName });
1183
1179
  } catch (error) {
1184
1180
  this.logger.error("\u{1F4A5} Application bootstrap failed:", error);
1185
1181
  throw error;
@@ -1193,7 +1189,7 @@ class ApplicationBootstrap {
1193
1189
  console.log("services", this.serviceRegistry.entries());
1194
1190
  for (const [serviceName, ServiceClass] of this.serviceRegistry.entries()) {
1195
1191
  try {
1196
- const instance = container.get(ServiceClass);
1192
+ const instance = IJob.container.get(ServiceClass);
1197
1193
  if (typeof instance.onBoot === "function") {
1198
1194
  await instance.onBoot();
1199
1195
  this.logger.success(`Booted service: ${serviceName}`);
@@ -1253,9 +1249,9 @@ class ApplicationBootstrap {
1253
1249
  for (const store of this.storeDefinitions) {
1254
1250
  const { classes, store: storeInstance } = await chromaGlobal.initStores(store);
1255
1251
  const diKey = `CentralStore:${store.name}`;
1256
- container.bind(diKey).toConstantValue(storeInstance);
1252
+ IJob.container.bind(diKey).toConstantValue(storeInstance);
1257
1253
  if (isFirstStore) {
1258
- container.bind(IJob.TOKENS.Store).toConstantValue(storeInstance);
1254
+ IJob.container.bind(IJob.TOKENS.Store).toConstantValue(storeInstance);
1259
1255
  isFirstStore = false;
1260
1256
  }
1261
1257
  this.registerMessageClass(classes.GetStoreStateMessage, `store:${store.name}:getState`);
@@ -1406,7 +1402,7 @@ class ApplicationBootstrap {
1406
1402
  this.logger.error(`\u274C ${errorMessage}`);
1407
1403
  return { success: false, message: errorMessage };
1408
1404
  }
1409
- container.bind(ServiceClass).toSelf().inSingletonScope();
1405
+ IJob.container.bind(ServiceClass).toSelf().inSingletonScope();
1410
1406
  serviceMetadata.registered = true;
1411
1407
  this.logger.success(`\u2705 Registered service: ${ServiceClass.name}`);
1412
1408
  return { success: true, message: `Successfully registered ${ServiceClass.name}` };
@@ -1431,7 +1427,7 @@ class ApplicationBootstrap {
1431
1427
  try {
1432
1428
  const messageMetadata = Reflect.getMetadata("name", MessageClass);
1433
1429
  const messageName = messageMetadata || MessageClass.name;
1434
- container.bind(messageName).to(MessageClass).inSingletonScope();
1430
+ IJob.container.bind(messageName).to(MessageClass).inSingletonScope();
1435
1431
  this.logger.success(`\u2705 Registered message: ${messageName}`);
1436
1432
  } catch (error) {
1437
1433
  this.logger.error(`\u274C Failed to register message ${MessageClass.name}:`, error);
@@ -1439,7 +1435,7 @@ class ApplicationBootstrap {
1439
1435
  }
1440
1436
  }
1441
1437
  async registerMessageClass(MessageClass, name) {
1442
- container.bind(name).to(MessageClass).inSingletonScope();
1438
+ IJob.container.bind(name).to(MessageClass).inSingletonScope();
1443
1439
  this.logger.success(`\u2705 Registered message: ${name}`);
1444
1440
  }
1445
1441
  /**
@@ -1457,7 +1453,7 @@ class ApplicationBootstrap {
1457
1453
  try {
1458
1454
  const messageMetadata = Reflect.getMetadata("name", MessageClass);
1459
1455
  const messageName = messageMetadata || MessageClass.name;
1460
- const messageInstance = container.get(messageName);
1456
+ const messageInstance = IJob.container.get(messageName);
1461
1457
  await messageInstance.boot();
1462
1458
  this.logger.success(`\u2705 Booted message: ${messageName}`);
1463
1459
  } catch (error) {
@@ -1474,21 +1470,21 @@ class ApplicationBootstrap {
1474
1470
  "/src/app/jobs/**/*.job.{ts,js}",
1475
1471
  { eager: true }
1476
1472
  );
1477
- if (!container.isBound(Scheduler)) {
1478
- container.bind(Scheduler).toSelf().inSingletonScope();
1473
+ if (!IJob.container.isBound(Scheduler)) {
1474
+ IJob.container.bind(Scheduler).toSelf().inSingletonScope();
1479
1475
  }
1480
- this.scheduler = container.get(Scheduler);
1476
+ this.scheduler = IJob.container.get(Scheduler);
1481
1477
  for (const module of Object.values(jobModules)) {
1482
1478
  const JobClass = module?.default;
1483
1479
  if (!JobClass) continue;
1484
1480
  try {
1485
1481
  const jobMetadata = Reflect.getMetadata("name", JobClass);
1486
1482
  const jobName = jobMetadata || JobClass.name;
1487
- container.bind(JobClass).toSelf().inSingletonScope();
1483
+ IJob.container.bind(JobClass).toSelf().inSingletonScope();
1488
1484
  const id = `${jobName.toLowerCase()}:${JobClass.name.toLowerCase()} ${Math.random().toString(36).substring(2, 15)}`;
1489
- container.bind(id).to(JobClass).inSingletonScope();
1485
+ IJob.container.bind(id).to(JobClass).inSingletonScope();
1490
1486
  const options = Reflect.getMetadata("job:options", JobClass) || {};
1491
- const instance = container.get(JobClass);
1487
+ const instance = IJob.container.get(JobClass);
1492
1488
  JobRegistry.instance.register(id, instance, options);
1493
1489
  this.scheduler.schedule(id, options);
1494
1490
  this.logger.success(`\u2705 Registered job: ${jobName}`);