@punks/backend-entity-manager 0.0.282 → 0.0.284

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.
Files changed (26) hide show
  1. package/dist/cjs/index.js +71 -21
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/platforms/nest/extensions/jobs/abstractions/runner.d.ts +1 -0
  4. package/dist/cjs/types/platforms/nest/extensions/jobs/commands/job-dispatch/command.d.ts +1 -0
  5. package/dist/cjs/types/platforms/nest/extensions/jobs/index.d.ts +1 -0
  6. package/dist/cjs/types/platforms/nest/extensions/jobs/providers/scheduler/index.d.ts +2 -3
  7. package/dist/cjs/types/platforms/nest/extensions/jobs/services/index.d.ts +2 -1
  8. package/dist/cjs/types/platforms/nest/extensions/jobs/services/jobs-service/index.d.ts +2 -0
  9. package/dist/cjs/types/platforms/nest/extensions/jobs/services/jobs-service/service.d.ts +8 -3
  10. package/dist/cjs/types/platforms/nest/extensions/jobs/services/jobs-service/types.d.ts +1 -0
  11. package/dist/cjs/types/platforms/nest/extensions/jobs/settings/index.d.ts +3 -0
  12. package/dist/cjs/types/platforms/nest/ioc/tokens/symbols.d.ts +0 -1
  13. package/dist/esm/index.js +72 -22
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/types/platforms/nest/extensions/jobs/abstractions/runner.d.ts +1 -0
  16. package/dist/esm/types/platforms/nest/extensions/jobs/commands/job-dispatch/command.d.ts +1 -0
  17. package/dist/esm/types/platforms/nest/extensions/jobs/index.d.ts +1 -0
  18. package/dist/esm/types/platforms/nest/extensions/jobs/providers/scheduler/index.d.ts +2 -3
  19. package/dist/esm/types/platforms/nest/extensions/jobs/services/index.d.ts +2 -1
  20. package/dist/esm/types/platforms/nest/extensions/jobs/services/jobs-service/index.d.ts +2 -0
  21. package/dist/esm/types/platforms/nest/extensions/jobs/services/jobs-service/service.d.ts +8 -3
  22. package/dist/esm/types/platforms/nest/extensions/jobs/services/jobs-service/types.d.ts +1 -0
  23. package/dist/esm/types/platforms/nest/extensions/jobs/settings/index.d.ts +3 -0
  24. package/dist/esm/types/platforms/nest/ioc/tokens/symbols.d.ts +0 -1
  25. package/dist/index.d.ts +22 -4
  26. package/package.json +1 -1
@@ -3,6 +3,7 @@ export interface JobDispatchInput {
3
3
  definition: JobDefinition<unknown, unknown>;
4
4
  schedule?: JobSchedule<unknown>;
5
5
  instanceId: string;
6
+ payload?: unknown;
6
7
  }
7
8
  export declare enum JobProviderState {
8
9
  Initializing = "initializing",
@@ -3,6 +3,7 @@ export interface JobDispatchCommandInput {
3
3
  job: JobDefinition<unknown, unknown>;
4
4
  schedule?: JobSchedule<unknown>;
5
5
  runType: JobRunType;
6
+ payload?: unknown;
6
7
  }
7
8
  export declare class JobDispatchCommand {
8
9
  readonly input: JobDispatchCommandInput;
@@ -1,2 +1,3 @@
1
1
  export * from "./abstractions";
2
2
  export { JobsModule } from "./module";
3
+ export { JobsService, JobTriggerInput } from "./services/jobs-service";
@@ -1,17 +1,16 @@
1
1
  import { SchedulerRegistry } from "@nestjs/schedule";
2
- import { JobsSettings } from "../../abstractions/settings";
3
2
  import { JobsSchedulerTask } from "../../task/jobs-scheduler";
4
3
  import { JobsMonitorTask } from "../../task/jobs-monitor";
5
4
  export declare class JobsScheduler {
6
- private readonly jobsSettings;
7
5
  private readonly schedulerRegistry;
8
6
  private readonly schedulerTask;
9
7
  private readonly monitorTask;
10
8
  private readonly logger;
11
- constructor(jobsSettings: JobsSettings, schedulerRegistry: SchedulerRegistry, schedulerTask: JobsSchedulerTask, monitorTask: JobsMonitorTask);
9
+ constructor(schedulerRegistry: SchedulerRegistry, schedulerTask: JobsSchedulerTask, monitorTask: JobsMonitorTask);
12
10
  register(): void;
13
11
  private registerJobsScheduler;
14
12
  private registerJobsMonitor;
15
13
  private batchJobsSchedule;
16
14
  private batchJobsMonitor;
15
+ private get jobsSettings();
17
16
  }
@@ -1 +1,2 @@
1
- export declare const JobsServices: never[];
1
+ import { JobsService } from "./jobs-service";
2
+ export declare const JobsServices: (typeof JobsService)[];
@@ -0,0 +1,2 @@
1
+ export { JobsService } from "./service";
2
+ export { JobTriggerInput } from "./types";
@@ -1,9 +1,14 @@
1
- import { IJobDefinitionsRepository } from "../../abstractions";
1
+ import { IJobDefinitionsRepository, IJobInstancesRepository, JobDefinition } from "../../abstractions";
2
2
  import { CommandBus } from "@nestjs/cqrs";
3
3
  import { JobTriggerInput } from "./types";
4
4
  export declare class JobsService {
5
5
  private readonly definitions;
6
+ private readonly instances;
6
7
  private readonly commandBus;
7
- constructor(definitions: IJobDefinitionsRepository, commandBus: CommandBus);
8
- runJob: (input: JobTriggerInput) => Promise<any>;
8
+ constructor(definitions: IJobDefinitionsRepository, instances: IJobInstancesRepository, commandBus: CommandBus);
9
+ triggerJob: (input: JobTriggerInput) => Promise<any>;
10
+ updateJob: (input: JobDefinition<unknown, unknown>) => Promise<void>;
11
+ instanceMonitor: (input: {
12
+ instanceId: string;
13
+ }) => Promise<any>;
9
14
  }
@@ -1,4 +1,5 @@
1
1
  export type JobTriggerInput = {
2
2
  jobUid: string;
3
3
  scheduleUid?: string;
4
+ payload?: any;
4
5
  };
@@ -0,0 +1,3 @@
1
+ import { AppInMemorySettings } from "../../../../../settings";
2
+ import { JobsSettings } from "../abstractions/settings";
3
+ export declare const jobsSettings: AppInMemorySettings<JobsSettings>;
@@ -1,7 +1,6 @@
1
1
  export declare const EntityManagerProviderToken: {
2
2
  DiscoveryService: {};
3
3
  OperationsLockRepository: {};
4
- JobsModuleSettings: {};
5
4
  JobInstancesRepository: {};
6
5
  JobDefinitionsRepository: {};
7
6
  };
package/dist/esm/index.js CHANGED
@@ -33769,10 +33769,11 @@ JobsMonitorTask = JobsMonitorTask_1 = __decorate([
33769
33769
  __metadata("design:paramtypes", [Object, Object, CommandBus])
33770
33770
  ], JobsMonitorTask);
33771
33771
 
33772
+ const jobsSettings = new AppInMemorySettings();
33773
+
33772
33774
  var JobsScheduler_1;
33773
33775
  let JobsScheduler = JobsScheduler_1 = class JobsScheduler {
33774
- constructor(jobsSettings, schedulerRegistry, schedulerTask, monitorTask) {
33775
- this.jobsSettings = jobsSettings;
33776
+ constructor(schedulerRegistry, schedulerTask, monitorTask) {
33776
33777
  this.schedulerRegistry = schedulerRegistry;
33777
33778
  this.schedulerTask = schedulerTask;
33778
33779
  this.monitorTask = monitorTask;
@@ -33808,18 +33809,78 @@ let JobsScheduler = JobsScheduler_1 = class JobsScheduler {
33808
33809
  this.registerJobsScheduler();
33809
33810
  this.registerJobsMonitor();
33810
33811
  }
33812
+ get jobsSettings() {
33813
+ return jobsSettings.value;
33814
+ }
33811
33815
  };
33812
33816
  JobsScheduler = JobsScheduler_1 = __decorate([
33813
33817
  Injectable(),
33814
- __param(0, Inject(getEntityManagerProviderToken("JobsModuleSettings"))),
33815
- __metadata("design:paramtypes", [Object, SchedulerRegistry,
33818
+ __metadata("design:paramtypes", [SchedulerRegistry,
33816
33819
  JobsSchedulerTask,
33817
33820
  JobsMonitorTask])
33818
33821
  ], JobsScheduler);
33819
33822
 
33820
33823
  const JobsProviders = [JobsScheduler];
33821
33824
 
33822
- const JobsServices = [];
33825
+ class JobDefinitionUpdateCommand {
33826
+ constructor(input) {
33827
+ this.input = input;
33828
+ }
33829
+ }
33830
+
33831
+ let JobsService = class JobsService {
33832
+ constructor(definitions, instances, commandBus) {
33833
+ this.definitions = definitions;
33834
+ this.instances = instances;
33835
+ this.commandBus = commandBus;
33836
+ this.triggerJob = async (input) => {
33837
+ const job = await this.definitions.getDefinitionByUid(input.jobUid);
33838
+ if (!job) {
33839
+ throw new Error(`Job ${input.jobUid} not found`);
33840
+ }
33841
+ const schedule = input.scheduleUid
33842
+ ? job.schedules.find((x) => x.uid === input.scheduleUid)
33843
+ : undefined;
33844
+ if (input.scheduleUid && !schedule) {
33845
+ throw new Error(`Job ${input.jobUid} schedule ${input.scheduleUid} not found`);
33846
+ }
33847
+ return await this.commandBus.execute(new JobDispatchCommand({
33848
+ job,
33849
+ schedule,
33850
+ runType: JobRunType.OnDemand,
33851
+ payload: input.payload,
33852
+ }));
33853
+ };
33854
+ this.updateJob = async (input) => {
33855
+ this.commandBus.execute(new JobDefinitionUpdateCommand({
33856
+ job: input,
33857
+ }));
33858
+ };
33859
+ this.instanceMonitor = async (input) => {
33860
+ const { instanceId } = input;
33861
+ const instance = await this.instances.getById(instanceId);
33862
+ if (!instance) {
33863
+ throw new Error(`Job instance ${instanceId} not found`);
33864
+ }
33865
+ const job = await this.definitions.getDefinitionByUid(instance.jobUid);
33866
+ if (!job) {
33867
+ throw new Error(`Job definition ${instance.jobUid} not found`);
33868
+ }
33869
+ return await this.commandBus.execute(new JobStatusMonitorCommand({
33870
+ instanceId,
33871
+ job,
33872
+ }));
33873
+ };
33874
+ }
33875
+ };
33876
+ JobsService = __decorate([
33877
+ Injectable(),
33878
+ __param(0, Inject(getEntityManagerProviderToken("JobDefinitionsRepository"))),
33879
+ __param(1, Inject(getEntityManagerProviderToken("JobInstancesRepository"))),
33880
+ __metadata("design:paramtypes", [Object, Object, CommandBus])
33881
+ ], JobsService);
33882
+
33883
+ const JobsServices = [JobsService];
33823
33884
 
33824
33885
  const JOB_PROVIDER = Symbol.for("WP.JOB_PROVIDER");
33825
33886
 
@@ -33887,7 +33948,7 @@ let JobDispatchHandler = JobDispatchHandler_1 = class JobDispatchHandler {
33887
33948
  });
33888
33949
  }
33889
33950
  async dispatchJob(command) {
33890
- const { input: { job, schedule, runType }, } = command;
33951
+ const { input: { job, schedule, runType, payload }, } = command;
33891
33952
  const instanceId = newUuid$1();
33892
33953
  try {
33893
33954
  this.logger.info(`JOB DISPATCH -> dispatching started job ${job.uid} -> ${instanceId}`);
@@ -33901,6 +33962,7 @@ let JobDispatchHandler = JobDispatchHandler_1 = class JobDispatchHandler {
33901
33962
  definition: job,
33902
33963
  schedule,
33903
33964
  instanceId,
33965
+ payload,
33904
33966
  });
33905
33967
  await this.instances.updateInstance(instanceId, {
33906
33968
  status: JobStatus.Ready,
@@ -33991,12 +34053,6 @@ JobStatusMonitorHandler = JobStatusMonitorHandler_1 = __decorate([
33991
34053
  JobProviderExecutor, Object])
33992
34054
  ], JobStatusMonitorHandler);
33993
34055
 
33994
- class JobDefinitionUpdateCommand {
33995
- constructor(input) {
33996
- this.input = input;
33997
- }
33998
- }
33999
-
34000
34056
  var JobDefinitionUpdateHandler_1;
34001
34057
  let JobDefinitionUpdateHandler = JobDefinitionUpdateHandler_1 = class JobDefinitionUpdateHandler {
34002
34058
  constructor(lock, definitions, executor) {
@@ -34062,16 +34118,10 @@ let JobsModule = JobsModule_1 = class JobsModule {
34062
34118
  await this.jobsProviderFactory.initialize();
34063
34119
  }
34064
34120
  static forRoot(input) {
34121
+ jobsSettings.initialize(input);
34065
34122
  return {
34066
34123
  module: JobsModule_1,
34067
34124
  ...ModuleData$7,
34068
- providers: [
34069
- ...ModuleData$7.providers,
34070
- {
34071
- provide: getEntityManagerProviderToken("JobsModuleSettings"),
34072
- useValue: input,
34073
- },
34074
- ],
34075
34125
  };
34076
34126
  }
34077
34127
  };
@@ -40070,13 +40120,13 @@ let AwsJobsProvider = class AwsJobsProvider {
40070
40120
  this.awsBatchService = awsBatchService;
40071
40121
  }
40072
40122
  async dispatch(input) {
40073
- const { definition, schedule, instanceId } = input;
40123
+ const { definition, schedule, instanceId, payload } = input;
40074
40124
  const awsInvocationParams = schedule?.invocationOverrides;
40075
40125
  await this.awsBatchService.submitJob({
40076
40126
  instanceId,
40077
40127
  jobUid: definition.uid,
40078
40128
  overrides: {
40079
- command: awsInvocationParams?.startCommand,
40129
+ command: awsInvocationParams?.startCommand?.map((x) => x.replace("{payload}", JSON.stringify(payload ?? {}))),
40080
40130
  },
40081
40131
  });
40082
40132
  }
@@ -43463,5 +43513,5 @@ AwsSecretsModule = AwsSecretsModule_1 = __decorate([
43463
43513
  })
43464
43514
  ], AwsSecretsModule);
43465
43515
 
43466
- export { AUTHENTICATION_EVENTS_NAMESPACE, ApiKeyAccess, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsJobsModule, AwsS3BucketError, AwsS3BucketProvider, AwsS3MediaError, AwsS3MediaModule, AwsS3MediaProvider, AwsSecretsModule, AwsSecretsProvider, AwsSesEmailTemplate, BucketItemType, CacheService, ConnectorMode, CurrentUser, CustomDiscoveryModule, CustomDiscoveryService, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesManager, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InMemoryMediaProvider, InvalidCredentialsError, JobConcurrency, JobInstance, JobProviderState, JobRunType, JobSchedule, JobStatus, JobsModule, LockNotFoundError, MediaLibraryService, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationLockService, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, Permissions, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SanityMediaError, SanityMediaModule, SanityMediaProvider, SecretsService, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, TypeOrmQueryBuilder, TypeOrmRepository, TypeormCacheInstance, TypeormOperationLockRepository, UserCreationError, UserRegistrationError, WpApiKeysService, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpCacheInstance, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConnectorMapper, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpGlobalAuthenticationMiddleware, WpMediaFolderRepository, WpMediaProvider, WpMediaReferenceRepository, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildPermissionsGuard, buildProviderToken, buildRolesGuard, createContainer, createExpressFileResponse, getEntityManagerProviderToken, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
43516
+ export { AUTHENTICATION_EVENTS_NAMESPACE, ApiKeyAccess, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsJobsModule, AwsS3BucketError, AwsS3BucketProvider, AwsS3MediaError, AwsS3MediaModule, AwsS3MediaProvider, AwsSecretsModule, AwsSecretsProvider, AwsSesEmailTemplate, BucketItemType, CacheService, ConnectorMode, CurrentUser, CustomDiscoveryModule, CustomDiscoveryService, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesManager, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InMemoryMediaProvider, InvalidCredentialsError, JobConcurrency, JobInstance, JobProviderState, JobRunType, JobSchedule, JobStatus, JobsModule, JobsService, LockNotFoundError, MediaLibraryService, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationLockService, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, Permissions, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SanityMediaError, SanityMediaModule, SanityMediaProvider, SecretsService, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, TypeOrmQueryBuilder, TypeOrmRepository, TypeormCacheInstance, TypeormOperationLockRepository, UserCreationError, UserRegistrationError, WpApiKeysService, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpCacheInstance, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConnectorMapper, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpGlobalAuthenticationMiddleware, WpMediaFolderRepository, WpMediaProvider, WpMediaReferenceRepository, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildPermissionsGuard, buildProviderToken, buildRolesGuard, createContainer, createExpressFileResponse, getEntityManagerProviderToken, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
43467
43517
  //# sourceMappingURL=index.js.map