@squiz/job-runner-lib 2.3.0 → 2.4.0

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 (137) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/domains/component/errors/JobError.spec.d.ts +1 -0
  3. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.d.ts +2 -2
  4. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.types.d.ts +5 -0
  5. package/lib/domains/job/S3Repository/JobDetailsRepository.d.ts +1 -2
  6. package/lib/domains/job/S3Repository/JobDetailsRepository.spec.d.ts +1 -1
  7. package/lib/domains/job/S3Repository/JobUploadsRepository.d.ts +16 -0
  8. package/lib/domains/job/{services/JobQueueService/JobQueueService.spec.d.ts → S3Repository/JobUploadsRepository.spec.d.ts} +1 -1
  9. package/lib/domains/job/S3Repository/S3RepositoryBase.d.ts +12 -5
  10. package/lib/domains/job/S3Repository/index.d.ts +2 -1
  11. package/lib/domains/job/constants/InjectTokens.d.ts +8 -0
  12. package/lib/domains/job/constants/JobExecutionStatus.constants.d.ts +2 -1
  13. package/lib/domains/job/constants/Repository.constants.d.ts +3 -3
  14. package/lib/domains/job/constants/RetryConfig.constants.d.ts +21 -0
  15. package/lib/domains/job/index.d.ts +6 -4
  16. package/lib/domains/job/manifest/JobManifestTypes.d.ts +7 -6
  17. package/lib/domains/job/model/Base/Base.d.ts +10 -5
  18. package/lib/domains/job/model/Job/Job.d.ts +9 -6
  19. package/lib/domains/job/model/JobContext/JobContext.d.ts +6 -5
  20. package/lib/domains/job/model/JobExecution/JobExecution.d.ts +64 -9
  21. package/lib/domains/job/model/LogPayload/LogPayload.d.ts +21 -12
  22. package/lib/domains/job/model/LogPayload/index.d.ts +1 -0
  23. package/lib/domains/job/model/LogPayload/mocks/LogPayload.mock.d.ts +6 -0
  24. package/lib/domains/job/repository/AbstractRepository.d.ts +20 -11
  25. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.d.ts +6 -7
  26. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.d.ts +7 -17
  27. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.d.ts +1 -1
  28. package/lib/domains/job/repository/JobExecutionRepository/utils/convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution.d.ts +2 -0
  29. package/lib/domains/job/repository/JobExecutionRepository/utils/index.d.ts +1 -0
  30. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.d.ts +5 -6
  31. package/lib/domains/job/repository/JobRepository/JobRepository.d.ts +6 -7
  32. package/lib/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.d.ts +9 -0
  33. package/lib/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.spec.d.ts +1 -0
  34. package/lib/domains/job/repository/index.d.ts +1 -0
  35. package/lib/domains/job/services/JobContextService/JobContextService.d.ts +6 -3
  36. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.d.ts +10 -6
  37. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.d.ts +1 -3
  38. package/lib/domains/job/services/JobManifestService/JobManifestService.d.ts +0 -1
  39. package/lib/domains/job/services/JobStartQueueService/JobStartQueueService.d.ts +17 -0
  40. package/lib/domains/job/services/JobStartQueueService/JobStartQueueService.defs.d.ts +25 -0
  41. package/lib/domains/job/services/JobUploadService/utils/manifestValidator.d.ts +1 -2
  42. package/lib/domains/job/services/index.d.ts +2 -1
  43. package/lib/domains/manifest/services/ManifestServiceForDev.d.ts +0 -3
  44. package/lib/index.d.ts +1 -0
  45. package/lib/index.js +13 -13
  46. package/lib/index.js.map +4 -4
  47. package/lib/jest-global-setup.d.ts +6 -1
  48. package/lib/mocks/mockIoc.d.ts +3 -3
  49. package/lib/utils/buildJobRunnerModule/buildJobRunnerModule.d.ts +2 -0
  50. package/lib/utils/buildJobRunnerModule/buildJobRunnerModule.types.d.ts +14 -0
  51. package/lib/utils/index.d.ts +2 -0
  52. package/package.json +12 -11
  53. package/src/domains/component/errors/JobError.spec.ts +30 -0
  54. package/src/domains/component/errors/JobError.ts +8 -1
  55. package/src/domains/job/ParsePartitionKey/ParsePartitionKey.spec.ts +17 -8
  56. package/src/domains/job/ParsePartitionKey/ParsePartitionKey.ts +13 -16
  57. package/src/domains/job/ParsePartitionKey/ParsePartitionKey.types.ts +6 -0
  58. package/src/domains/job/S3Repository/JobDetailsRepository.spec.ts +47 -31
  59. package/src/domains/job/S3Repository/JobDetailsRepository.ts +7 -8
  60. package/src/domains/job/S3Repository/JobUploadsRepository.spec.ts +66 -0
  61. package/src/domains/job/S3Repository/JobUploadsRepository.ts +35 -0
  62. package/src/domains/job/S3Repository/S3RepositoryBase.spec.ts +13 -19
  63. package/src/domains/job/S3Repository/S3RepositoryBase.ts +24 -9
  64. package/src/domains/job/S3Repository/index.ts +2 -1
  65. package/src/domains/job/constants/InjectTokens.ts +8 -0
  66. package/src/domains/job/constants/JobExecutionStatus.constants.ts +1 -0
  67. package/src/domains/job/constants/Repository.constants.ts +3 -3
  68. package/src/domains/job/constants/RetryConfig.constants.ts +29 -0
  69. package/src/domains/job/core/pagination/services/PaginationService.spec.ts +3 -5
  70. package/src/domains/job/index.ts +6 -4
  71. package/src/domains/job/manifest/JobManifestTypes.ts +8 -6
  72. package/src/domains/job/manifest/mocks/JobManifest.mock.ts +2 -2
  73. package/src/domains/job/manifest/mocks/JobManifestDto.mock.ts +3 -2
  74. package/src/domains/job/manifest/mocks/JobManifestRecord.mock.ts +4 -3
  75. package/src/domains/job/model/Base/Base.ts +11 -5
  76. package/src/domains/job/model/Job/Job.ts +11 -6
  77. package/src/domains/job/model/Job/mocks/Job.mock.ts +2 -2
  78. package/src/domains/job/model/Job/mocks/JobDto.mock.ts +3 -2
  79. package/src/domains/job/model/Job/mocks/JobRecord.mock.ts +3 -2
  80. package/src/domains/job/model/JobContext/JobContext.ts +7 -5
  81. package/src/domains/job/model/JobContext/mocks/JobContext.mock.ts +2 -2
  82. package/src/domains/job/model/JobContext/mocks/JobContextDto.mock.ts +3 -2
  83. package/src/domains/job/model/JobContext/mocks/JobContextRecord.mock.ts +3 -2
  84. package/src/domains/job/model/JobExecution/JobExecution.ts +74 -9
  85. package/src/domains/job/model/JobExecution/mocks/JobExecution.mock.ts +7 -4
  86. package/src/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.ts +32 -16
  87. package/src/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.ts +10 -4
  88. package/src/domains/job/model/LogPayload/LogPayload.ts +32 -11
  89. package/src/domains/job/model/LogPayload/index.ts +1 -0
  90. package/src/domains/job/model/LogPayload/mocks/LogPayload.mock.ts +21 -0
  91. package/src/domains/job/repository/AbstractRepository.ts +91 -59
  92. package/src/domains/job/repository/JobContextRepository/JobContextRepository.spec.ts +39 -49
  93. package/src/domains/job/repository/JobContextRepository/JobContextRepository.ts +33 -21
  94. package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.ts +343 -169
  95. package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.ts +112 -141
  96. package/src/domains/job/repository/JobExecutionRepository/utils/convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution.ts +22 -0
  97. package/src/domains/job/repository/JobExecutionRepository/utils/index.ts +1 -0
  98. package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.ts +23 -38
  99. package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.ts +29 -36
  100. package/src/domains/job/repository/JobRepository/JobRepository.spec.ts +72 -80
  101. package/src/domains/job/repository/JobRepository/JobRepository.ts +66 -70
  102. package/src/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.spec.ts +60 -0
  103. package/src/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.ts +42 -0
  104. package/src/domains/job/repository/index.ts +1 -0
  105. package/src/domains/job/services/JobContextService/JobContextService.spec.ts +73 -39
  106. package/src/domains/job/services/JobContextService/JobContextService.ts +37 -6
  107. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.ts +1 -3
  108. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.ts +113 -31
  109. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.ts +101 -49
  110. package/src/domains/job/services/JobManifestService/JobManifestService.spec.ts +4 -41
  111. package/src/domains/job/services/JobManifestService/JobManifestService.ts +2 -8
  112. package/src/domains/job/services/JobStartQueueService/JobStartQueueService.defs.ts +27 -0
  113. package/src/domains/job/services/JobStartQueueService/JobStartQueueService.ts +42 -0
  114. package/src/domains/job/services/JobUploadService/JobUploadService.spec.ts +1 -1
  115. package/src/domains/job/services/JobUploadService/JobUploadService.ts +1 -1
  116. package/src/domains/job/services/JobUploadService/utils/manifestValidator.spec.ts +12 -25
  117. package/src/domains/job/services/JobUploadService/utils/manifestValidator.ts +2 -7
  118. package/src/domains/job/services/index.ts +2 -1
  119. package/src/domains/job/utils/SlackClient/SlackClient.spec.ts +0 -2
  120. package/src/domains/manifest/services/ManifestServiceForDev.spec.ts +1 -2
  121. package/src/domains/manifest/services/ManifestServiceForDev.ts +0 -4
  122. package/src/index.ts +1 -0
  123. package/src/jest-global-setup.ts +8 -4
  124. package/src/mocks/mockIoc.ts +18 -43
  125. package/src/utils/buildJobRunnerModule/buildJobRunnerModule.ts +81 -0
  126. package/src/utils/buildJobRunnerModule/buildJobRunnerModule.types.ts +13 -0
  127. package/src/utils/index.ts +2 -0
  128. package/lib/domains/job/S3Repository/S3Repository.d.ts +0 -15
  129. package/lib/domains/job/S3Repository/S3Repository.spec.d.ts +0 -5
  130. package/lib/domains/job/services/JobQueueService/JobQueueService.d.ts +0 -9
  131. package/lib/domains/job/services/JobQueueService/JobQueueService.defs.d.ts +0 -9
  132. package/src/custom-types.d.ts +0 -7
  133. package/src/domains/job/S3Repository/S3Repository.spec.ts +0 -50
  134. package/src/domains/job/S3Repository/S3Repository.ts +0 -27
  135. package/src/domains/job/services/JobQueueService/JobQueueService.defs.ts +0 -10
  136. package/src/domains/job/services/JobQueueService/JobQueueService.spec.ts +0 -190
  137. package/src/domains/job/services/JobQueueService/JobQueueService.ts +0 -60
@@ -3,13 +3,11 @@
3
3
  * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
4
  */
5
5
  import { AttributeValue, DynamoDBClient } from '@aws-sdk/client-dynamodb';
6
- import { PaginationInfo } from '../../core/pagination/model/PaginationInfo';
7
- import { PaginationQueryResponse } from '../../core/pagination/model/PaginationQueryResponse';
8
- import { CreateJobExecutionRequest, JobExecution, JobExecutionDto, ListJobExecutionParameters, UpdateJobExecutionParameters } from '../../model/JobExecution/JobExecution';
6
+ import { PaginationInfo, PaginationQueryResponse } from '../../core/pagination';
7
+ import { CreateJobExecutionRequest, JobExecution, JobExecutionDto, JobExecutionSk, ListJobExecutionParameters, UpdateJobExecutionParameters } from '../../model/JobExecution';
9
8
  import { Repository } from '../AbstractRepository';
10
- export declare class JobExecutionRepository extends Repository<JobExecution, JobExecutionDto> {
11
- protected dynamoDbClient: DynamoDBClient;
12
- constructor(dynamoDbClient: DynamoDBClient);
9
+ export declare class JobExecutionRepository extends Repository<JobExecution, JobExecutionDto, JobExecutionSk> {
10
+ constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant?: string);
13
11
  begin(createParams: CreateJobExecutionRequest): Promise<JobExecution>;
14
12
  /**
15
13
  * Get list of records from database.
@@ -25,28 +23,20 @@ export declare class JobExecutionRepository extends Repository<JobExecution, Job
25
23
  * @memberof Repository
26
24
  */
27
25
  getExecutions(paginationInfo: PaginationInfo, jobName: string): Promise<PaginationQueryResponse<JobExecution>>;
28
- /**
29
- * Get one record from database.
30
- * @abstract
31
- * @param {string} sk The sort key used to identify the record.
32
- * @returns {Promise<JobExecution | null>} The retrieved record.
33
- * @memberof Repository
34
- */
35
- findOne(sk: string, jobName?: string): Promise<JobExecution | null>;
36
26
  /**
37
27
  * Update record in database.
38
28
  * @param {string} sk The sort key used to identify the record.
39
29
  * @param {Partial<JobExecution>} input The (partial) record to update.
40
- * @param {string} jobName The name of the job used to identify the record as part of the pk.
41
30
  * @param {UpdateItemCommandInput} options Additional options for the update command.
42
31
  * @returns {Promise<JobExecution | null>} The updated record.
43
32
  * @memberof JobExecutionRepository
44
33
  */
45
- update(sk: string, input: UpdateJobExecutionParameters, jobName?: string, options?: {
34
+ update(sk: JobExecutionSk, input: UpdateJobExecutionParameters, options?: {
46
35
  ConditionExpression?: string;
47
36
  ExpressionAttributeValues?: Record<string, AttributeValue>;
48
37
  ExpressionAttributeNames?: Record<string, string>;
49
- }): Promise<JobExecution | null>;
38
+ }): Promise<JobExecution>;
39
+ buildSk(sk: JobExecutionSk): string;
50
40
  convertToDynamoDbItem(item: JobExecution): JobExecutionDto;
51
41
  convertToItem(dbItem: JobExecutionDto): JobExecution;
52
42
  }
@@ -2,4 +2,4 @@
2
2
  * @license
3
3
  * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
4
  */
5
- export {};
5
+ import 'aws-sdk-client-mock-jest';
@@ -0,0 +1,2 @@
1
+ import { JobExecution, JobExecutionDto } from '../../../../model/JobExecution';
2
+ export declare const convertDynamoDbItemToJobExecution: (dbItem: JobExecutionDto) => JobExecution;
@@ -0,0 +1 @@
1
+ export * from './convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution';
@@ -4,13 +4,12 @@
4
4
  */
5
5
  import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
6
6
  import { Repository } from '../AbstractRepository';
7
- import { JobManifest } from '../../manifest/JobManifestTypes';
8
- import { JobManifestDto, CreateJobManifestRequest } from '../../manifest';
9
- export declare class JobManifestRepository extends Repository<JobManifest, JobManifestDto> {
10
- protected dynamoDbClient: DynamoDBClient;
11
- constructor(dynamoDbClient: DynamoDBClient);
7
+ import { CreateJobManifestRequest, JobManifest, JobManifestDto, JobManifestSk, UpdateJobManifestRequest } from '../../manifest';
8
+ export declare class JobManifestRepository extends Repository<JobManifest, JobManifestDto, JobManifestSk> {
9
+ constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant: string);
12
10
  create(input: CreateJobManifestRequest): Promise<JobManifest>;
13
- update(sk: string, input: Partial<JobManifest>): Promise<JobManifest | null>;
11
+ update(sk: JobManifestSk, input: UpdateJobManifestRequest): Promise<JobManifest>;
14
12
  convertToDynamoDbItem(item: JobManifest): JobManifestDto;
15
13
  convertToItem(dbItem: JobManifestDto): JobManifest;
14
+ protected buildSk(sk: JobManifestSk): string;
16
15
  }
@@ -3,13 +3,11 @@
3
3
  * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
4
  */
5
5
  import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
6
- import { Repository } from '../../repository/AbstractRepository';
7
- import { CreateJobRequest, Job, JobDto, ListJobParameters } from '../../model/Job/Job';
8
- import { PaginationInfo } from '../../core/pagination/model/PaginationInfo';
9
- import { PaginationQueryResponse } from '../../core/pagination/model/PaginationQueryResponse';
10
- export declare class JobRepository extends Repository<Job, JobDto> {
11
- protected dynamoDbClient: DynamoDBClient;
12
- constructor(dynamoDbClient: DynamoDBClient);
6
+ import { Repository } from '../AbstractRepository';
7
+ import { CreateJobRequest, Job, JobDto, JobSk, ListJobParameters } from '../../model/Job';
8
+ import { PaginationInfo, PaginationQueryResponse } from '../../core/pagination';
9
+ export declare class JobRepository extends Repository<Job, JobDto, JobSk> {
10
+ constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant: string);
13
11
  create(input: CreateJobRequest): Promise<Job>;
14
12
  /**
15
13
  * Get list of records from database.
@@ -27,4 +25,5 @@ export declare class JobRepository extends Repository<Job, JobDto> {
27
25
  getJobs(paginationInfo: PaginationInfo): Promise<PaginationQueryResponse<Job>>;
28
26
  convertToDynamoDbItem(item: Job): JobDto;
29
27
  convertToItem(dbItem: JobDto): Job;
28
+ protected buildSk(sk: JobSk): string;
30
29
  }
@@ -0,0 +1,9 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { JobExecutionStatus } from '../../constants/JobExecutionStatus.constants';
3
+ import { JobExecutionsByTenant } from '../../model/JobExecution';
4
+ export declare class MultiTenantJobExecutionRepository {
5
+ private readonly dynamoDbClient;
6
+ private readonly tableName;
7
+ constructor(dynamoDbClient: DynamoDBClient, tableName: string);
8
+ findByStatus(status: JobExecutionStatus): Promise<JobExecutionsByTenant>;
9
+ }
@@ -2,4 +2,5 @@ export * from './JobContextRepository/JobContextRepository';
2
2
  export * from './JobExecutionRepository/JobExecutionRepository';
3
3
  export * from './JobManifestRepository/JobManifestRepository';
4
4
  export * from './JobRepository/JobRepository';
5
+ export * from './MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository';
5
6
  export * from './AbstractRepository';
@@ -5,15 +5,18 @@
5
5
  import { JobContextRepository } from '../../repository';
6
6
  import { PaginationFormattedResponse, PaginationInfo, PaginationService } from '../../core/pagination';
7
7
  import { CreateJobContextRequest, JobContext, UpdateJobContextRequest } from '../../model/JobContext';
8
+ import { Logger } from '@squiz/optimization-logger';
8
9
  export declare class JobContextService {
9
10
  protected jobContextRepository: JobContextRepository;
10
11
  protected paginationService: PaginationService<JobContext>;
11
- constructor(jobContextRepository: JobContextRepository, paginationService: PaginationService<JobContext>);
12
+ protected logger: Logger;
13
+ constructor(jobContextRepository: JobContextRepository, paginationService: PaginationService<JobContext>, logger: Logger);
12
14
  createJobContext(input: CreateJobContextRequest): Promise<JobContext>;
13
- updateJobContext(name: string, input: UpdateJobContextRequest): Promise<JobContext | null>;
15
+ updateJobContext(contextName: string, input: UpdateJobContextRequest): Promise<JobContext | null>;
14
16
  listAllJobContexts(): Promise<Array<JobContext>>;
15
17
  listJobContexts(paginationInfo: PaginationInfo): Promise<PaginationFormattedResponse<JobContext>>;
16
18
  private listContextsUpToLimit;
17
19
  findJobContext(contextName: string): Promise<JobContext | null>;
18
- deleteJobContext(contextName: string): Promise<void>;
20
+ deleteJobContext(context: JobContext): Promise<void>;
21
+ private logContextAction;
19
22
  }
@@ -3,19 +3,23 @@
3
3
  * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
4
  */
5
5
  import { ECSClient } from '@aws-sdk/client-ecs';
6
- import { ListRunningTasksParams, RunJobTaskParams } from './JobExecutionTaskService.defs';
7
- import { JobDetailsRepository, S3Repository } from '../../S3Repository';
8
- import { JobManifestService } from '../JobManifestService/JobManifestService';
6
+ import { JobDetailsRepository, JobUploadsRepository } from '../../S3Repository';
7
+ import { JobExecution } from '../../model/JobExecution';
8
+ import { JobExecutionRepository } from '../../repository';
9
9
  import { JobContextService } from '../JobContextService/JobContextService';
10
+ import { JobManifestService } from '../JobManifestService/JobManifestService';
11
+ import { HasReachedMaxTenantConcurrencyParams, RunJobTaskParams } from './JobExecutionTaskService.defs';
10
12
  export declare class JobExecutionTaskService {
11
13
  private readonly ecsClient;
12
14
  private readonly jobManifestService;
13
15
  private readonly jobContextService;
16
+ private readonly jobExecutionRepository;
14
17
  private readonly jobDetailsRepository;
15
18
  private readonly jobUploadRepository;
16
- constructor(ecsClient: ECSClient, jobManifestService: JobManifestService, jobContextService: JobContextService, jobDetailsRepository: JobDetailsRepository, jobUploadRepository: S3Repository);
17
- protected getTenantRunningTasks(params: ListRunningTasksParams): Promise<number>;
18
- hasReachedMaxTenantConcurrency(params: ListRunningTasksParams): Promise<boolean>;
19
+ constructor(ecsClient: ECSClient, jobManifestService: JobManifestService, jobContextService: JobContextService, jobExecutionRepository: JobExecutionRepository, jobDetailsRepository: JobDetailsRepository, jobUploadRepository: JobUploadsRepository);
20
+ hasReachedMaxTenantConcurrency(params: HasReachedMaxTenantConcurrencyParams): Promise<boolean>;
21
+ hasReachedMaxJobConcurrency(jobExecution: JobExecution): Promise<boolean>;
19
22
  runJobExecutionTask(params: RunJobTaskParams): Promise<string | undefined>;
23
+ private computeJobExecutionClientToken;
20
24
  private createJobDetailsFile;
21
25
  }
@@ -2,9 +2,7 @@ import { JobExecution } from '../../model/JobExecution';
2
2
  /**
3
3
  * The required parameters for retrieving the number of running ECS tasks
4
4
  */
5
- export interface ListRunningTasksParams {
6
- clusterArn: string;
7
- runtimeTaskFamily: string;
5
+ export interface HasReachedMaxTenantConcurrencyParams {
8
6
  maxTenantConcurrentTasks: number;
9
7
  }
10
8
  /**
@@ -11,5 +11,4 @@ export declare class JobManifestService {
11
11
  updateJobManifest(name: string, version: string, input: UpdateJobManifestRequest): Promise<JobManifest | null>;
12
12
  listAllJobManifests(): Promise<Array<JobManifest>>;
13
13
  findJobManifest(name: string, version: string): Promise<JobManifest | null>;
14
- deleteJobManifest(name: string): Promise<void>;
15
14
  }
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * @license
3
+ * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
+ */
5
+ import { SQSClient } from '@aws-sdk/client-sqs';
6
+ import { SendJobStartMessageParams } from './JobStartQueueService.defs';
7
+ export declare class JobStartQueueService {
8
+ private readonly sqsClient;
9
+ private readonly queueUrl;
10
+ constructor(sqsClient: SQSClient, queueUrl: string);
11
+ /**
12
+ * Sends a job start message to the SQS queue.
13
+ * Uses a standard queue (not FIFO) to support DelaySeconds for retry backoff.
14
+ * Duplicate job starts are prevented by ECS RunTask clientToken.
15
+ */
16
+ sendJobStartMessage(params: SendJobStartMessageParams): Promise<void>;
17
+ }
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * @license
3
+ * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
+ */
5
+ /**
6
+ * Message body for the job start queue.
7
+ */
8
+ export interface JobStartMessage {
9
+ /** The tenant ID */
10
+ tenantId: string;
11
+ /** The job execution ID to start */
12
+ executionId: string;
13
+ /** The job name */
14
+ jobName: string;
15
+ }
16
+ /**
17
+ * Parameters for sending a job start message.
18
+ */
19
+ export interface SendJobStartMessageParams {
20
+ tenantId: string;
21
+ executionId: string;
22
+ jobName: string;
23
+ /** Delay in seconds before the message becomes visible (0-900, max 15 minutes) */
24
+ delaySeconds?: number;
25
+ }
@@ -2,7 +2,6 @@
2
2
  * @license
3
3
  * Copyright Squiz Australia Pty Ltd. All Rights Reserved.
4
4
  */
5
- import { Logger } from '@squiz/dx-logger-lib';
6
5
  import { AxiosInstance } from 'axios';
7
6
  import { JobManifestV1 } from '../../../../manifest';
8
7
  /**
@@ -12,4 +11,4 @@ import { JobManifestV1 } from '../../../../manifest';
12
11
  * @param logger - Logger instance
13
12
  * @returns The validated manifest
14
13
  */
15
- export declare function getAndValidateManifest(apiClient: AxiosInstance, folderPath: string, logger: Logger): Promise<JobManifestV1>;
14
+ export declare function getAndValidateManifest(apiClient: AxiosInstance, folderPath: string): Promise<JobManifestV1>;
@@ -1,5 +1,6 @@
1
1
  export * from './JobContextService/JobContextService';
2
2
  export * from './JobExecutionTaskService/JobExecutionTaskService';
3
3
  export * from './JobManifestService/JobManifestService';
4
- export * from './JobQueueService/JobQueueService';
4
+ export * from './JobStartQueueService/JobStartQueueService';
5
+ export * from './JobStartQueueService/JobStartQueueService.defs';
5
6
  export * from './JobUploadService/JobUploadService';
@@ -1,11 +1,8 @@
1
1
  import { JobManifestModel } from '../ManifestModel';
2
2
  import { JobManifestV1 } from '../../job/manifest/JobManifestV1';
3
3
  import { JsonValidationService } from '@squiz/dx-json-schema-lib';
4
- import { Logger } from '@squiz/dx-logger-lib';
5
4
  export declare class ManifestServiceForDev {
6
- protected logger: Logger;
7
5
  protected jobValidationService: JsonValidationService;
8
- constructor(logger: Logger);
9
6
  protected getJobManifest(manifestModel: JobManifestModel, manifestPath: string): JobManifestV1;
10
7
  readJobManifest(manifestPath: string): Promise<JobManifestV1>;
11
8
  protected assertJobManifestMeetsSchemaVersion(manifest: JobManifestModel, schemaVersionRegex: RegExp): Promise<void>;
package/lib/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from './domains/manifest/ManifestModel';
2
2
  export * from './domains/component';
3
3
  export * from './domains/job';
4
4
  export * from './domains/manifest';
5
+ export * from './utils';