@gradientedge/cdk-utils 8.136.0 → 8.138.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,12 @@
1
1
  import { TerraformStack } from 'cdktf';
2
2
  import { Construct } from 'constructs';
3
- import { CloudflareZoneManager } from '../services';
3
+ import { CloudflareWorkerManager, CloudflareZoneManager } from '../services';
4
4
  import { CommonCloudflareStackProps } from './types';
5
5
  export declare class CommonCloudflareConstruct extends TerraformStack {
6
6
  props: CommonCloudflareStackProps;
7
7
  id: string;
8
8
  fullyQualifiedDomainName: string;
9
+ workerManager: CloudflareWorkerManager;
9
10
  zoneManager: CloudflareZoneManager;
10
11
  constructor(scope: Construct, id: string, props: CommonCloudflareStackProps);
11
12
  /**
@@ -8,12 +8,14 @@ const services_1 = require("../services");
8
8
  class CommonCloudflareConstruct extends cdktf_1.TerraformStack {
9
9
  id;
10
10
  fullyQualifiedDomainName;
11
+ workerManager;
11
12
  zoneManager;
12
13
  constructor(scope, id, props) {
13
14
  super(scope, id);
14
15
  this.props = props;
15
16
  this.id = id;
16
17
  this.zoneManager = new services_1.CloudflareZoneManager();
18
+ this.workerManager = new services_1.CloudflareWorkerManager();
17
19
  this.determineFullyQualifiedDomain();
18
20
  new provider_1.CloudflareProvider(this, `${this.id}-provider`, this.props);
19
21
  }
@@ -1 +1,2 @@
1
+ export * from './worker';
1
2
  export * from './zone';
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./worker"), exports);
17
18
  __exportStar(require("./zone"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './main';
2
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./main"), exports);
18
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,75 @@
1
+ import { WorkerDomain } from '@cdktf/provider-cloudflare/lib/worker-domain';
2
+ import { WorkerRoute } from '@cdktf/provider-cloudflare/lib/worker-route';
3
+ import { WorkerScript } from '@cdktf/provider-cloudflare/lib/worker-script';
4
+ import { CommonCloudflareConstruct } from '../../common';
5
+ import { WorkerCronTriggerProps, WorkerDomainProps, WorkerRouteProps, WorkerScriptProps, WorkersKvNamespaceProps, WorkersKvProps } from './types';
6
+ import { WorkersKvNamespace } from '@cdktf/provider-cloudflare/lib/workers-kv-namespace';
7
+ import { WorkersKv } from '@cdktf/provider-cloudflare/lib/workers-kv';
8
+ import { WorkerCronTrigger } from '@cdktf/provider-cloudflare/lib/worker-cron-trigger';
9
+ /**
10
+ * @classdesc Provides operations on Cloudflare Worker
11
+ * - A new instance of this class is injected into {@link CommonCloudflareConstruct} constructor.
12
+ * - If a custom construct extends {@link CommonCloudflareConstruct}, an instance is available within the context.
13
+ * @example
14
+ * ```
15
+ * import { CommonCloudflareConstruct, CommonCloudflareConstruct } from '@gradientedge/cdk-utils'
16
+ *
17
+ * class CustomConstruct extends CommonCloudflareConstruct {
18
+ * constructor(parent: Construct, id: string, props: CommonCloudflareStackProps) {
19
+ * super(parent, id, props)
20
+ * this.props = props
21
+ * this.workerManager.createWorkerDomain('MyWorkerDomain', this, props)
22
+ * }
23
+ * }
24
+ * ```
25
+ */
26
+ export declare class CloudflareWorkerManager {
27
+ /**
28
+ * @summary Method to create a new Cloudflare Worker Domain
29
+ * @param id scoped id of the resource
30
+ * @param scope scope in which this resource is defined
31
+ * @param props worker domain properties
32
+ * @see [CDKTF Worker Domain Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerDomain.typescript.md}
33
+ */
34
+ createWorkerDomain(id: string, scope: CommonCloudflareConstruct, props: WorkerDomainProps): WorkerDomain;
35
+ /**
36
+ * @summary Method to create a new Cloudflare Worker Route
37
+ * @param id scoped id of the resource
38
+ * @param scope scope in which this resource is defined
39
+ * @param props worker route properties
40
+ * @see [CDKTF Worker Route Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerRoute.typescript.md}
41
+ */
42
+ createWorkerRoute(id: string, scope: CommonCloudflareConstruct, props: WorkerRouteProps): WorkerRoute;
43
+ /**
44
+ * @summary Method to create a new Cloudflare Worker Script
45
+ * @param id scoped id of the resource
46
+ * @param scope scope in which this resource is defined
47
+ * @param props worker script properties
48
+ * @see [CDKTF Worker Script Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerScript.typescript.md}
49
+ */
50
+ createWorkerScript(id: string, scope: CommonCloudflareConstruct, props: WorkerScriptProps): WorkerScript;
51
+ /**
52
+ * @summary Method to create a new Cloudflare Workers KV Namespace
53
+ * @param id scoped id of the resource
54
+ * @param scope scope in which this resource is defined
55
+ * @param props workers kv namespace properties
56
+ * @see [CDKTF Workers KV Namespace Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKvNamespace.typescript.md}
57
+ */
58
+ createWorkersKvNamespace(id: string, scope: CommonCloudflareConstruct, props: WorkersKvNamespaceProps): WorkersKvNamespace;
59
+ /**
60
+ * @summary Method to create a new Cloudflare Workers KV
61
+ * @param id scoped id of the resource
62
+ * @param scope scope in which this resource is defined
63
+ * @param props workers kv properties
64
+ * @see [CDKTF Workers KV Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKv.typescript.md}
65
+ */
66
+ createWorkersKv(id: string, scope: CommonCloudflareConstruct, props: WorkersKvProps): WorkersKv;
67
+ /**
68
+ * @summary Method to create a new Cloudflare Worker Cron Trigger
69
+ * @param id scoped id of the resource
70
+ * @param scope scope in which this resource is defined
71
+ * @param props workers cron trigger properties
72
+ * @see [CDKTF Workers Cron Trigger Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerCronTrigger.typescript.md}
73
+ */
74
+ createWorkerCronTrigger(id: string, scope: CommonCloudflareConstruct, props: WorkerCronTriggerProps): WorkerCronTrigger;
75
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudflareWorkerManager = void 0;
4
+ const worker_domain_1 = require("@cdktf/provider-cloudflare/lib/worker-domain");
5
+ const worker_route_1 = require("@cdktf/provider-cloudflare/lib/worker-route");
6
+ const worker_script_1 = require("@cdktf/provider-cloudflare/lib/worker-script");
7
+ const utils_1 = require("../../utils");
8
+ const workers_kv_namespace_1 = require("@cdktf/provider-cloudflare/lib/workers-kv-namespace");
9
+ const workers_kv_1 = require("@cdktf/provider-cloudflare/lib/workers-kv");
10
+ const worker_cron_trigger_1 = require("@cdktf/provider-cloudflare/lib/worker-cron-trigger");
11
+ /**
12
+ * @classdesc Provides operations on Cloudflare Worker
13
+ * - A new instance of this class is injected into {@link CommonCloudflareConstruct} constructor.
14
+ * - If a custom construct extends {@link CommonCloudflareConstruct}, an instance is available within the context.
15
+ * @example
16
+ * ```
17
+ * import { CommonCloudflareConstruct, CommonCloudflareConstruct } from '@gradientedge/cdk-utils'
18
+ *
19
+ * class CustomConstruct extends CommonCloudflareConstruct {
20
+ * constructor(parent: Construct, id: string, props: CommonCloudflareStackProps) {
21
+ * super(parent, id, props)
22
+ * this.props = props
23
+ * this.workerManager.createWorkerDomain('MyWorkerDomain', this, props)
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ class CloudflareWorkerManager {
29
+ /**
30
+ * @summary Method to create a new Cloudflare Worker Domain
31
+ * @param id scoped id of the resource
32
+ * @param scope scope in which this resource is defined
33
+ * @param props worker domain properties
34
+ * @see [CDKTF Worker Domain Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerDomain.typescript.md}
35
+ */
36
+ createWorkerDomain(id, scope, props) {
37
+ if (!props)
38
+ throw `Props undefined for ${id}`;
39
+ const zoneId = props.zoneId
40
+ ? props.zoneId
41
+ : scope.zoneManager.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
42
+ const workerDomain = new worker_domain_1.WorkerDomain(scope, `${id}`, {
43
+ ...props,
44
+ accountId: props.accountId ?? scope.props.accountId,
45
+ zoneId,
46
+ });
47
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerDomainFriendlyUniqueId`, scope, workerDomain.friendlyUniqueId);
48
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerDomainId`, scope, workerDomain.id);
49
+ return workerDomain;
50
+ }
51
+ /**
52
+ * @summary Method to create a new Cloudflare Worker Route
53
+ * @param id scoped id of the resource
54
+ * @param scope scope in which this resource is defined
55
+ * @param props worker route properties
56
+ * @see [CDKTF Worker Route Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerRoute.typescript.md}
57
+ */
58
+ createWorkerRoute(id, scope, props) {
59
+ if (!props)
60
+ throw `Props undefined for ${id}`;
61
+ const zoneId = props.zoneId
62
+ ? props.zoneId
63
+ : scope.zoneManager.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
64
+ const workerRoute = new worker_route_1.WorkerRoute(scope, `${id}`, {
65
+ ...props,
66
+ scriptName: `${props.scriptName}-${scope.props.stage}`,
67
+ zoneId,
68
+ });
69
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerRouteFriendlyUniqueId`, scope, workerRoute.friendlyUniqueId);
70
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerRouteId`, scope, workerRoute.id);
71
+ return workerRoute;
72
+ }
73
+ /**
74
+ * @summary Method to create a new Cloudflare Worker Script
75
+ * @param id scoped id of the resource
76
+ * @param scope scope in which this resource is defined
77
+ * @param props worker script properties
78
+ * @see [CDKTF Worker Script Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerScript.typescript.md}
79
+ */
80
+ createWorkerScript(id, scope, props) {
81
+ if (!props)
82
+ throw `Props undefined for ${id}`;
83
+ const workerScript = new worker_script_1.WorkerScript(scope, `${id}`, {
84
+ ...props,
85
+ accountId: props.accountId ?? scope.props.accountId,
86
+ name: `${props.name}-${scope.props.stage}`,
87
+ });
88
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerScriptFriendlyUniqueId`, scope, workerScript.friendlyUniqueId);
89
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerScriptId`, scope, workerScript.id);
90
+ return workerScript;
91
+ }
92
+ /**
93
+ * @summary Method to create a new Cloudflare Workers KV Namespace
94
+ * @param id scoped id of the resource
95
+ * @param scope scope in which this resource is defined
96
+ * @param props workers kv namespace properties
97
+ * @see [CDKTF Workers KV Namespace Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKvNamespace.typescript.md}
98
+ */
99
+ createWorkersKvNamespace(id, scope, props) {
100
+ if (!props)
101
+ throw `Props undefined for ${id}`;
102
+ const workersKvNamespace = new workers_kv_namespace_1.WorkersKvNamespace(scope, `${id}`, {
103
+ ...props,
104
+ accountId: props.accountId ?? scope.props.accountId,
105
+ title: scope.isProductionStage() ? props.title : `${props.title}-${scope.props.stage}`,
106
+ });
107
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workersKvNamespaceFriendlyUniqueId`, scope, workersKvNamespace.friendlyUniqueId);
108
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workersKvNamespaceId`, scope, workersKvNamespace.id);
109
+ return workersKvNamespace;
110
+ }
111
+ /**
112
+ * @summary Method to create a new Cloudflare Workers KV
113
+ * @param id scoped id of the resource
114
+ * @param scope scope in which this resource is defined
115
+ * @param props workers kv properties
116
+ * @see [CDKTF Workers KV Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKv.typescript.md}
117
+ */
118
+ createWorkersKv(id, scope, props) {
119
+ if (!props)
120
+ throw `Props undefined for ${id}`;
121
+ const workersKv = new workers_kv_1.WorkersKv(scope, `${id}`, {
122
+ ...props,
123
+ accountId: props.accountId ?? scope.props.accountId,
124
+ });
125
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workersKvFriendlyUniqueId`, scope, workersKv.friendlyUniqueId);
126
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workersKvId`, scope, workersKv.id);
127
+ return workersKv;
128
+ }
129
+ /**
130
+ * @summary Method to create a new Cloudflare Worker Cron Trigger
131
+ * @param id scoped id of the resource
132
+ * @param scope scope in which this resource is defined
133
+ * @param props workers cron trigger properties
134
+ * @see [CDKTF Workers Cron Trigger Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerCronTrigger.typescript.md}
135
+ */
136
+ createWorkerCronTrigger(id, scope, props) {
137
+ if (!props)
138
+ throw `Props undefined for ${id}`;
139
+ const workerCronTrigger = new worker_cron_trigger_1.WorkerCronTrigger(scope, `${id}`, {
140
+ ...props,
141
+ accountId: props.accountId ?? scope.props.accountId,
142
+ });
143
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerCronTriggerFriendlyUniqueId`, scope, workerCronTrigger.friendlyUniqueId);
144
+ (0, utils_1.createCloudflareTfOutput)(`${id}-workerCronTriggerId`, scope, workerCronTrigger.id);
145
+ return workerCronTrigger;
146
+ }
147
+ }
148
+ exports.CloudflareWorkerManager = CloudflareWorkerManager;
@@ -0,0 +1,18 @@
1
+ import { WorkerCronTriggerConfig } from '@cdktf/provider-cloudflare/lib/worker-cron-trigger';
2
+ import { WorkerDomainConfig } from '@cdktf/provider-cloudflare/lib/worker-domain';
3
+ import { WorkerRouteConfig } from '@cdktf/provider-cloudflare/lib/worker-route';
4
+ import { WorkerScriptConfig } from '@cdktf/provider-cloudflare/lib/worker-script';
5
+ import { WorkersKvConfig } from '@cdktf/provider-cloudflare/lib/workers-kv';
6
+ import { WorkersKvNamespaceConfig } from '@cdktf/provider-cloudflare/lib/workers-kv-namespace';
7
+ export interface WorkerDomainProps extends WorkerDomainConfig {
8
+ }
9
+ export interface WorkerRouteProps extends WorkerRouteConfig {
10
+ }
11
+ export interface WorkerScriptProps extends WorkerScriptConfig {
12
+ }
13
+ export interface WorkersKvNamespaceProps extends WorkersKvNamespaceConfig {
14
+ }
15
+ export interface WorkersKvProps extends WorkersKvConfig {
16
+ }
17
+ export interface WorkerCronTriggerProps extends WorkerCronTriggerConfig {
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,13 @@
1
- import { ZoneProps } from './types';
1
+ import { DataCloudflareZone } from '@cdktf/provider-cloudflare/lib/data-cloudflare-zone';
2
+ import { Zone } from '@cdktf/provider-cloudflare/lib/zone';
3
+ import { ZoneCacheReserve } from '@cdktf/provider-cloudflare/lib/zone-cache-reserve';
4
+ import { ZoneCacheVariants } from '@cdktf/provider-cloudflare/lib/zone-cache-variants';
5
+ import { ZoneDnssec } from '@cdktf/provider-cloudflare/lib/zone-dnssec';
6
+ import { ZoneHold } from '@cdktf/provider-cloudflare/lib/zone-hold';
7
+ import { ZoneLockdown } from '@cdktf/provider-cloudflare/lib/zone-lockdown';
8
+ import { ZoneSettingsOverride } from '@cdktf/provider-cloudflare/lib/zone-settings-override';
2
9
  import { CommonCloudflareConstruct } from '../../common';
10
+ import { ZoneCacheReserveProps, ZoneCacheVariantsProps, ZoneDnssecProps, ZoneHoldProps, ZoneLockdownProps, ZoneOptions, ZoneProps, ZoneSettingsOverrideProps } from './types';
3
11
  /**
4
12
  * @classdesc Provides operations on Cloudflare Zone
5
13
  * - A new instance of this class is injected into {@link CommonCloudflareConstruct} constructor.
@@ -25,5 +33,54 @@ export declare class CloudflareZoneManager {
25
33
  * @param props zone properties
26
34
  * @see [CDKTF Zone Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zone.typescript.md}
27
35
  */
28
- createZone(id: string, scope: CommonCloudflareConstruct, props: ZoneProps): void;
36
+ createZone(id: string, scope: CommonCloudflareConstruct, props: ZoneProps): Zone;
37
+ resolveZone(id: string, scope: CommonCloudflareConstruct, options: ZoneOptions): DataCloudflareZone;
38
+ /**
39
+ * @summary Method to create a new zone cache reserve
40
+ * @param id scoped id of the resource
41
+ * @param scope scope in which this resource is defined
42
+ * @param props zone cache reserve properties
43
+ * @see [CDKTF Zone Cache Reserve Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheReserve.typescript.md}
44
+ */
45
+ createZoneCacheReserve(id: string, scope: CommonCloudflareConstruct, props: ZoneCacheReserveProps): ZoneCacheReserve;
46
+ /**
47
+ * @summary Method to create a new zone cache variants
48
+ * @param id scoped id of the resource
49
+ * @param scope scope in which this resource is defined
50
+ * @param props zone cache variants properties
51
+ * @see [CDKTF Zone Cache Variants Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheVariants.typescript.md}
52
+ */
53
+ createZoneCacheVariants(id: string, scope: CommonCloudflareConstruct, props: ZoneCacheVariantsProps): ZoneCacheVariants;
54
+ /**
55
+ * @summary Method to create a new zone dnssec
56
+ * @param id scoped id of the resource
57
+ * @param scope scope in which this resource is defined
58
+ * @param props zone dnssec properties
59
+ * @see [CDKTF Zone DNS Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneDnssec.typescript.md}
60
+ */
61
+ createZoneDnssec(id: string, scope: CommonCloudflareConstruct, props: ZoneDnssecProps): ZoneDnssec;
62
+ /**
63
+ * @summary Method to create a new zone hold
64
+ * @param id scoped id of the resource
65
+ * @param scope scope in which this resource is defined
66
+ * @param props zone hold properties
67
+ * @see [CDKTF Zone Hold Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneHold.typescript.md}
68
+ */
69
+ createZoneHold(id: string, scope: CommonCloudflareConstruct, props: ZoneHoldProps): ZoneHold;
70
+ /**
71
+ * @summary Method to create a new zone lockdown
72
+ * @param id scoped id of the resource
73
+ * @param scope scope in which this resource is defined
74
+ * @param props zone lockdown properties
75
+ * @see [CDKTF Zone Lockdown Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneLockdown.typescript.md}
76
+ */
77
+ createZoneLockdown(id: string, scope: CommonCloudflareConstruct, props: ZoneLockdownProps): ZoneLockdown;
78
+ /**
79
+ * @summary Method to create a new zone settings override
80
+ * @param id scoped id of the resource
81
+ * @param scope scope in which this resource is defined
82
+ * @param props zone settings override properties
83
+ * @see [CDKTF Zone Settings Override Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneSettingsOverride.typescript.md}
84
+ */
85
+ createZoneSettingsOverride(id: string, scope: CommonCloudflareConstruct, props: ZoneSettingsOverrideProps): ZoneSettingsOverride;
29
86
  }
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CloudflareZoneManager = void 0;
4
+ const data_cloudflare_zone_1 = require("@cdktf/provider-cloudflare/lib/data-cloudflare-zone");
4
5
  const zone_1 = require("@cdktf/provider-cloudflare/lib/zone");
6
+ const zone_cache_reserve_1 = require("@cdktf/provider-cloudflare/lib/zone-cache-reserve");
7
+ const zone_cache_variants_1 = require("@cdktf/provider-cloudflare/lib/zone-cache-variants");
8
+ const zone_dnssec_1 = require("@cdktf/provider-cloudflare/lib/zone-dnssec");
9
+ const zone_hold_1 = require("@cdktf/provider-cloudflare/lib/zone-hold");
10
+ const zone_lockdown_1 = require("@cdktf/provider-cloudflare/lib/zone-lockdown");
11
+ const zone_settings_override_1 = require("@cdktf/provider-cloudflare/lib/zone-settings-override");
5
12
  const utils_1 = require("../../utils");
6
13
  /**
7
14
  * @classdesc Provides operations on Cloudflare Zone
@@ -39,6 +46,143 @@ class CloudflareZoneManager {
39
46
  (0, utils_1.createCloudflareTfOutput)(`${id}-zoneName`, scope, zone.zone);
40
47
  (0, utils_1.createCloudflareTfOutput)(`${id}-zoneFriendlyUniqueId`, scope, zone.friendlyUniqueId);
41
48
  (0, utils_1.createCloudflareTfOutput)(`${id}-zoneId`, scope, zone.id);
49
+ return zone;
50
+ }
51
+ resolveZone(id, scope, options) {
52
+ if (!options)
53
+ throw `Options undefined for ${id}`;
54
+ const zone = new data_cloudflare_zone_1.DataCloudflareZone(scope, `${id}-data-zone`, {
55
+ accountId: scope.props.accountId,
56
+ name: options.name ?? scope.props.domainName,
57
+ zoneId: options.id,
58
+ });
59
+ return zone;
60
+ }
61
+ /**
62
+ * @summary Method to create a new zone cache reserve
63
+ * @param id scoped id of the resource
64
+ * @param scope scope in which this resource is defined
65
+ * @param props zone cache reserve properties
66
+ * @see [CDKTF Zone Cache Reserve Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheReserve.typescript.md}
67
+ */
68
+ createZoneCacheReserve(id, scope, props) {
69
+ if (!props)
70
+ throw `Props undefined for ${id}`;
71
+ const zoneId = props.zoneId
72
+ ? props.zoneId
73
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
74
+ const zoneCacheReserve = new zone_cache_reserve_1.ZoneCacheReserve(scope, `${id}`, {
75
+ ...props,
76
+ zoneId,
77
+ });
78
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneCacheReserveFriendlyUniqueId`, scope, zoneCacheReserve.friendlyUniqueId);
79
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneCacheReserveId`, scope, zoneCacheReserve.id);
80
+ return zoneCacheReserve;
81
+ }
82
+ /**
83
+ * @summary Method to create a new zone cache variants
84
+ * @param id scoped id of the resource
85
+ * @param scope scope in which this resource is defined
86
+ * @param props zone cache variants properties
87
+ * @see [CDKTF Zone Cache Variants Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheVariants.typescript.md}
88
+ */
89
+ createZoneCacheVariants(id, scope, props) {
90
+ if (!props)
91
+ throw `Props undefined for ${id}`;
92
+ const zoneId = props.zoneId
93
+ ? props.zoneId
94
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
95
+ const zoneCacheVariants = new zone_cache_variants_1.ZoneCacheVariants(scope, `${id}`, {
96
+ ...props,
97
+ zoneId,
98
+ });
99
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneCacheVariantsFriendlyUniqueId`, scope, zoneCacheVariants.friendlyUniqueId);
100
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneCacheVariantsId`, scope, zoneCacheVariants.id);
101
+ return zoneCacheVariants;
102
+ }
103
+ /**
104
+ * @summary Method to create a new zone dnssec
105
+ * @param id scoped id of the resource
106
+ * @param scope scope in which this resource is defined
107
+ * @param props zone dnssec properties
108
+ * @see [CDKTF Zone DNS Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneDnssec.typescript.md}
109
+ */
110
+ createZoneDnssec(id, scope, props) {
111
+ if (!props)
112
+ throw `Props undefined for ${id}`;
113
+ const zoneId = props.zoneId
114
+ ? props.zoneId
115
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
116
+ const zoneDnssec = new zone_dnssec_1.ZoneDnssec(scope, `${id}`, {
117
+ ...props,
118
+ zoneId,
119
+ });
120
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneDnssecFriendlyUniqueId`, scope, zoneDnssec.friendlyUniqueId);
121
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneDnssecId`, scope, zoneDnssec.id);
122
+ return zoneDnssec;
123
+ }
124
+ /**
125
+ * @summary Method to create a new zone hold
126
+ * @param id scoped id of the resource
127
+ * @param scope scope in which this resource is defined
128
+ * @param props zone hold properties
129
+ * @see [CDKTF Zone Hold Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneHold.typescript.md}
130
+ */
131
+ createZoneHold(id, scope, props) {
132
+ if (!props)
133
+ throw `Props undefined for ${id}`;
134
+ const zoneId = props.zoneId
135
+ ? props.zoneId
136
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
137
+ const zoneHold = new zone_hold_1.ZoneHold(scope, `${id}`, {
138
+ ...props,
139
+ zoneId,
140
+ });
141
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneHoldFriendlyUniqueId`, scope, zoneHold.friendlyUniqueId);
142
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneHoldId`, scope, zoneHold.id);
143
+ return zoneHold;
144
+ }
145
+ /**
146
+ * @summary Method to create a new zone lockdown
147
+ * @param id scoped id of the resource
148
+ * @param scope scope in which this resource is defined
149
+ * @param props zone lockdown properties
150
+ * @see [CDKTF Zone Lockdown Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneLockdown.typescript.md}
151
+ */
152
+ createZoneLockdown(id, scope, props) {
153
+ if (!props)
154
+ throw `Props undefined for ${id}`;
155
+ const zoneId = props.zoneId
156
+ ? props.zoneId
157
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
158
+ const zoneLockdown = new zone_lockdown_1.ZoneLockdown(scope, `${id}`, {
159
+ ...props,
160
+ zoneId,
161
+ });
162
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneLockdownFriendlyUniqueId`, scope, zoneLockdown.friendlyUniqueId);
163
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneLockdownId`, scope, zoneLockdown.id);
164
+ return zoneLockdown;
165
+ }
166
+ /**
167
+ * @summary Method to create a new zone settings override
168
+ * @param id scoped id of the resource
169
+ * @param scope scope in which this resource is defined
170
+ * @param props zone settings override properties
171
+ * @see [CDKTF Zone Settings Override Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneSettingsOverride.typescript.md}
172
+ */
173
+ createZoneSettingsOverride(id, scope, props) {
174
+ if (!props)
175
+ throw `Props undefined for ${id}`;
176
+ const zoneId = props.zoneId
177
+ ? props.zoneId
178
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id;
179
+ const zoneSettingsOverride = new zone_settings_override_1.ZoneSettingsOverride(scope, `${id}`, {
180
+ ...props,
181
+ zoneId,
182
+ });
183
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneSettingsOverrideFriendlyUniqueId`, scope, zoneSettingsOverride.friendlyUniqueId);
184
+ (0, utils_1.createCloudflareTfOutput)(`${id}-zoneSettingsOverrideId`, scope, zoneSettingsOverride.id);
185
+ return zoneSettingsOverride;
42
186
  }
43
187
  }
44
188
  exports.CloudflareZoneManager = CloudflareZoneManager;
@@ -1,3 +1,25 @@
1
1
  import { ZoneConfig } from '@cdktf/provider-cloudflare/lib/zone';
2
+ import { ZoneCacheReserveConfig } from '@cdktf/provider-cloudflare/lib/zone-cache-reserve';
3
+ import { ZoneCacheVariantsConfig } from '@cdktf/provider-cloudflare/lib/zone-cache-variants';
4
+ import { ZoneDnssecConfig } from '@cdktf/provider-cloudflare/lib/zone-dnssec';
5
+ import { ZoneHoldConfig } from '@cdktf/provider-cloudflare/lib/zone-hold';
6
+ import { ZoneLockdownConfig } from '@cdktf/provider-cloudflare/lib/zone-lockdown';
7
+ import { ZoneSettingsOverrideConfig } from '@cdktf/provider-cloudflare/lib/zone-settings-override';
2
8
  export interface ZoneProps extends ZoneConfig {
3
9
  }
10
+ export interface ZoneOptions {
11
+ id?: string;
12
+ name?: string;
13
+ }
14
+ export interface ZoneCacheReserveProps extends ZoneCacheReserveConfig {
15
+ }
16
+ export interface ZoneCacheVariantsProps extends ZoneCacheVariantsConfig {
17
+ }
18
+ export interface ZoneDnssecProps extends ZoneDnssecConfig {
19
+ }
20
+ export interface ZoneHoldProps extends ZoneHoldConfig {
21
+ }
22
+ export interface ZoneLockdownProps extends ZoneLockdownConfig {
23
+ }
24
+ export interface ZoneSettingsOverrideProps extends ZoneSettingsOverrideConfig {
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradientedge/cdk-utils",
3
- "version": "8.136.0",
3
+ "version": "8.138.0",
4
4
  "description": "Utilities for AWS CDK provisioning",
5
5
  "main": "dist/index.js",
6
6
  "engines": {
@@ -47,16 +47,16 @@
47
47
  }
48
48
  },
49
49
  "dependencies": {
50
- "@aws-sdk/client-secrets-manager": "^3.449.0",
51
- "@aws-sdk/credential-providers": "^3.449.0",
52
- "@aws-sdk/types": "^3.449.0",
53
- "@cdktf/provider-azurerm": "^11.0.4",
50
+ "@aws-sdk/client-secrets-manager": "^3.454.0",
51
+ "@aws-sdk/credential-providers": "^3.454.0",
52
+ "@aws-sdk/types": "^3.451.0",
53
+ "@cdktf/provider-azurerm": "^11.0.5",
54
54
  "@cdktf/provider-cloudflare": "^10.0.3",
55
55
  "@types/lodash": "^4.14.201",
56
- "@types/node": "^20.9.0",
56
+ "@types/node": "^20.9.2",
57
57
  "@types/uuid": "^9.0.7",
58
58
  "app-root-path": "^3.1.0",
59
- "aws-cdk-lib": "^2.106.1",
59
+ "aws-cdk-lib": "^2.110.0",
60
60
  "cdktf": "^0.19.1",
61
61
  "constructs": "^10.3.0",
62
62
  "lodash": "^4.17.21",
@@ -71,15 +71,15 @@
71
71
  "@babel/eslint-parser": "^7.23.3",
72
72
  "@babel/plugin-proposal-class-properties": "^7.18.6",
73
73
  "@types/jest": "^29.5.8",
74
- "@typescript-eslint/eslint-plugin": "^6.10.0",
75
- "@typescript-eslint/parser": "^6.10.0",
76
- "aws-cdk": "^2.106.1",
74
+ "@typescript-eslint/eslint-plugin": "^6.11.0",
75
+ "@typescript-eslint/parser": "^6.11.0",
76
+ "aws-cdk": "^2.110.0",
77
77
  "better-docs": "^2.7.2",
78
78
  "codecov": "^3.8.3",
79
79
  "commitizen": "^4.3.0",
80
80
  "docdash": "^2.0.2",
81
81
  "dotenv": "^16.3.1",
82
- "eslint": "^8.53.0",
82
+ "eslint": "^8.54.0",
83
83
  "eslint-config-prettier": "^9.0.0",
84
84
  "eslint-plugin-import": "^2.29.0",
85
85
  "eslint-plugin-jsdoc": "^46.9.0",
@@ -95,7 +95,7 @@
95
95
  "prettier": "^3.1.0",
96
96
  "prettier-plugin-organize-imports": "^3.2.4",
97
97
  "rimraf": "^5.0.5",
98
- "semantic-release": "^22.0.7",
98
+ "semantic-release": "^22.0.8",
99
99
  "taffydb": "^2.7.3",
100
100
  "ts-jest": "^29.1.1",
101
101
  "ts-node": "^10.9.1",
@@ -2,13 +2,14 @@ import { CloudflareProvider } from '@cdktf/provider-cloudflare/lib/provider'
2
2
  import { TerraformStack } from 'cdktf'
3
3
  import { Construct } from 'constructs'
4
4
  import { isDevStage, isPrdStage, isTestStage, isUatStage } from '../../common'
5
- import { CloudflareZoneManager } from '../services'
5
+ import { CloudflareWorkerManager, CloudflareZoneManager } from '../services'
6
6
  import { CommonCloudflareStackProps } from './types'
7
7
 
8
8
  export class CommonCloudflareConstruct extends TerraformStack {
9
9
  declare props: CommonCloudflareStackProps
10
10
  id: string
11
11
  fullyQualifiedDomainName: string
12
+ workerManager: CloudflareWorkerManager
12
13
  zoneManager: CloudflareZoneManager
13
14
 
14
15
  constructor(scope: Construct, id: string, props: CommonCloudflareStackProps) {
@@ -17,6 +18,7 @@ export class CommonCloudflareConstruct extends TerraformStack {
17
18
  this.id = id
18
19
 
19
20
  this.zoneManager = new CloudflareZoneManager()
21
+ this.workerManager = new CloudflareWorkerManager()
20
22
 
21
23
  this.determineFullyQualifiedDomain()
22
24
  new CloudflareProvider(this, `${this.id}-provider`, this.props)
@@ -1 +1,2 @@
1
+ export * from './worker'
1
2
  export * from './zone'
@@ -0,0 +1,2 @@
1
+ export * from './main'
2
+ export * from './types'
@@ -0,0 +1,173 @@
1
+ import { WorkerDomain } from '@cdktf/provider-cloudflare/lib/worker-domain'
2
+ import { WorkerRoute } from '@cdktf/provider-cloudflare/lib/worker-route'
3
+ import { WorkerScript } from '@cdktf/provider-cloudflare/lib/worker-script'
4
+ import { CommonCloudflareConstruct } from '../../common'
5
+ import { createCloudflareTfOutput } from '../../utils'
6
+ import {
7
+ WorkerCronTriggerProps,
8
+ WorkerDomainProps,
9
+ WorkerRouteProps,
10
+ WorkerScriptProps,
11
+ WorkersKvNamespaceProps,
12
+ WorkersKvProps,
13
+ } from './types'
14
+ import { WorkersKvNamespace } from '@cdktf/provider-cloudflare/lib/workers-kv-namespace'
15
+ import { WorkersKv } from '@cdktf/provider-cloudflare/lib/workers-kv'
16
+ import { WorkerCronTrigger } from '@cdktf/provider-cloudflare/lib/worker-cron-trigger'
17
+
18
+ /**
19
+ * @classdesc Provides operations on Cloudflare Worker
20
+ * - A new instance of this class is injected into {@link CommonCloudflareConstruct} constructor.
21
+ * - If a custom construct extends {@link CommonCloudflareConstruct}, an instance is available within the context.
22
+ * @example
23
+ * ```
24
+ * import { CommonCloudflareConstruct, CommonCloudflareConstruct } from '@gradientedge/cdk-utils'
25
+ *
26
+ * class CustomConstruct extends CommonCloudflareConstruct {
27
+ * constructor(parent: Construct, id: string, props: CommonCloudflareStackProps) {
28
+ * super(parent, id, props)
29
+ * this.props = props
30
+ * this.workerManager.createWorkerDomain('MyWorkerDomain', this, props)
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ export class CloudflareWorkerManager {
36
+ /**
37
+ * @summary Method to create a new Cloudflare Worker Domain
38
+ * @param id scoped id of the resource
39
+ * @param scope scope in which this resource is defined
40
+ * @param props worker domain properties
41
+ * @see [CDKTF Worker Domain Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerDomain.typescript.md}
42
+ */
43
+ public createWorkerDomain(id: string, scope: CommonCloudflareConstruct, props: WorkerDomainProps) {
44
+ if (!props) throw `Props undefined for ${id}`
45
+
46
+ const zoneId = props.zoneId
47
+ ? props.zoneId
48
+ : scope.zoneManager.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
49
+
50
+ const workerDomain = new WorkerDomain(scope, `${id}`, {
51
+ ...props,
52
+ accountId: props.accountId ?? scope.props.accountId,
53
+ zoneId,
54
+ })
55
+
56
+ createCloudflareTfOutput(`${id}-workerDomainFriendlyUniqueId`, scope, workerDomain.friendlyUniqueId)
57
+ createCloudflareTfOutput(`${id}-workerDomainId`, scope, workerDomain.id)
58
+
59
+ return workerDomain
60
+ }
61
+
62
+ /**
63
+ * @summary Method to create a new Cloudflare Worker Route
64
+ * @param id scoped id of the resource
65
+ * @param scope scope in which this resource is defined
66
+ * @param props worker route properties
67
+ * @see [CDKTF Worker Route Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerRoute.typescript.md}
68
+ */
69
+ public createWorkerRoute(id: string, scope: CommonCloudflareConstruct, props: WorkerRouteProps) {
70
+ if (!props) throw `Props undefined for ${id}`
71
+
72
+ const zoneId = props.zoneId
73
+ ? props.zoneId
74
+ : scope.zoneManager.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
75
+
76
+ const workerRoute = new WorkerRoute(scope, `${id}`, {
77
+ ...props,
78
+ scriptName: `${props.scriptName}-${scope.props.stage}`,
79
+ zoneId,
80
+ })
81
+
82
+ createCloudflareTfOutput(`${id}-workerRouteFriendlyUniqueId`, scope, workerRoute.friendlyUniqueId)
83
+ createCloudflareTfOutput(`${id}-workerRouteId`, scope, workerRoute.id)
84
+
85
+ return workerRoute
86
+ }
87
+
88
+ /**
89
+ * @summary Method to create a new Cloudflare Worker Script
90
+ * @param id scoped id of the resource
91
+ * @param scope scope in which this resource is defined
92
+ * @param props worker script properties
93
+ * @see [CDKTF Worker Script Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerScript.typescript.md}
94
+ */
95
+ public createWorkerScript(id: string, scope: CommonCloudflareConstruct, props: WorkerScriptProps) {
96
+ if (!props) throw `Props undefined for ${id}`
97
+
98
+ const workerScript = new WorkerScript(scope, `${id}`, {
99
+ ...props,
100
+ accountId: props.accountId ?? scope.props.accountId,
101
+ name: `${props.name}-${scope.props.stage}`,
102
+ })
103
+
104
+ createCloudflareTfOutput(`${id}-workerScriptFriendlyUniqueId`, scope, workerScript.friendlyUniqueId)
105
+ createCloudflareTfOutput(`${id}-workerScriptId`, scope, workerScript.id)
106
+
107
+ return workerScript
108
+ }
109
+
110
+ /**
111
+ * @summary Method to create a new Cloudflare Workers KV Namespace
112
+ * @param id scoped id of the resource
113
+ * @param scope scope in which this resource is defined
114
+ * @param props workers kv namespace properties
115
+ * @see [CDKTF Workers KV Namespace Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKvNamespace.typescript.md}
116
+ */
117
+ public createWorkersKvNamespace(id: string, scope: CommonCloudflareConstruct, props: WorkersKvNamespaceProps) {
118
+ if (!props) throw `Props undefined for ${id}`
119
+
120
+ const workersKvNamespace = new WorkersKvNamespace(scope, `${id}`, {
121
+ ...props,
122
+ accountId: props.accountId ?? scope.props.accountId,
123
+ title: scope.isProductionStage() ? props.title : `${props.title}-${scope.props.stage}`,
124
+ })
125
+
126
+ createCloudflareTfOutput(`${id}-workersKvNamespaceFriendlyUniqueId`, scope, workersKvNamespace.friendlyUniqueId)
127
+ createCloudflareTfOutput(`${id}-workersKvNamespaceId`, scope, workersKvNamespace.id)
128
+
129
+ return workersKvNamespace
130
+ }
131
+
132
+ /**
133
+ * @summary Method to create a new Cloudflare Workers KV
134
+ * @param id scoped id of the resource
135
+ * @param scope scope in which this resource is defined
136
+ * @param props workers kv properties
137
+ * @see [CDKTF Workers KV Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workersKv.typescript.md}
138
+ */
139
+ public createWorkersKv(id: string, scope: CommonCloudflareConstruct, props: WorkersKvProps) {
140
+ if (!props) throw `Props undefined for ${id}`
141
+
142
+ const workersKv = new WorkersKv(scope, `${id}`, {
143
+ ...props,
144
+ accountId: props.accountId ?? scope.props.accountId,
145
+ })
146
+
147
+ createCloudflareTfOutput(`${id}-workersKvFriendlyUniqueId`, scope, workersKv.friendlyUniqueId)
148
+ createCloudflareTfOutput(`${id}-workersKvId`, scope, workersKv.id)
149
+
150
+ return workersKv
151
+ }
152
+
153
+ /**
154
+ * @summary Method to create a new Cloudflare Worker Cron Trigger
155
+ * @param id scoped id of the resource
156
+ * @param scope scope in which this resource is defined
157
+ * @param props workers cron trigger properties
158
+ * @see [CDKTF Workers Cron Trigger Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/workerCronTrigger.typescript.md}
159
+ */
160
+ public createWorkerCronTrigger(id: string, scope: CommonCloudflareConstruct, props: WorkerCronTriggerProps) {
161
+ if (!props) throw `Props undefined for ${id}`
162
+
163
+ const workerCronTrigger = new WorkerCronTrigger(scope, `${id}`, {
164
+ ...props,
165
+ accountId: props.accountId ?? scope.props.accountId,
166
+ })
167
+
168
+ createCloudflareTfOutput(`${id}-workerCronTriggerFriendlyUniqueId`, scope, workerCronTrigger.friendlyUniqueId)
169
+ createCloudflareTfOutput(`${id}-workerCronTriggerId`, scope, workerCronTrigger.id)
170
+
171
+ return workerCronTrigger
172
+ }
173
+ }
@@ -0,0 +1,13 @@
1
+ import { WorkerCronTriggerConfig } from '@cdktf/provider-cloudflare/lib/worker-cron-trigger'
2
+ import { WorkerDomainConfig } from '@cdktf/provider-cloudflare/lib/worker-domain'
3
+ import { WorkerRouteConfig } from '@cdktf/provider-cloudflare/lib/worker-route'
4
+ import { WorkerScriptConfig } from '@cdktf/provider-cloudflare/lib/worker-script'
5
+ import { WorkersKvConfig } from '@cdktf/provider-cloudflare/lib/workers-kv'
6
+ import { WorkersKvNamespaceConfig } from '@cdktf/provider-cloudflare/lib/workers-kv-namespace'
7
+
8
+ export interface WorkerDomainProps extends WorkerDomainConfig {}
9
+ export interface WorkerRouteProps extends WorkerRouteConfig {}
10
+ export interface WorkerScriptProps extends WorkerScriptConfig {}
11
+ export interface WorkersKvNamespaceProps extends WorkersKvNamespaceConfig {}
12
+ export interface WorkersKvProps extends WorkersKvConfig {}
13
+ export interface WorkerCronTriggerProps extends WorkerCronTriggerConfig {}
@@ -1,7 +1,23 @@
1
+ import { DataCloudflareZone } from '@cdktf/provider-cloudflare/lib/data-cloudflare-zone'
1
2
  import { Zone } from '@cdktf/provider-cloudflare/lib/zone'
2
- import { ZoneProps } from './types'
3
- import { createCloudflareTfOutput } from '../../utils'
3
+ import { ZoneCacheReserve } from '@cdktf/provider-cloudflare/lib/zone-cache-reserve'
4
+ import { ZoneCacheVariants } from '@cdktf/provider-cloudflare/lib/zone-cache-variants'
5
+ import { ZoneDnssec } from '@cdktf/provider-cloudflare/lib/zone-dnssec'
6
+ import { ZoneHold } from '@cdktf/provider-cloudflare/lib/zone-hold'
7
+ import { ZoneLockdown } from '@cdktf/provider-cloudflare/lib/zone-lockdown'
8
+ import { ZoneSettingsOverride } from '@cdktf/provider-cloudflare/lib/zone-settings-override'
4
9
  import { CommonCloudflareConstruct } from '../../common'
10
+ import { createCloudflareTfOutput } from '../../utils'
11
+ import {
12
+ ZoneCacheReserveProps,
13
+ ZoneCacheVariantsProps,
14
+ ZoneDnssecProps,
15
+ ZoneHoldProps,
16
+ ZoneLockdownProps,
17
+ ZoneOptions,
18
+ ZoneProps,
19
+ ZoneSettingsOverrideProps,
20
+ } from './types'
5
21
 
6
22
  /**
7
23
  * @classdesc Provides operations on Cloudflare Zone
@@ -40,5 +56,163 @@ export class CloudflareZoneManager {
40
56
  createCloudflareTfOutput(`${id}-zoneName`, scope, zone.zone)
41
57
  createCloudflareTfOutput(`${id}-zoneFriendlyUniqueId`, scope, zone.friendlyUniqueId)
42
58
  createCloudflareTfOutput(`${id}-zoneId`, scope, zone.id)
59
+
60
+ return zone
61
+ }
62
+
63
+ public resolveZone(id: string, scope: CommonCloudflareConstruct, options: ZoneOptions) {
64
+ if (!options) throw `Options undefined for ${id}`
65
+
66
+ const zone = new DataCloudflareZone(scope, `${id}-data-zone`, {
67
+ accountId: scope.props.accountId,
68
+ name: options.name ?? scope.props.domainName,
69
+ zoneId: options.id,
70
+ })
71
+
72
+ return zone
73
+ }
74
+
75
+ /**
76
+ * @summary Method to create a new zone cache reserve
77
+ * @param id scoped id of the resource
78
+ * @param scope scope in which this resource is defined
79
+ * @param props zone cache reserve properties
80
+ * @see [CDKTF Zone Cache Reserve Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheReserve.typescript.md}
81
+ */
82
+ public createZoneCacheReserve(id: string, scope: CommonCloudflareConstruct, props: ZoneCacheReserveProps) {
83
+ if (!props) throw `Props undefined for ${id}`
84
+
85
+ const zoneId = props.zoneId
86
+ ? props.zoneId
87
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
88
+ const zoneCacheReserve = new ZoneCacheReserve(scope, `${id}`, {
89
+ ...props,
90
+ zoneId,
91
+ })
92
+
93
+ createCloudflareTfOutput(`${id}-zoneCacheReserveFriendlyUniqueId`, scope, zoneCacheReserve.friendlyUniqueId)
94
+ createCloudflareTfOutput(`${id}-zoneCacheReserveId`, scope, zoneCacheReserve.id)
95
+
96
+ return zoneCacheReserve
97
+ }
98
+
99
+ /**
100
+ * @summary Method to create a new zone cache variants
101
+ * @param id scoped id of the resource
102
+ * @param scope scope in which this resource is defined
103
+ * @param props zone cache variants properties
104
+ * @see [CDKTF Zone Cache Variants Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneCacheVariants.typescript.md}
105
+ */
106
+ public createZoneCacheVariants(id: string, scope: CommonCloudflareConstruct, props: ZoneCacheVariantsProps) {
107
+ if (!props) throw `Props undefined for ${id}`
108
+
109
+ const zoneId = props.zoneId
110
+ ? props.zoneId
111
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
112
+ const zoneCacheVariants = new ZoneCacheVariants(scope, `${id}`, {
113
+ ...props,
114
+ zoneId,
115
+ })
116
+
117
+ createCloudflareTfOutput(`${id}-zoneCacheVariantsFriendlyUniqueId`, scope, zoneCacheVariants.friendlyUniqueId)
118
+ createCloudflareTfOutput(`${id}-zoneCacheVariantsId`, scope, zoneCacheVariants.id)
119
+
120
+ return zoneCacheVariants
121
+ }
122
+
123
+ /**
124
+ * @summary Method to create a new zone dnssec
125
+ * @param id scoped id of the resource
126
+ * @param scope scope in which this resource is defined
127
+ * @param props zone dnssec properties
128
+ * @see [CDKTF Zone DNS Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneDnssec.typescript.md}
129
+ */
130
+ public createZoneDnssec(id: string, scope: CommonCloudflareConstruct, props: ZoneDnssecProps) {
131
+ if (!props) throw `Props undefined for ${id}`
132
+
133
+ const zoneId = props.zoneId
134
+ ? props.zoneId
135
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
136
+ const zoneDnssec = new ZoneDnssec(scope, `${id}`, {
137
+ ...props,
138
+ zoneId,
139
+ })
140
+
141
+ createCloudflareTfOutput(`${id}-zoneDnssecFriendlyUniqueId`, scope, zoneDnssec.friendlyUniqueId)
142
+ createCloudflareTfOutput(`${id}-zoneDnssecId`, scope, zoneDnssec.id)
143
+
144
+ return zoneDnssec
145
+ }
146
+
147
+ /**
148
+ * @summary Method to create a new zone hold
149
+ * @param id scoped id of the resource
150
+ * @param scope scope in which this resource is defined
151
+ * @param props zone hold properties
152
+ * @see [CDKTF Zone Hold Security Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneHold.typescript.md}
153
+ */
154
+ public createZoneHold(id: string, scope: CommonCloudflareConstruct, props: ZoneHoldProps) {
155
+ if (!props) throw `Props undefined for ${id}`
156
+
157
+ const zoneId = props.zoneId
158
+ ? props.zoneId
159
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
160
+ const zoneHold = new ZoneHold(scope, `${id}`, {
161
+ ...props,
162
+ zoneId,
163
+ })
164
+
165
+ createCloudflareTfOutput(`${id}-zoneHoldFriendlyUniqueId`, scope, zoneHold.friendlyUniqueId)
166
+ createCloudflareTfOutput(`${id}-zoneHoldId`, scope, zoneHold.id)
167
+
168
+ return zoneHold
169
+ }
170
+
171
+ /**
172
+ * @summary Method to create a new zone lockdown
173
+ * @param id scoped id of the resource
174
+ * @param scope scope in which this resource is defined
175
+ * @param props zone lockdown properties
176
+ * @see [CDKTF Zone Lockdown Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneLockdown.typescript.md}
177
+ */
178
+ public createZoneLockdown(id: string, scope: CommonCloudflareConstruct, props: ZoneLockdownProps) {
179
+ if (!props) throw `Props undefined for ${id}`
180
+
181
+ const zoneId = props.zoneId
182
+ ? props.zoneId
183
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
184
+ const zoneLockdown = new ZoneLockdown(scope, `${id}`, {
185
+ ...props,
186
+ zoneId,
187
+ })
188
+
189
+ createCloudflareTfOutput(`${id}-zoneLockdownFriendlyUniqueId`, scope, zoneLockdown.friendlyUniqueId)
190
+ createCloudflareTfOutput(`${id}-zoneLockdownId`, scope, zoneLockdown.id)
191
+
192
+ return zoneLockdown
193
+ }
194
+
195
+ /**
196
+ * @summary Method to create a new zone settings override
197
+ * @param id scoped id of the resource
198
+ * @param scope scope in which this resource is defined
199
+ * @param props zone settings override properties
200
+ * @see [CDKTF Zone Settings Override Module]{@link https://github.com/cdktf/cdktf-provider-cloudflare/blob/main/docs/zoneSettingsOverride.typescript.md}
201
+ */
202
+ public createZoneSettingsOverride(id: string, scope: CommonCloudflareConstruct, props: ZoneSettingsOverrideProps) {
203
+ if (!props) throw `Props undefined for ${id}`
204
+
205
+ const zoneId = props.zoneId
206
+ ? props.zoneId
207
+ : this.resolveZone(`${id}-data-zone`, scope, { name: scope.props.domainName })?.id
208
+ const zoneSettingsOverride = new ZoneSettingsOverride(scope, `${id}`, {
209
+ ...props,
210
+ zoneId,
211
+ })
212
+
213
+ createCloudflareTfOutput(`${id}-zoneSettingsOverrideFriendlyUniqueId`, scope, zoneSettingsOverride.friendlyUniqueId)
214
+ createCloudflareTfOutput(`${id}-zoneSettingsOverrideId`, scope, zoneSettingsOverride.id)
215
+
216
+ return zoneSettingsOverride
43
217
  }
44
218
  }
@@ -1,3 +1,19 @@
1
1
  import { ZoneConfig } from '@cdktf/provider-cloudflare/lib/zone'
2
+ import { ZoneCacheReserveConfig } from '@cdktf/provider-cloudflare/lib/zone-cache-reserve'
3
+ import { ZoneCacheVariantsConfig } from '@cdktf/provider-cloudflare/lib/zone-cache-variants'
4
+ import { ZoneDnssecConfig } from '@cdktf/provider-cloudflare/lib/zone-dnssec'
5
+ import { ZoneHoldConfig } from '@cdktf/provider-cloudflare/lib/zone-hold'
6
+ import { ZoneLockdownConfig } from '@cdktf/provider-cloudflare/lib/zone-lockdown'
7
+ import { ZoneSettingsOverrideConfig } from '@cdktf/provider-cloudflare/lib/zone-settings-override'
2
8
 
3
9
  export interface ZoneProps extends ZoneConfig {}
10
+ export interface ZoneOptions {
11
+ id?: string
12
+ name?: string
13
+ }
14
+ export interface ZoneCacheReserveProps extends ZoneCacheReserveConfig {}
15
+ export interface ZoneCacheVariantsProps extends ZoneCacheVariantsConfig {}
16
+ export interface ZoneDnssecProps extends ZoneDnssecConfig {}
17
+ export interface ZoneHoldProps extends ZoneHoldConfig {}
18
+ export interface ZoneLockdownProps extends ZoneLockdownConfig {}
19
+ export interface ZoneSettingsOverrideProps extends ZoneSettingsOverrideConfig {}