@jaypie/constructs 1.1.48 → 1.1.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cjs/JaypieApiGateway.d.ts +1 -0
  2. package/dist/cjs/JaypieBucketQueuedLambda.d.ts +4 -19
  3. package/dist/cjs/JaypieDnsRecord.d.ts +45 -0
  4. package/dist/cjs/JaypieGitHubDeployRole.d.ts +15 -0
  5. package/dist/cjs/JaypieHostedZone.d.ts +26 -4
  6. package/dist/cjs/JaypieLambda.d.ts +1 -1
  7. package/dist/cjs/JaypieQueuedLambda.d.ts +1 -1
  8. package/dist/cjs/JaypieSsoPermissions.d.ts +95 -0
  9. package/dist/cjs/JaypieSsoSyncApplication.d.ts +27 -0
  10. package/dist/cjs/JaypieWebDeploymentBucket.d.ts +1 -0
  11. package/dist/cjs/__tests__/JaypieSsoSyncApplication.spec.d.ts +1 -0
  12. package/dist/cjs/helpers/__tests__/resolveDatadogForwarderFunction.spec.d.ts +1 -0
  13. package/dist/cjs/helpers/__tests__/resolveDatadogLoggingDestination.spec.d.ts +1 -0
  14. package/dist/cjs/helpers/index.d.ts +2 -0
  15. package/dist/cjs/helpers/resolveDatadogForwarderFunction.d.ts +7 -0
  16. package/dist/cjs/helpers/resolveDatadogLoggingDestination.d.ts +4 -0
  17. package/dist/cjs/index.cjs +599 -308
  18. package/dist/cjs/index.cjs.map +1 -1
  19. package/dist/cjs/index.d.ts +6 -2
  20. package/dist/esm/JaypieApiGateway.d.ts +1 -0
  21. package/dist/esm/JaypieBucketQueuedLambda.d.ts +4 -19
  22. package/dist/esm/JaypieDnsRecord.d.ts +45 -0
  23. package/dist/esm/JaypieGitHubDeployRole.d.ts +15 -0
  24. package/dist/esm/JaypieHostedZone.d.ts +26 -4
  25. package/dist/esm/JaypieLambda.d.ts +1 -1
  26. package/dist/esm/JaypieQueuedLambda.d.ts +1 -1
  27. package/dist/esm/JaypieSsoPermissions.d.ts +95 -0
  28. package/dist/esm/JaypieSsoSyncApplication.d.ts +27 -0
  29. package/dist/esm/JaypieWebDeploymentBucket.d.ts +1 -0
  30. package/dist/esm/__tests__/JaypieDnsRecord.spec.d.ts +1 -0
  31. package/dist/esm/__tests__/JaypieSsoPermissions.spec.d.ts +1 -0
  32. package/dist/esm/__tests__/JaypieSsoSyncApplication.spec.d.ts +1 -0
  33. package/dist/esm/helpers/__tests__/resolveDatadogForwarderFunction.spec.d.ts +1 -0
  34. package/dist/esm/helpers/__tests__/resolveDatadogLoggingDestination.spec.d.ts +1 -0
  35. package/dist/esm/helpers/index.d.ts +2 -0
  36. package/dist/esm/helpers/resolveDatadogForwarderFunction.d.ts +7 -0
  37. package/dist/esm/helpers/resolveDatadogLoggingDestination.d.ts +4 -0
  38. package/dist/esm/index.d.ts +6 -2
  39. package/dist/esm/index.js +592 -309
  40. package/dist/esm/index.js.map +1 -1
  41. package/package.json +3 -2
  42. package/dist/cjs/JaypieSsoGroups.d.ts +0 -121
  43. package/dist/esm/JaypieSsoGroups.d.ts +0 -121
  44. /package/dist/cjs/__tests__/{JaypieSsoGroups.spec.d.ts → JaypieDnsRecord.spec.d.ts} +0 -0
  45. /package/dist/{esm/__tests__/JaypieSsoGroups.spec.d.ts → cjs/__tests__/JaypieSsoPermissions.spec.d.ts} +0 -0
@@ -43,4 +43,5 @@ export declare class JaypieApiGateway extends Construct implements apiGateway.IR
43
43
  metricLatency(props?: import("aws-cdk-lib/aws-cloudwatch").MetricOptions): import("aws-cdk-lib/aws-cloudwatch").Metric;
44
44
  metricServerError(props?: import("aws-cdk-lib/aws-cloudwatch").MetricOptions): import("aws-cdk-lib/aws-cloudwatch").Metric;
45
45
  applyRemovalPolicy(policy: RemovalPolicy): void;
46
+ get restApiRef(): apiGateway.RestApiReference;
46
47
  }
@@ -2,7 +2,6 @@ import { Construct } from "constructs";
2
2
  import { RemovalPolicy } from "aws-cdk-lib";
3
3
  import * as s3 from "aws-cdk-lib/aws-s3";
4
4
  import * as iam from "aws-cdk-lib/aws-iam";
5
- import * as cloudwatch from "aws-cdk-lib/aws-cloudwatch";
6
5
  import { JaypieQueuedLambda, JaypieQueuedLambdaProps } from "./JaypieQueuedLambda.js";
7
6
  export interface JaypieBucketQueuedLambdaProps extends JaypieQueuedLambdaProps {
8
7
  bucketName?: string;
@@ -22,13 +21,12 @@ export declare class JaypieBucketQueuedLambda extends JaypieQueuedLambda impleme
22
21
  get encryptionKey(): undefined | import("aws-cdk-lib/aws-kms").IKey;
23
22
  get isWebsite(): boolean;
24
23
  get policy(): s3.BucketPolicy | undefined;
25
- addEventNotification(event: s3.EventType, dest: s3.IBucketNotificationDestination, filters?: s3.NotificationKeyFilter[]): void;
24
+ addEventNotification(event: s3.EventType, dest: s3.IBucketNotificationDestination, ...filters: s3.NotificationKeyFilter[]): void;
26
25
  addObjectCreatedNotification(dest: s3.IBucketNotificationDestination, ...filters: s3.NotificationKeyFilter[]): void;
27
26
  addObjectRemovedNotification(dest: s3.IBucketNotificationDestination, ...filters: s3.NotificationKeyFilter[]): void;
28
27
  addToResourcePolicy(permission: iam.PolicyStatement): iam.AddToResourcePolicyResult;
29
28
  arnForObjects(objectKeyPattern: string): string;
30
29
  enableEventBridgeNotification(): void;
31
- grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
32
30
  grantDelete(grantee: iam.IGrantable, objectsKeyPattern?: any): iam.Grant;
33
31
  grantPublicAccess(keyPrefix?: string, ...allowedActions: string[]): iam.Grant;
34
32
  grantPut(grantee: iam.IGrantable, objectsKeyPattern?: any): iam.Grant;
@@ -43,21 +41,8 @@ export declare class JaypieBucketQueuedLambda extends JaypieQueuedLambda impleme
43
41
  transferAccelerationUrlForObject(key?: string, options?: s3.TransferAccelerationUrlOptions): string;
44
42
  urlForObject(key?: string): string;
45
43
  virtualHostedUrlForObject(key?: string, options?: s3.VirtualHostedStyleUrlOptions): string;
46
- metricAllRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
47
- metricBucketSizeBytes(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
48
- metricDeleteRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
49
- metricDownloadBytes(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
50
- metricFirstByteLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
51
- metricGetRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
52
- metricHeadRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
53
- metricHttpRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
54
- metricListRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
55
- metricNumberOfObjects(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
56
- metricPostRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
57
- metricPutRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
58
- metricSelectRequests(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
59
- metricSelectScannedBytes(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
60
- metricUploadBytes(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
61
- metricSelectReturnedBytes(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
44
+ grantReplicationPermission(identity: iam.IGrantable, props: any): iam.Grant;
45
+ addReplicationPolicy(policy: any): void;
46
+ get bucketRef(): s3.BucketReference;
62
47
  applyRemovalPolicy(policy: RemovalPolicy): void;
63
48
  }
@@ -0,0 +1,45 @@
1
+ import * as cdk from "aws-cdk-lib";
2
+ import { ARecord, CnameRecord, IHostedZone, MxRecord, NsRecord, TxtRecord } from "aws-cdk-lib/aws-route53";
3
+ import { Construct } from "constructs";
4
+ export interface JaypieDnsRecordProps {
5
+ /**
6
+ * Optional comment to add to the DNS record
7
+ */
8
+ comment?: string;
9
+ /**
10
+ * Optional record name (subdomain). If not provided, creates record at zone apex
11
+ */
12
+ recordName?: string;
13
+ /**
14
+ * Time to live for the DNS record
15
+ * @default CDK.DNS.CONFIG.TTL (5 minutes)
16
+ */
17
+ ttl?: cdk.Duration;
18
+ /**
19
+ * The DNS record type (A, CNAME, MX, NS, TXT)
20
+ */
21
+ type: string;
22
+ /**
23
+ * Values for the DNS record. Format depends on record type:
24
+ * - A: Array of IPv4 addresses (e.g., ["1.2.3.4", "5.6.7.8"])
25
+ * - CNAME: Single domain name as first element (e.g., ["example.com"])
26
+ * - MX: Array of objects with priority and hostName (e.g., [{priority: 10, hostName: "mail.example.com"}])
27
+ * - NS: Array of name server addresses (e.g., ["ns1.example.com", "ns2.example.com"])
28
+ * - TXT: Array of text values (e.g., ["v=spf1 include:example.com ~all"])
29
+ */
30
+ values: string[] | Array<{
31
+ hostName: string;
32
+ priority: number;
33
+ }>;
34
+ /**
35
+ * The hosted zone where the record will be created.
36
+ * Can be either:
37
+ * - A string (zone name) - will lookup the hosted zone by domain name
38
+ * - An IHostedZone object - will use the provided zone directly
39
+ */
40
+ zone: string | IHostedZone;
41
+ }
42
+ export declare class JaypieDnsRecord extends Construct {
43
+ readonly record: ARecord | CnameRecord | MxRecord | NsRecord | TxtRecord;
44
+ constructor(scope: Construct, id: string, props: JaypieDnsRecordProps);
45
+ }
@@ -0,0 +1,15 @@
1
+ import { Role } from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+ export interface JaypieGitHubDeployRoleProps {
4
+ accountId: string;
5
+ oidcProviderArn?: string;
6
+ output?: boolean | string;
7
+ repoRestriction?: string;
8
+ }
9
+ export declare class JaypieGitHubDeployRole extends Construct {
10
+ private readonly _role;
11
+ constructor(scope: Construct, id: string, props: JaypieGitHubDeployRoleProps);
12
+ get role(): Role;
13
+ get roleArn(): string;
14
+ get roleName(): string;
15
+ }
@@ -1,7 +1,19 @@
1
1
  import { ILogGroup } from "aws-cdk-lib/aws-logs";
2
+ import { LambdaDestination } from "aws-cdk-lib/aws-logs-destinations";
2
3
  import { IHostedZone } from "aws-cdk-lib/aws-route53";
3
4
  import { Construct } from "constructs";
4
- import { LambdaDestination } from "aws-cdk-lib/aws-logs-destinations";
5
+ import { JaypieDnsRecord, JaypieDnsRecordProps } from "./JaypieDnsRecord";
6
+ /**
7
+ * DNS record configuration for JaypieHostedZone
8
+ * Omits 'zone' since it will be automatically set to the created hosted zone
9
+ */
10
+ export interface JaypieHostedZoneRecordProps extends Omit<JaypieDnsRecordProps, "zone"> {
11
+ /**
12
+ * Optional ID for the DNS record construct
13
+ * @default Generated from record type and name
14
+ */
15
+ id?: string;
16
+ }
5
17
  interface JaypieHostedZoneProps {
6
18
  /**
7
19
  * The domain name for the hosted zone
@@ -17,15 +29,25 @@ interface JaypieHostedZoneProps {
17
29
  */
18
30
  project?: string;
19
31
  /**
20
- * Optional log destination
32
+ * Log destination configuration
33
+ * - LambdaDestination: Use a specific Lambda destination
34
+ * - true: Use Datadog logging destination (default)
35
+ * - false: Do not use a destination
36
+ * @default true
37
+ */
38
+ destination?: LambdaDestination | boolean;
39
+ /**
40
+ * Optional DNS records to create for this hosted zone
41
+ * Each record will be created as a JaypieDnsRecord construct
21
42
  */
22
- destination?: LambdaDestination;
43
+ records?: JaypieHostedZoneRecordProps[];
23
44
  }
24
45
  export declare class JaypieHostedZone extends Construct {
25
46
  readonly hostedZone: IHostedZone;
26
47
  readonly logGroup: ILogGroup;
48
+ readonly dnsRecords: JaypieDnsRecord[];
27
49
  /**
28
- * Create a new hosted zone with query logging
50
+ * Create a new hosted zone with query logging and optional DNS records
29
51
  */
30
52
  constructor(scope: Construct, id: string, props: JaypieHostedZoneProps);
31
53
  }
@@ -73,7 +73,7 @@ export declare class JaypieLambda extends Construct implements lambda.IFunction
73
73
  get latestVersion(): lambda.IVersion;
74
74
  get permissionsNode(): import("constructs").Node;
75
75
  get resourceArnsForGrantInvoke(): string[];
76
- get functionRef(): lambda.FunctionRef;
76
+ get functionRef(): lambda.FunctionReference;
77
77
  addEventSource(source: lambda.IEventSource): void;
78
78
  addEventSourceMapping(id: string, options: lambda.EventSourceMappingOptions): lambda.EventSourceMapping;
79
79
  addFunctionUrl(options?: lambda.FunctionUrlOptions): lambda.FunctionUrl;
@@ -27,7 +27,7 @@ export declare class JaypieQueuedLambda extends Construct implements lambda.IFun
27
27
  get latestVersion(): lambda.IVersion;
28
28
  get permissionsNode(): import("constructs").Node;
29
29
  get resourceArnsForGrantInvoke(): string[];
30
- get functionRef(): lambda.FunctionRef;
30
+ get functionRef(): lambda.FunctionReference;
31
31
  addEventSource(source: lambda.IEventSource): void;
32
32
  addEventSourceMapping(id: string, options: lambda.EventSourceMappingOptions): lambda.EventSourceMapping;
33
33
  addFunctionUrl(options?: lambda.FunctionUrlOptions): lambda.FunctionUrl;
@@ -0,0 +1,95 @@
1
+ import { Construct } from "constructs";
2
+ import { CfnPermissionSet } from "aws-cdk-lib/aws-sso";
3
+ /**
4
+ * Mapping of account IDs to permission set names
5
+ * Key: AWS account ID
6
+ * Value: Array of permission set names to assign to this account
7
+ */
8
+ export interface AccountAssignments {
9
+ [accountId: string]: string[];
10
+ }
11
+ /**
12
+ * Properties for the JaypieSsoPermissions construct
13
+ */
14
+ export interface JaypieSsoPermissionsProps {
15
+ /**
16
+ * ARN of the IAM Identity Center instance
17
+ * If not provided, SSO setup will be skipped
18
+ */
19
+ iamIdentityCenterArn?: string;
20
+ /**
21
+ * Google Workspace group GUID for administrators
22
+ * Example: "b4c8b438-4031-7000-782d-5046945fb956"
23
+ */
24
+ administratorGroupId?: string;
25
+ /**
26
+ * Google Workspace group GUID for analysts
27
+ * Example: "2488f4e8-d061-708e-abe1-c315f0e30005"
28
+ */
29
+ analystGroupId?: string;
30
+ /**
31
+ * Google Workspace group GUID for developers
32
+ * Example: "b438a4f8-e0e1-707c-c6e8-21841daf9ad1"
33
+ */
34
+ developerGroupId?: string;
35
+ /**
36
+ * Account assignments for administrator group
37
+ * Maps account IDs to arrays of permission set names
38
+ * Example:
39
+ * {
40
+ * "211125635435": ["Administrator", "Analyst"],
41
+ * "381492033431": ["Administrator"],
42
+ * }
43
+ */
44
+ administratorAccountAssignments?: AccountAssignments;
45
+ /**
46
+ * Account assignments for analyst group
47
+ * Maps account IDs to arrays of permission set names
48
+ * Example:
49
+ * {
50
+ * "211125635435": ["Analyst"],
51
+ * "381492033431": ["Analyst"],
52
+ * }
53
+ */
54
+ analystAccountAssignments?: AccountAssignments;
55
+ /**
56
+ * Account assignments for developer group
57
+ * Maps account IDs to arrays of permission set names
58
+ * Example:
59
+ * {
60
+ * "211125635435": ["Developer"],
61
+ * }
62
+ */
63
+ developerAccountAssignments?: AccountAssignments;
64
+ }
65
+ /**
66
+ * JaypieSsoPermissions Construct
67
+ *
68
+ * Creates and manages AWS IAM Identity Center (SSO) permission sets and assignments
69
+ *
70
+ * @example
71
+ * const permissionSets = new JaypieSsoPermissions(this, "PermissionSets", {
72
+ * iamIdentityCenterArn: "arn:aws:sso:::instance/...",
73
+ * administratorGroupId: "b4c8b438-4031-7000-782d-5046945fb956",
74
+ * analystGroupId: "2488f4e8-d061-708e-abe1-c315f0e30005",
75
+ * developerGroupId: "b438a4f8-e0e1-707c-c6e8-21841daf9ad1",
76
+ * administratorAccountAssignments: {
77
+ * "211125635435": ["Administrator", "Analyst", "Developer"],
78
+ * "381492033431": ["Administrator", "Analyst"],
79
+ * },
80
+ * analystAccountAssignments: {
81
+ * "211125635435": ["Analyst", "Developer"],
82
+ * "381492033431": [],
83
+ * },
84
+ * developerAccountAssignments: {
85
+ * "211125635435": ["Analyst", "Developer"],
86
+ * "381492033431": [],
87
+ * },
88
+ * });
89
+ */
90
+ export declare class JaypieSsoPermissions extends Construct {
91
+ readonly administratorPermissionSet?: CfnPermissionSet;
92
+ readonly analystPermissionSet?: CfnPermissionSet;
93
+ readonly developerPermissionSet?: CfnPermissionSet;
94
+ constructor(scope: Construct, id: string, props: JaypieSsoPermissionsProps);
95
+ }
@@ -0,0 +1,27 @@
1
+ import { Construct } from "constructs";
2
+ import { CfnApplication } from "aws-cdk-lib/aws-sam";
3
+ export interface JaypieSsoSyncApplicationProps {
4
+ googleAdminEmail?: string;
5
+ googleAdminEmailEnvKey?: string;
6
+ googleCredentials?: string;
7
+ googleCredentialsEnvKey?: string;
8
+ googleGroupMatch?: string;
9
+ googleGroupMatchEnvKey?: string;
10
+ identityStoreId?: string;
11
+ identityStoreIdEnvKey?: string;
12
+ scimEndpointAccessToken?: string;
13
+ scimEndpointAccessTokenEnvKey?: string;
14
+ scimEndpointUrl?: string;
15
+ scimEndpointUrlEnvKey?: string;
16
+ semanticVersion?: string;
17
+ semanticVersionEnvKey?: string;
18
+ ssoSyncApplicationId?: string;
19
+ tags?: {
20
+ [key: string]: string;
21
+ };
22
+ }
23
+ export declare class JaypieSsoSyncApplication extends Construct {
24
+ private readonly _application;
25
+ constructor(scope: Construct, id?: string, props?: JaypieSsoSyncApplicationProps);
26
+ get application(): CfnApplication;
27
+ }
@@ -79,4 +79,5 @@ export declare class JaypieWebDeploymentBucket extends Construct implements s3.I
79
79
  get stack(): any;
80
80
  get env(): any;
81
81
  applyRemovalPolicy(policy: RemovalPolicy): void;
82
+ get bucketRef(): s3.BucketReference;
82
83
  }
@@ -5,6 +5,8 @@ export { constructTagger } from "./constructTagger";
5
5
  export { envHostname } from "./envHostname";
6
6
  export { isEnv, isProductionEnv, isSandboxEnv } from "./isEnv";
7
7
  export { jaypieLambdaEnv } from "./jaypieLambdaEnv";
8
+ export { resolveDatadogForwarderFunction } from "./resolveDatadogForwarderFunction";
8
9
  export { resolveDatadogLayers } from "./resolveDatadogLayers";
10
+ export { resolveDatadogLoggingDestination } from "./resolveDatadogLoggingDestination";
9
11
  export { resolveHostedZone } from "./resolveHostedZone";
10
12
  export { resolveParamsAndSecrets } from "./resolveParamsAndSecrets";
@@ -0,0 +1,7 @@
1
+ import * as lambda from "aws-cdk-lib/aws-lambda";
2
+ import { Construct } from "constructs";
3
+ export interface ResolveDatadogForwarderFunctionOptions {
4
+ import?: string;
5
+ name?: string;
6
+ }
7
+ export declare function resolveDatadogForwarderFunction(scope: Construct, options?: ResolveDatadogForwarderFunctionOptions): lambda.IFunction;
@@ -0,0 +1,4 @@
1
+ import * as logDestinations from "aws-cdk-lib/aws-logs-destinations";
2
+ import { Construct } from "constructs";
3
+ import { ResolveDatadogForwarderFunctionOptions } from "./resolveDatadogForwarderFunction";
4
+ export declare function resolveDatadogLoggingDestination(scope: Construct, options?: ResolveDatadogForwarderFunctionOptions): logDestinations.LambdaDestination;