@lafken/schedule 0.11.19 → 0.12.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.
@@ -1,11 +1,11 @@
1
1
  import type { LambdaMetadata, ResourceOutputType, ScheduleReferenceNames } from '@lafken/common';
2
2
  type ScheduleExpressions = number | '*' | '?' | (string & {});
3
3
  /**
4
- * Attributes that can be exported from an EventBridge schedule rule resource.
4
+ * Attributes that can be exported from an EventBridge Scheduler resource.
5
5
  *
6
- * Based on Terraform `aws_cloudwatch_event_rule` attribute reference:
7
- * - `arn`: The Amazon Resource Name (ARN) of the rule.
8
- * - `id`: The name of the rule.
6
+ * Based on Terraform `aws_scheduler_schedule` attribute reference:
7
+ * - `arn`: The Amazon Resource Name (ARN) of the schedule.
8
+ * - `id`: The name of the schedule.
9
9
  */
10
10
  export type ScheduleOutputAttributes = 'arn' | 'id';
11
11
  export interface ScheduleTime {
@@ -45,12 +45,12 @@ export interface EventCronProps {
45
45
  */
46
46
  schedule: string | ScheduleTime;
47
47
  /**
48
- * Defines which EventBridge schedule rule attributes should be exported.
48
+ * Defines which EventBridge Scheduler attributes should be exported.
49
49
  *
50
- * Supported attributes are based on Terraform `aws_cloudwatch_event_rule`
50
+ * Supported attributes are based on Terraform `aws_scheduler_schedule`
51
51
  * attribute reference:
52
- * - `arn`: The Amazon Resource Name (ARN) of the rule.
53
- * - `id`: The name of the rule.
52
+ * - `arn`: The Amazon Resource Name (ARN) of the schedule.
53
+ * - `id`: The name of the schedule.
54
54
  *
55
55
  * Each selected attribute can be exported through SSM Parameter Store (`type: 'ssm'`)
56
56
  * or Terraform outputs (`type: 'output'`).
@@ -1,4 +1,4 @@
1
- import { CloudwatchEventRule } from '@cdktn/provider-aws/lib/cloudwatch-event-rule';
1
+ import { SchedulerSchedule } from '@cdktn/provider-aws/lib/scheduler-schedule';
2
2
  import { type AppModule } from '@lafken/resolver';
3
3
  import type { CronProps } from './cron.types';
4
4
  declare const Cron_base: (new (...args: any[]) => {
@@ -7,11 +7,9 @@ declare const Cron_base: (new (...args: any[]) => {
7
7
  readonly node: import("constructs").Node;
8
8
  with(...mixins: import("constructs").IMixin[]): import("constructs").IConstruct;
9
9
  toString(): string;
10
- }) & typeof CloudwatchEventRule;
10
+ }) & typeof SchedulerSchedule;
11
11
  export declare class Cron extends Cron_base {
12
- private props;
13
12
  constructor(scope: AppModule, id: string, props: CronProps);
14
- addEventTarget(id: string): void;
15
13
  private static buildScheduleExpression;
16
14
  }
17
15
  export {};
@@ -1,44 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Cron = void 0;
4
- const cloudwatch_event_rule_1 = require("@cdktn/provider-aws/lib/cloudwatch-event-rule");
5
- const cloudwatch_event_target_1 = require("@cdktn/provider-aws/lib/cloudwatch-event-target");
4
+ const scheduler_schedule_1 = require("@cdktn/provider-aws/lib/scheduler-schedule");
6
5
  const resolver_1 = require("@lafken/resolver");
7
- class Cron extends resolver_1.lafkenResource.make(cloudwatch_event_rule_1.CloudwatchEventRule) {
8
- props;
6
+ class Cron extends resolver_1.lafkenResource.make(scheduler_schedule_1.SchedulerSchedule) {
9
7
  constructor(scope, id, props) {
10
- const { handler } = props;
11
- super(scope, `${handler.name}-cron`, {
12
- name: handler.name,
13
- scheduleExpression: Cron.buildScheduleExpression(handler.schedule),
14
- });
15
- this.props = props;
16
- if (props.handler.ref) {
17
- this.register('schedule', props.handler.ref);
18
- }
19
- this.addEventTarget(id);
20
- new resolver_1.ResourceOutput(this, handler.outputs);
21
- }
22
- addEventTarget(id) {
23
- const { handler, resourceMetadata } = this.props;
24
- const lambdaHandler = new resolver_1.LambdaHandler(this, `${handler.name}-${resourceMetadata.name}`, {
8
+ const { handler, resourceMetadata } = props;
9
+ const lambdaHandler = new resolver_1.LambdaHandler(scope, id, {
25
10
  ...handler,
26
11
  originalName: resourceMetadata.originalName,
27
12
  filename: resourceMetadata.filename,
28
13
  foldername: resourceMetadata.foldername,
29
14
  suffix: 'event',
30
- principal: 'events.amazonaws.com',
31
- sourceArn: this.arn,
15
+ principal: 'scheduler.amazonaws.com',
32
16
  });
33
- new cloudwatch_event_target_1.CloudwatchEventTarget(this, `${id}-event-target`, {
34
- rule: this.name,
35
- arn: lambdaHandler.arn,
36
- retryPolicy: {
37
- maximumRetryAttempts: handler.retryAttempts,
38
- maximumEventAgeInSeconds: handler.maxEventAge,
17
+ const schedulerRole = new resolver_1.Role(scope, `${handler.name}-scheduler-role`, {
18
+ name: `${handler.name}-scheduler`,
19
+ principal: 'scheduler.amazonaws.com',
20
+ services: ['lambda'],
21
+ });
22
+ super(scope, `${handler.name}-cron`, {
23
+ name: handler.name,
24
+ scheduleExpression: Cron.buildScheduleExpression(handler.schedule),
25
+ flexibleTimeWindow: { mode: 'OFF' },
26
+ target: {
27
+ arn: lambdaHandler.arn,
28
+ roleArn: schedulerRole.arn,
29
+ retryPolicy: {
30
+ maximumRetryAttempts: handler.retryAttempts,
31
+ maximumEventAgeInSeconds: handler.maxEventAge,
32
+ },
39
33
  },
40
- dependsOn: [lambdaHandler],
41
34
  });
35
+ if (handler.ref) {
36
+ this.register('schedule', handler.ref);
37
+ }
38
+ new resolver_1.ResourceOutput(this, handler.outputs);
42
39
  }
43
40
  static buildScheduleExpression(schedule) {
44
41
  if (typeof schedule === 'string') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lafken/schedule",
3
- "version": "0.11.19",
3
+ "version": "0.12.0",
4
4
  "private": false,
5
5
  "description": "Define EventBridge scheduled rules and cron jobs using TypeScript decorators with Lafken",
6
6
  "keywords": [
@@ -50,20 +50,20 @@
50
50
  ],
51
51
  "dependencies": {
52
52
  "reflect-metadata": "^0.2.2",
53
- "@lafken/resolver": "0.11.19"
53
+ "@lafken/resolver": "0.12.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@cdktn/provider-aws": "^23.9.0",
57
- "@swc/core": "^1.15.30",
56
+ "@cdktn/provider-aws": "^24.0.0",
57
+ "@swc/core": "^1.15.33",
58
58
  "@swc/helpers": "^0.5.21",
59
59
  "@vitest/runner": "^4.1.5",
60
- "cdktn": "^0.22.1",
60
+ "cdktn": "^0.23.0",
61
61
  "cdktn-vitest": "^1.0.0",
62
62
  "constructs": "^10.6.0",
63
63
  "typescript": "6.0.3",
64
64
  "unplugin-swc": "^1.5.9",
65
65
  "vitest": "^4.1.5",
66
- "@lafken/common": "0.11.19"
66
+ "@lafken/common": "0.12.0"
67
67
  },
68
68
  "peerDependencies": {
69
69
  "@cdktn/provider-aws": ">=23.0.0",