@unstablestudios/terraform 0.0.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.
- package/README.md +312 -0
- package/dist/config/backend.d.ts +118 -0
- package/dist/config/backend.d.ts.map +1 -0
- package/dist/config/backend.js +153 -0
- package/dist/config/backend.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/terraform.d.ts +157 -0
- package/dist/config/terraform.d.ts.map +1 -0
- package/dist/config/terraform.js +211 -0
- package/dist/config/terraform.js.map +1 -0
- package/dist/config/terraform.test.d.ts +2 -0
- package/dist/config/terraform.test.d.ts.map +1 -0
- package/dist/config/terraform.test.js +240 -0
- package/dist/config/terraform.test.js.map +1 -0
- package/dist/config/tfvars.d.ts +90 -0
- package/dist/config/tfvars.d.ts.map +1 -0
- package/dist/config/tfvars.js +133 -0
- package/dist/config/tfvars.js.map +1 -0
- package/dist/config/tfvars.test.d.ts +2 -0
- package/dist/config/tfvars.test.d.ts.map +1 -0
- package/dist/config/tfvars.test.js +187 -0
- package/dist/config/tfvars.test.js.map +1 -0
- package/dist/hcl/generator.d.ts +59 -0
- package/dist/hcl/generator.d.ts.map +1 -0
- package/dist/hcl/generator.js +401 -0
- package/dist/hcl/generator.js.map +1 -0
- package/dist/hcl/generator.test.d.ts +2 -0
- package/dist/hcl/generator.test.d.ts.map +1 -0
- package/dist/hcl/generator.test.js +280 -0
- package/dist/hcl/generator.test.js.map +1 -0
- package/dist/hcl/index.d.ts +5 -0
- package/dist/hcl/index.d.ts.map +1 -0
- package/dist/hcl/index.js +3 -0
- package/dist/hcl/index.js.map +1 -0
- package/dist/hcl/writer.d.ts +35 -0
- package/dist/hcl/writer.d.ts.map +1 -0
- package/dist/hcl/writer.js +154 -0
- package/dist/hcl/writer.js.map +1 -0
- package/dist/index.d.mts +970 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1283 -0
- package/dist/modules/cloudflare/d1.d.ts +39 -0
- package/dist/modules/cloudflare/d1.d.ts.map +1 -0
- package/dist/modules/cloudflare/d1.js +55 -0
- package/dist/modules/cloudflare/d1.js.map +1 -0
- package/dist/modules/cloudflare/index.d.ts +43 -0
- package/dist/modules/cloudflare/index.d.ts.map +1 -0
- package/dist/modules/cloudflare/index.js +44 -0
- package/dist/modules/cloudflare/index.js.map +1 -0
- package/dist/modules/cloudflare/kv.d.ts +57 -0
- package/dist/modules/cloudflare/kv.d.ts.map +1 -0
- package/dist/modules/cloudflare/kv.js +75 -0
- package/dist/modules/cloudflare/kv.js.map +1 -0
- package/dist/modules/cloudflare/r2.d.ts +49 -0
- package/dist/modules/cloudflare/r2.d.ts.map +1 -0
- package/dist/modules/cloudflare/r2.js +70 -0
- package/dist/modules/cloudflare/r2.js.map +1 -0
- package/dist/modules/cloudflare/worker.d.ts +104 -0
- package/dist/modules/cloudflare/worker.d.ts.map +1 -0
- package/dist/modules/cloudflare/worker.js +128 -0
- package/dist/modules/cloudflare/worker.js.map +1 -0
- package/dist/modules/index.d.ts +4 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +4 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/types.d.ts +97 -0
- package/dist/modules/types.d.ts.map +1 -0
- package/dist/modules/types.js +106 -0
- package/dist/modules/types.js.map +1 -0
- package/dist/modules/types.test.d.ts +2 -0
- package/dist/modules/types.test.d.ts.map +1 -0
- package/dist/modules/types.test.js +167 -0
- package/dist/modules/types.test.js.map +1 -0
- package/dist/types/config.d.ts +140 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +16 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/config.test.d.ts +2 -0
- package/dist/types/config.test.d.ts.map +1 -0
- package/dist/types/config.test.js +36 -0
- package/dist/types/config.test.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { HclExpression, ResourceConfig } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare D1 database configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface D1DatabaseConfig {
|
|
6
|
+
/** Database name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Account ID */
|
|
9
|
+
accountId: string | HclExpression;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a Cloudflare D1 database resource
|
|
13
|
+
*/
|
|
14
|
+
export declare function cloudflareD1Database(config: D1DatabaseConfig): ResourceConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Create a reference to a D1 database
|
|
17
|
+
*/
|
|
18
|
+
export declare function d1DatabaseRef(name: string, attribute?: string): HclExpression;
|
|
19
|
+
/**
|
|
20
|
+
* Create multiple D1 databases for different environments
|
|
21
|
+
*/
|
|
22
|
+
export declare function cloudflareD1Databases(accountId: string | HclExpression, baseName: string, environments?: string[]): ResourceConfig[];
|
|
23
|
+
/**
|
|
24
|
+
* D1 database outputs configuration
|
|
25
|
+
*/
|
|
26
|
+
export interface D1OutputsConfig {
|
|
27
|
+
/** Database resource name */
|
|
28
|
+
resourceName: string;
|
|
29
|
+
/** Output name prefix */
|
|
30
|
+
prefix?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create outputs for a D1 database
|
|
34
|
+
*/
|
|
35
|
+
export declare function d1DatabaseOutputs(config: D1OutputsConfig): Record<string, {
|
|
36
|
+
value: HclExpression;
|
|
37
|
+
description?: string;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=d1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1.d.ts","sourceRoot":"","sources":["../../../src/modules/cloudflare/d1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAe7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,aAAa,CAE3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,MAAM,EAA6C,GAChE,cAAc,EAAE,CASlB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAazH"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { expr } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Create a Cloudflare D1 database resource
|
|
4
|
+
*/
|
|
5
|
+
export function cloudflareD1Database(config) {
|
|
6
|
+
const resourceName = config.name
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
9
|
+
.replace(/_+/g, '_')
|
|
10
|
+
.replace(/^_|_$/g, '');
|
|
11
|
+
return {
|
|
12
|
+
type: 'cloudflare_d1_database',
|
|
13
|
+
name: resourceName,
|
|
14
|
+
config: {
|
|
15
|
+
account_id: config.accountId,
|
|
16
|
+
name: config.name,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a reference to a D1 database
|
|
22
|
+
*/
|
|
23
|
+
export function d1DatabaseRef(name, attribute = 'id') {
|
|
24
|
+
return expr(`cloudflare_d1_database.${name}.${attribute}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create multiple D1 databases for different environments
|
|
28
|
+
*/
|
|
29
|
+
export function cloudflareD1Databases(accountId, baseName, environments = ['production', 'staging', 'development']) {
|
|
30
|
+
return environments.map((env) => ({
|
|
31
|
+
type: 'cloudflare_d1_database',
|
|
32
|
+
name: `${baseName.replace(/-/g, '_')}_${env}`,
|
|
33
|
+
config: {
|
|
34
|
+
account_id: accountId,
|
|
35
|
+
name: `${baseName}-${env}`,
|
|
36
|
+
},
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create outputs for a D1 database
|
|
41
|
+
*/
|
|
42
|
+
export function d1DatabaseOutputs(config) {
|
|
43
|
+
const prefix = config.prefix ?? config.resourceName;
|
|
44
|
+
return {
|
|
45
|
+
[`${prefix}_id`]: {
|
|
46
|
+
value: d1DatabaseRef(config.resourceName, 'id'),
|
|
47
|
+
description: `ID of the ${config.resourceName} D1 database`,
|
|
48
|
+
},
|
|
49
|
+
[`${prefix}_name`]: {
|
|
50
|
+
value: d1DatabaseRef(config.resourceName, 'name'),
|
|
51
|
+
description: `Name of the ${config.resourceName} D1 database`,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=d1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/d1.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAY1C;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI;SAC7B,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IAC1D,OAAO,IAAI,CAAC,0BAA0B,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAiC,EACjC,QAAgB,EAChB,eAAyB,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC;IAEjE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;QAC7C,MAAM,EAAE;YACN,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;SAC3B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAYD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;IAEpD,OAAO;QACL,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE;YAChB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;YAC/C,WAAW,EAAE,aAAa,MAAM,CAAC,YAAY,cAAc;SAC5D;QACD,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE;YAClB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;YACjD,WAAW,EAAE,eAAe,MAAM,CAAC,YAAY,cAAc;SAC9D;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { cloudflareWorkerScript, cloudflareWorkerRoute, cloudflareWorkerDomain, workerScriptRef, } from './worker';
|
|
2
|
+
export type { WorkerScriptConfig, WorkerKvBinding, WorkerD1Binding, WorkerR2Binding, WorkerServiceBinding, WorkerRouteConfig, WorkerDomainConfig, } from './worker';
|
|
3
|
+
export { cloudflareKvNamespace, cloudflareKvPair, cloudflareKvNamespaces, cloudflareKvBulk, kvNamespaceRef, } from './kv';
|
|
4
|
+
export type { KvNamespaceConfig, KvPairConfig, BulkKvConfig } from './kv';
|
|
5
|
+
export { cloudflareD1Database, cloudflareD1Databases, d1DatabaseRef, d1DatabaseOutputs, } from './d1';
|
|
6
|
+
export type { D1DatabaseConfig, D1OutputsConfig } from './d1';
|
|
7
|
+
export { cloudflareR2Bucket, cloudflareR2Buckets, cloudflareR2BucketsForEnvs, r2BucketRef, r2BucketOutputs, } from './r2';
|
|
8
|
+
export type { R2BucketConfig, R2BucketWithCorsConfig } from './r2';
|
|
9
|
+
/**
|
|
10
|
+
* Cloudflare provider required_providers configuration
|
|
11
|
+
*/
|
|
12
|
+
export declare const cloudflareProvider: {
|
|
13
|
+
source: string;
|
|
14
|
+
version: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Common Cloudflare variable definitions
|
|
18
|
+
*/
|
|
19
|
+
export declare const cloudflareVariables: {
|
|
20
|
+
account_id: {
|
|
21
|
+
type: string;
|
|
22
|
+
description: string;
|
|
23
|
+
sensitive: boolean;
|
|
24
|
+
};
|
|
25
|
+
api_token: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
sensitive: boolean;
|
|
29
|
+
};
|
|
30
|
+
zone_id: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Create a reference to var.cloudflare_account_id
|
|
37
|
+
*/
|
|
38
|
+
export declare const cfAccountId: import("../..").HclExpression;
|
|
39
|
+
/**
|
|
40
|
+
* Create a reference to var.cloudflare_zone_id
|
|
41
|
+
*/
|
|
42
|
+
export declare const cfZoneId: import("../..").HclExpression;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/cloudflare/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACf,MAAM,MAAM,CAAC;AACd,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAG1E,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,MAAM,CAAC;AACd,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,WAAW,EACX,eAAe,GAChB,MAAM,MAAM,CAAC;AACd,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,MAAM,CAAC;AAInE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;CAe/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+BAAoC,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,QAAQ,+BAAiC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Worker resources
|
|
2
|
+
export { cloudflareWorkerScript, cloudflareWorkerRoute, cloudflareWorkerDomain, workerScriptRef, } from './worker';
|
|
3
|
+
// KV resources
|
|
4
|
+
export { cloudflareKvNamespace, cloudflareKvPair, cloudflareKvNamespaces, cloudflareKvBulk, kvNamespaceRef, } from './kv';
|
|
5
|
+
// D1 resources
|
|
6
|
+
export { cloudflareD1Database, cloudflareD1Databases, d1DatabaseRef, d1DatabaseOutputs, } from './d1';
|
|
7
|
+
// R2 resources
|
|
8
|
+
export { cloudflareR2Bucket, cloudflareR2Buckets, cloudflareR2BucketsForEnvs, r2BucketRef, r2BucketOutputs, } from './r2';
|
|
9
|
+
import { expr } from '../../types/config';
|
|
10
|
+
/**
|
|
11
|
+
* Cloudflare provider required_providers configuration
|
|
12
|
+
*/
|
|
13
|
+
export const cloudflareProvider = {
|
|
14
|
+
source: 'cloudflare/cloudflare',
|
|
15
|
+
version: '~> 4.0',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Common Cloudflare variable definitions
|
|
19
|
+
*/
|
|
20
|
+
export const cloudflareVariables = {
|
|
21
|
+
account_id: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Cloudflare Account ID',
|
|
24
|
+
sensitive: true,
|
|
25
|
+
},
|
|
26
|
+
api_token: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Cloudflare API Token',
|
|
29
|
+
sensitive: true,
|
|
30
|
+
},
|
|
31
|
+
zone_id: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Cloudflare Zone ID',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Create a reference to var.cloudflare_account_id
|
|
38
|
+
*/
|
|
39
|
+
export const cfAccountId = expr('var.cloudflare_account_id');
|
|
40
|
+
/**
|
|
41
|
+
* Create a reference to var.cloudflare_zone_id
|
|
42
|
+
*/
|
|
43
|
+
export const cfZoneId = expr('var.cloudflare_zone_id');
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,GAChB,MAAM,UAAU,CAAC;AAWlB,eAAe;AACf,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACf,MAAM,MAAM,CAAC;AAGd,eAAe;AACf,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,MAAM,CAAC;AAGd,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,WAAW,EACX,eAAe,GAChB,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,SAAS,EAAE,IAAI;KAChB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,SAAS,EAAE,IAAI;KAChB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oBAAoB;KAClC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { HclExpression, ResourceConfig } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare KV namespace configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface KvNamespaceConfig {
|
|
6
|
+
/** Namespace title */
|
|
7
|
+
title: string;
|
|
8
|
+
/** Account ID */
|
|
9
|
+
accountId: string | HclExpression;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a Cloudflare KV namespace resource
|
|
13
|
+
*/
|
|
14
|
+
export declare function cloudflareKvNamespace(config: KvNamespaceConfig): ResourceConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Cloudflare KV pair configuration
|
|
17
|
+
*/
|
|
18
|
+
export interface KvPairConfig {
|
|
19
|
+
/** Namespace ID */
|
|
20
|
+
namespaceId: string | HclExpression;
|
|
21
|
+
/** Account ID */
|
|
22
|
+
accountId: string | HclExpression;
|
|
23
|
+
/** Key name */
|
|
24
|
+
key: string;
|
|
25
|
+
/** Value */
|
|
26
|
+
value: string | HclExpression;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a Cloudflare KV pair resource
|
|
30
|
+
*/
|
|
31
|
+
export declare function cloudflareKvPair(config: KvPairConfig): ResourceConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Create a reference to a KV namespace
|
|
34
|
+
*/
|
|
35
|
+
export declare function kvNamespaceRef(name: string, attribute?: string): HclExpression;
|
|
36
|
+
/**
|
|
37
|
+
* Create multiple KV namespaces for different environments
|
|
38
|
+
*/
|
|
39
|
+
export declare function cloudflareKvNamespaces(accountId: string | HclExpression, baseName: string, environments?: string[]): ResourceConfig[];
|
|
40
|
+
/**
|
|
41
|
+
* Bulk KV configuration
|
|
42
|
+
*/
|
|
43
|
+
export interface BulkKvConfig {
|
|
44
|
+
/** Account ID */
|
|
45
|
+
accountId: string | HclExpression;
|
|
46
|
+
/** Namespace ID */
|
|
47
|
+
namespaceId: string | HclExpression;
|
|
48
|
+
/** Key-value pairs */
|
|
49
|
+
entries: Record<string, string>;
|
|
50
|
+
/** Resource name prefix */
|
|
51
|
+
namePrefix?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create multiple KV pairs from an object
|
|
55
|
+
*/
|
|
56
|
+
export declare function cloudflareKvBulk(config: BulkKvConfig): ResourceConfig[];
|
|
57
|
+
//# sourceMappingURL=kv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../../src/modules/cloudflare/kv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAe/E;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY;IACZ,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAiBrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,aAAa,CAE5E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,MAAM,EAA6C,GAChE,cAAc,EAAE,CASlB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,EAAE,CAavE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { expr } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Create a Cloudflare KV namespace resource
|
|
4
|
+
*/
|
|
5
|
+
export function cloudflareKvNamespace(config) {
|
|
6
|
+
const resourceName = config.title
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
9
|
+
.replace(/_+/g, '_')
|
|
10
|
+
.replace(/^_|_$/g, '');
|
|
11
|
+
return {
|
|
12
|
+
type: 'cloudflare_workers_kv_namespace',
|
|
13
|
+
name: resourceName,
|
|
14
|
+
config: {
|
|
15
|
+
account_id: config.accountId,
|
|
16
|
+
title: config.title,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a Cloudflare KV pair resource
|
|
22
|
+
*/
|
|
23
|
+
export function cloudflareKvPair(config) {
|
|
24
|
+
const resourceName = config.key
|
|
25
|
+
.toLowerCase()
|
|
26
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
27
|
+
.replace(/_+/g, '_')
|
|
28
|
+
.replace(/^_|_$/g, '');
|
|
29
|
+
return {
|
|
30
|
+
type: 'cloudflare_workers_kv',
|
|
31
|
+
name: resourceName,
|
|
32
|
+
config: {
|
|
33
|
+
account_id: config.accountId,
|
|
34
|
+
namespace_id: config.namespaceId,
|
|
35
|
+
key: config.key,
|
|
36
|
+
value: config.value,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a reference to a KV namespace
|
|
42
|
+
*/
|
|
43
|
+
export function kvNamespaceRef(name, attribute = 'id') {
|
|
44
|
+
return expr(`cloudflare_workers_kv_namespace.${name}.${attribute}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create multiple KV namespaces for different environments
|
|
48
|
+
*/
|
|
49
|
+
export function cloudflareKvNamespaces(accountId, baseName, environments = ['production', 'staging', 'development']) {
|
|
50
|
+
return environments.map((env) => ({
|
|
51
|
+
type: 'cloudflare_workers_kv_namespace',
|
|
52
|
+
name: `${baseName.replace(/-/g, '_')}_${env}`,
|
|
53
|
+
config: {
|
|
54
|
+
account_id: accountId,
|
|
55
|
+
title: `${baseName}-${env}`,
|
|
56
|
+
},
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create multiple KV pairs from an object
|
|
61
|
+
*/
|
|
62
|
+
export function cloudflareKvBulk(config) {
|
|
63
|
+
const prefix = config.namePrefix ?? 'kv';
|
|
64
|
+
return Object.entries(config.entries).map(([key, value], index) => ({
|
|
65
|
+
type: 'cloudflare_workers_kv',
|
|
66
|
+
name: `${prefix}_${index}`,
|
|
67
|
+
config: {
|
|
68
|
+
account_id: config.accountId,
|
|
69
|
+
namespace_id: config.namespaceId,
|
|
70
|
+
key,
|
|
71
|
+
value,
|
|
72
|
+
},
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=kv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/kv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAY1C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;SAC9B,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAC;AACJ,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG;SAC5B,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IAC3D,OAAO,IAAI,CAAC,mCAAmC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAiC,EACjC,QAAgB,EAChB,eAAyB,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC;IAEjE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;QAC7C,MAAM,EAAE;YACN,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;SAC5B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;IAEzC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE;QAC1B,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,GAAG;YACH,KAAK;SACN;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { HclExpression, ResourceConfig } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare R2 bucket configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface R2BucketConfig {
|
|
6
|
+
/** Bucket name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Account ID */
|
|
9
|
+
accountId: string | HclExpression;
|
|
10
|
+
/** Location hint (optional) */
|
|
11
|
+
location?: 'wnam' | 'enam' | 'weur' | 'eeur' | 'apac';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a Cloudflare R2 bucket resource
|
|
15
|
+
*/
|
|
16
|
+
export declare function cloudflareR2Bucket(config: R2BucketConfig): ResourceConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Create a reference to an R2 bucket
|
|
19
|
+
*/
|
|
20
|
+
export declare function r2BucketRef(name: string, attribute?: string): HclExpression;
|
|
21
|
+
/**
|
|
22
|
+
* Create multiple R2 buckets for different purposes
|
|
23
|
+
*/
|
|
24
|
+
export declare function cloudflareR2Buckets(accountId: string | HclExpression, buckets: Array<{
|
|
25
|
+
name: string;
|
|
26
|
+
location?: R2BucketConfig['location'];
|
|
27
|
+
}>): ResourceConfig[];
|
|
28
|
+
/**
|
|
29
|
+
* R2 bucket with CORS configuration (note: CORS is configured via API, not Terraform)
|
|
30
|
+
* This creates outputs that can be used to configure CORS separately
|
|
31
|
+
*/
|
|
32
|
+
export interface R2BucketWithCorsConfig extends R2BucketConfig {
|
|
33
|
+
/** Allowed origins for CORS */
|
|
34
|
+
corsOrigins?: string[];
|
|
35
|
+
/** Allowed methods for CORS */
|
|
36
|
+
corsMethods?: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create R2 bucket outputs
|
|
40
|
+
*/
|
|
41
|
+
export declare function r2BucketOutputs(resourceName: string, prefix?: string): Record<string, {
|
|
42
|
+
value: HclExpression;
|
|
43
|
+
description?: string;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Create multiple R2 buckets for different environments
|
|
47
|
+
*/
|
|
48
|
+
export declare function cloudflareR2BucketsForEnvs(accountId: string | HclExpression, baseName: string, environments?: string[], location?: R2BucketConfig['location']): ResourceConfig[];
|
|
49
|
+
//# sourceMappingURL=r2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../../src/modules/cloudflare/r2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAqBzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,aAAa,CAE3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC,GACtE,cAAc,EAAE,CAMlB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAahE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,MAAM,EAA6C,EACjE,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,GACpC,cAAc,EAAE,CAUlB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { expr } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Create a Cloudflare R2 bucket resource
|
|
4
|
+
*/
|
|
5
|
+
export function cloudflareR2Bucket(config) {
|
|
6
|
+
const resourceName = config.name
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
9
|
+
.replace(/_+/g, '_')
|
|
10
|
+
.replace(/^_|_$/g, '');
|
|
11
|
+
const resourceConfig = {
|
|
12
|
+
account_id: config.accountId,
|
|
13
|
+
name: config.name,
|
|
14
|
+
};
|
|
15
|
+
if (config.location) {
|
|
16
|
+
resourceConfig.location = config.location;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
type: 'cloudflare_r2_bucket',
|
|
20
|
+
name: resourceName,
|
|
21
|
+
config: resourceConfig,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a reference to an R2 bucket
|
|
26
|
+
*/
|
|
27
|
+
export function r2BucketRef(name, attribute = 'name') {
|
|
28
|
+
return expr(`cloudflare_r2_bucket.${name}.${attribute}`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create multiple R2 buckets for different purposes
|
|
32
|
+
*/
|
|
33
|
+
export function cloudflareR2Buckets(accountId, buckets) {
|
|
34
|
+
return buckets.map((bucket) => cloudflareR2Bucket({
|
|
35
|
+
accountId,
|
|
36
|
+
name: bucket.name,
|
|
37
|
+
location: bucket.location,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create R2 bucket outputs
|
|
42
|
+
*/
|
|
43
|
+
export function r2BucketOutputs(resourceName, prefix) {
|
|
44
|
+
const outputPrefix = prefix ?? resourceName;
|
|
45
|
+
return {
|
|
46
|
+
[`${outputPrefix}_name`]: {
|
|
47
|
+
value: r2BucketRef(resourceName, 'name'),
|
|
48
|
+
description: `Name of the ${resourceName} R2 bucket`,
|
|
49
|
+
},
|
|
50
|
+
[`${outputPrefix}_id`]: {
|
|
51
|
+
value: r2BucketRef(resourceName, 'id'),
|
|
52
|
+
description: `ID of the ${resourceName} R2 bucket`,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create multiple R2 buckets for different environments
|
|
58
|
+
*/
|
|
59
|
+
export function cloudflareR2BucketsForEnvs(accountId, baseName, environments = ['production', 'staging', 'development'], location) {
|
|
60
|
+
return environments.map((env) => ({
|
|
61
|
+
type: 'cloudflare_r2_bucket',
|
|
62
|
+
name: `${baseName.replace(/-/g, '_')}_${env}`,
|
|
63
|
+
config: {
|
|
64
|
+
account_id: accountId,
|
|
65
|
+
name: `${baseName}-${env}`,
|
|
66
|
+
...(location ? { location } : {}),
|
|
67
|
+
},
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=r2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/r2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAc1C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI;SAC7B,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,MAAM,cAAc,GAA6B;QAC/C,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,cAAc;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAS,GAAG,MAAM;IAC1D,OAAO,IAAI,CAAC,wBAAwB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiC,EACjC,OAAuE;IAEvE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC;QAChD,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAoB,EACpB,MAAe;IAEf,MAAM,YAAY,GAAG,MAAM,IAAI,YAAY,CAAC;IAE5C,OAAO;QACL,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE;YACxB,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC;YACxC,WAAW,EAAE,eAAe,YAAY,YAAY;SACrD;QACD,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;YACtB,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC;YACtC,WAAW,EAAE,aAAa,YAAY,YAAY;SACnD;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAiC,EACjC,QAAgB,EAChB,eAAyB,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,EACjE,QAAqC;IAErC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;QAC7C,MAAM,EAAE;YACN,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;YAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { HclExpression, ResourceConfig } from '../../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare Worker script configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkerScriptConfig {
|
|
6
|
+
/** Worker name */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Account ID */
|
|
9
|
+
accountId: string | HclExpression;
|
|
10
|
+
/** Script content or path to script file */
|
|
11
|
+
content: string | HclExpression;
|
|
12
|
+
/** Module format (esm or service-worker) */
|
|
13
|
+
module?: boolean;
|
|
14
|
+
/** Compatibility date */
|
|
15
|
+
compatibilityDate?: string;
|
|
16
|
+
/** Compatibility flags */
|
|
17
|
+
compatibilityFlags?: string[];
|
|
18
|
+
/** Logpush enabled */
|
|
19
|
+
logpush?: boolean;
|
|
20
|
+
/** KV namespace bindings */
|
|
21
|
+
kvNamespaces?: WorkerKvBinding[];
|
|
22
|
+
/** D1 database bindings */
|
|
23
|
+
d1Databases?: WorkerD1Binding[];
|
|
24
|
+
/** R2 bucket bindings */
|
|
25
|
+
r2Buckets?: WorkerR2Binding[];
|
|
26
|
+
/** Environment variables (plain text) */
|
|
27
|
+
plainTextBindings?: Record<string, string>;
|
|
28
|
+
/** Secret bindings */
|
|
29
|
+
secretTextBindings?: Record<string, HclExpression>;
|
|
30
|
+
/** Service bindings */
|
|
31
|
+
serviceBindings?: WorkerServiceBinding[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Worker KV namespace binding
|
|
35
|
+
*/
|
|
36
|
+
export interface WorkerKvBinding {
|
|
37
|
+
name: string;
|
|
38
|
+
namespaceId: string | HclExpression;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Worker D1 database binding
|
|
42
|
+
*/
|
|
43
|
+
export interface WorkerD1Binding {
|
|
44
|
+
name: string;
|
|
45
|
+
databaseId: string | HclExpression;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Worker R2 bucket binding
|
|
49
|
+
*/
|
|
50
|
+
export interface WorkerR2Binding {
|
|
51
|
+
name: string;
|
|
52
|
+
bucketName: string | HclExpression;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Worker service binding
|
|
56
|
+
*/
|
|
57
|
+
export interface WorkerServiceBinding {
|
|
58
|
+
name: string;
|
|
59
|
+
service: string;
|
|
60
|
+
environment?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a Cloudflare Worker script resource
|
|
64
|
+
*/
|
|
65
|
+
export declare function cloudflareWorkerScript(config: WorkerScriptConfig): ResourceConfig;
|
|
66
|
+
/**
|
|
67
|
+
* Cloudflare Worker route configuration
|
|
68
|
+
*/
|
|
69
|
+
export interface WorkerRouteConfig {
|
|
70
|
+
/** Route pattern (e.g., "example.com/*") */
|
|
71
|
+
pattern: string;
|
|
72
|
+
/** Zone ID */
|
|
73
|
+
zoneId: string | HclExpression;
|
|
74
|
+
/** Script name (reference to worker script) */
|
|
75
|
+
scriptName: string | HclExpression;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a Cloudflare Worker route resource
|
|
79
|
+
*/
|
|
80
|
+
export declare function cloudflareWorkerRoute(config: WorkerRouteConfig): ResourceConfig;
|
|
81
|
+
/**
|
|
82
|
+
* Cloudflare Worker custom domain configuration
|
|
83
|
+
*/
|
|
84
|
+
export interface WorkerDomainConfig {
|
|
85
|
+
/** Account ID */
|
|
86
|
+
accountId: string | HclExpression;
|
|
87
|
+
/** Zone ID */
|
|
88
|
+
zoneId: string | HclExpression;
|
|
89
|
+
/** Hostname */
|
|
90
|
+
hostname: string;
|
|
91
|
+
/** Service (worker script name) */
|
|
92
|
+
service: string | HclExpression;
|
|
93
|
+
/** Environment (default: "production") */
|
|
94
|
+
environment?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a Cloudflare Worker domain resource
|
|
98
|
+
*/
|
|
99
|
+
export declare function cloudflareWorkerDomain(config: WorkerDomainConfig): ResourceConfig;
|
|
100
|
+
/**
|
|
101
|
+
* Create a reference to a worker script
|
|
102
|
+
*/
|
|
103
|
+
export declare function workerScriptRef(name: string, attribute?: string): HclExpression;
|
|
104
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/modules/cloudflare/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,4CAA4C;IAC5C,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IAChC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,yBAAyB;IACzB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,sBAAsB;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnD,uBAAuB;IACvB,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CA6FjF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAe/E;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,cAAc;IACd,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IAChC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAcjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,aAAa,CAE7E"}
|