terruvim-core-test 0.0.1
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/dist/src/core/config.js +2 -0
- package/dist/src/core/configMerge.js +266 -0
- package/dist/src/core/configUtils.js +72 -0
- package/dist/src/core/dependencyResolver.js +17 -0
- package/dist/src/core/deployUtils.js +73 -0
- package/dist/src/core/dynamicResourceManager.js +709 -0
- package/dist/src/core/entrypoint.js +56 -0
- package/dist/src/core/generateFinalConfig.js +45 -0
- package/dist/src/core/index.js +24 -0
- package/dist/src/core/resourceMap.js +99 -0
- package/dist/src/factories/accountPermissions.js +134 -0
- package/dist/src/factories/acmFactory.js +30 -0
- package/dist/src/factories/albFactory.js +331 -0
- package/dist/src/factories/attachSecretAccessPolicy.js +56 -0
- package/dist/src/factories/auroraFactory.js +619 -0
- package/dist/src/factories/backupPolicy.js +152 -0
- package/dist/src/factories/bastionFactory.js +91 -0
- package/dist/src/factories/bedrockFactory.js +334 -0
- package/dist/src/factories/budgetFactory.js +64 -0
- package/dist/src/factories/buildAlbCloudWatchAlarmsHelper.js +79 -0
- package/dist/src/factories/buildAlbCloudWatchDashboardHelper.js +106 -0
- package/dist/src/factories/buildAlbListenerRulesHelper.js +45 -0
- package/dist/src/factories/buildAlbListenersHelper.js +64 -0
- package/dist/src/factories/buildAlbResourceHelper.js +54 -0
- package/dist/src/factories/buildAlbRoute53RecordHelper.js +49 -0
- package/dist/src/factories/buildAlbTargetGroupsHelper.js +47 -0
- package/dist/src/factories/buildAlbWafAssociationHelper.js +43 -0
- package/dist/src/factories/buildAndPushDockerImage.js +57 -0
- package/dist/src/factories/buildAwsCloudWatchAlarmsHelper.js +118 -0
- package/dist/src/factories/buildCloudFrontRoute53RecordHelper.js +49 -0
- package/dist/src/factories/buildEcsClusterArgs.js +32 -0
- package/dist/src/factories/buildEcsSecrets.js +48 -0
- package/dist/src/factories/buildForceRedeployEnv.js +8 -0
- package/dist/src/factories/buildResourceOptions.js +11 -0
- package/dist/src/factories/buildS3StaticHostingCicdHelper.js +142 -0
- package/dist/src/factories/buildS3StaticHostingCloudWatchDashboardHelper.js +122 -0
- package/dist/src/factories/cloudTrailFactory.js +22 -0
- package/dist/src/factories/cloudWatchCompositeAlarmFactory.js +91 -0
- package/dist/src/factories/cloudWatchInsightsQueryFactory.js +83 -0
- package/dist/src/factories/cloudWatchLogGroupFactory.js +84 -0
- package/dist/src/factories/cloudfrontCodePipelineFactory.js +357 -0
- package/dist/src/factories/cloudwatchAlarmsFactory.js +121 -0
- package/dist/src/factories/codePipelineNotificationFactory.js +193 -0
- package/dist/src/factories/codePipelineNotificationRulesFactory.js +117 -0
- package/dist/src/factories/codeStarConnectionFactory.js +56 -0
- package/dist/src/factories/collectSecretKeys.js +18 -0
- package/dist/src/factories/comprehensiveNotificationFactory.js +250 -0
- package/dist/src/factories/costAndUsageReportFactory.js +32 -0
- package/dist/src/factories/createAwsAcmCertificate.js +40 -0
- package/dist/src/factories/createAwsBudget.js +40 -0
- package/dist/src/factories/createAwsCloudTrail.js +59 -0
- package/dist/src/factories/createAwsCloudwatchDashboard.js +59 -0
- package/dist/src/factories/createAwsEc2Instance.js +40 -0
- package/dist/src/factories/createAwsEventBridgeEventBus.js +40 -0
- package/dist/src/factories/createAwsGuardDutyDetector.js +40 -0
- package/dist/src/factories/createAwsGuardDutyDetectorFeature.js +45 -0
- package/dist/src/factories/createAwsGuardDutyFilter.js +46 -0
- package/dist/src/factories/createAwsGuardDutyPublishingDestination.js +50 -0
- package/dist/src/factories/createAwsHostedZone.js +40 -0
- package/dist/src/factories/createAwsIamRole.js +49 -0
- package/dist/src/factories/createAwsIamRoleInlinePolicies.js +48 -0
- package/dist/src/factories/createAwsIdentitystoreGroup.js +44 -0
- package/dist/src/factories/createAwsIdentitystoreGroupMembership.js +56 -0
- package/dist/src/factories/createAwsIdentitystoreUser.js +47 -0
- package/dist/src/factories/createAwsInspectorAssessmentTarget.js +47 -0
- package/dist/src/factories/createAwsInspectorDelegatedAdminAccount.js +47 -0
- package/dist/src/factories/createAwsInspectorEnabler.js +49 -0
- package/dist/src/factories/createAwsInspectorOrganizationConfiguration.js +55 -0
- package/dist/src/factories/createAwsKmsAliases.js +47 -0
- package/dist/src/factories/createAwsKmsKey.js +51 -0
- package/dist/src/factories/createAwsMacieAccount.js +45 -0
- package/dist/src/factories/createAwsMacieClassificationJob.js +53 -0
- package/dist/src/factories/createAwsMacieMember.js +49 -0
- package/dist/src/factories/createAwsMacieOrganizationConfiguration.js +44 -0
- package/dist/src/factories/createAwsRdsCluster.js +40 -0
- package/dist/src/factories/createAwsRdsClusterInstance.js +40 -0
- package/dist/src/factories/createAwsRdsInstance.js +40 -0
- package/dist/src/factories/createAwsRdsSubnetGroup.js +40 -0
- package/dist/src/factories/createAwsRoute53Record.js +40 -0
- package/dist/src/factories/createAwsSecret.js +40 -0
- package/dist/src/factories/createAwsSecretRotation.js +40 -0
- package/dist/src/factories/createAwsSecretVersion.js +40 -0
- package/dist/src/factories/createAwsSecurityGroup.js +40 -0
- package/dist/src/factories/createAwsSecurityGroupRule.js +40 -0
- package/dist/src/factories/createAwsSecurityHubAccount.js +40 -0
- package/dist/src/factories/createAwsSecurityHubAutomationRule.js +48 -0
- package/dist/src/factories/createAwsSecurityHubStandardsControl.js +44 -0
- package/dist/src/factories/createAwsSecurityHubStandardsSubscription.js +42 -0
- package/dist/src/factories/createAwsSesDomainDkim.js +40 -0
- package/dist/src/factories/createAwsSesDomainIdentity.js +40 -0
- package/dist/src/factories/createAwsSesEmailIdentity.js +40 -0
- package/dist/src/factories/createAwsSnsSubscription.js +62 -0
- package/dist/src/factories/createAwsSnsTopic.js +41 -0
- package/dist/src/factories/createAwsSqsQueue.js +40 -0
- package/dist/src/factories/createAwsSsmParameters.js +66 -0
- package/dist/src/factories/createAwsSsoAccountAssignment.js +66 -0
- package/dist/src/factories/createAwsSsoPermissionSet.js +64 -0
- package/dist/src/factories/createAwsStepFunctionsStateMachine.js +40 -0
- package/dist/src/factories/createBudget.js +56 -0
- package/dist/src/factories/createBudgetWithSnsAlert.js +79 -0
- package/dist/src/factories/createCostAndUsageReport.js +40 -0
- package/dist/src/factories/createEcrRepo.js +69 -0
- package/dist/src/factories/createEcsRolesAndPolicies.js +84 -0
- package/dist/src/factories/createEcsService.js +71 -0
- package/dist/src/factories/createEnvSecret.js +60 -0
- package/dist/src/factories/createGithubCodeStarConnection.js +44 -0
- package/dist/src/factories/createIamUserWithAccessKey.js +44 -0
- package/dist/src/factories/createLambdaFunction.js +89 -0
- package/dist/src/factories/createLambdaPermission.js +57 -0
- package/dist/src/factories/createListenerRule.js +68 -0
- package/dist/src/factories/createLogGroup.js +44 -0
- package/dist/src/factories/createSlackChannelConfiguration.js +49 -0
- package/dist/src/factories/createTargetGroup.js +50 -0
- package/dist/src/factories/createTaskDefinition.js +49 -0
- package/dist/src/factories/createVpcEndpoint.js +49 -0
- package/dist/src/factories/dashboardFactory.js +94 -0
- package/dist/src/factories/dataProtectionPolicyBuilder.js +103 -0
- package/dist/src/factories/ec2Factory.js +67 -0
- package/dist/src/factories/ecsClusterFactory.js +90 -0
- package/dist/src/factories/ecsCodePipelineFactory.js +308 -0
- package/dist/src/factories/ecsServiceFactory.js +350 -0
- package/dist/src/factories/enhancedCloudFrontCodePipelineFactory.js +205 -0
- package/dist/src/factories/enhancedEcsCodePipelineFactory.js +189 -0
- package/dist/src/factories/eventBridgeBusFactory.js +84 -0
- package/dist/src/factories/eventBridgeFactory.js +26 -0
- package/dist/src/factories/eventBridgeRuleFactory.js +114 -0
- package/dist/src/factories/fetchAllSecrets.js +51 -0
- package/dist/src/factories/getDeterministicPriority.js +13 -0
- package/dist/src/factories/getOrCreateSshKeyPair.js +57 -0
- package/dist/src/factories/guardDutyFactory.js +151 -0
- package/dist/src/factories/hostedZoneFactory.js +30 -0
- package/dist/src/factories/iamRoleFactory.js +29 -0
- package/dist/src/factories/inspectorFactory.js +109 -0
- package/dist/src/factories/kmsKeyFactory.js +32 -0
- package/dist/src/factories/lambdaFactory.js +133 -0
- package/dist/src/factories/lambdaPermissionFactory.js +32 -0
- package/dist/src/factories/logDataProtectionPolicyFactory.js +81 -0
- package/dist/src/factories/macieFactory.js +85 -0
- package/dist/src/factories/networkingFactory.js +429 -0
- package/dist/src/factories/opensearchCollectionFactory.js +109 -0
- package/dist/src/factories/organizationFactory.js +221 -0
- package/dist/src/factories/processReservedInstances.js +6 -0
- package/dist/src/factories/processSavingsPlans.js +43 -0
- package/dist/src/factories/rdsFactory.js +40 -0
- package/dist/src/factories/recordFactory.js +36 -0
- package/dist/src/factories/resolveEnvSecrets.js +14 -0
- package/dist/src/factories/resourceFactory.js +12 -0
- package/dist/src/factories/s3Factory.js +262 -0
- package/dist/src/factories/s3StaticHostingFactory.backup.js +424 -0
- package/dist/src/factories/s3StaticHostingFactory.js +348 -0
- package/dist/src/factories/s3StaticHostingFactory.refactored.js +334 -0
- package/dist/src/factories/savingsPlanFactory.js +26 -0
- package/dist/src/factories/secretsManagerFactory.js +107 -0
- package/dist/src/factories/securityGroupFactory.js +28 -0
- package/dist/src/factories/securityGroupRuleFactory.js +43 -0
- package/dist/src/factories/securityHubFactory.js +96 -0
- package/dist/src/factories/sesDomainDkimFactory.js +25 -0
- package/dist/src/factories/sesFactory.js +25 -0
- package/dist/src/factories/sesIdentitiesFactory.js +134 -0
- package/dist/src/factories/simpleNotificationFactory.js +112 -0
- package/dist/src/factories/smtpUserFactory.js +108 -0
- package/dist/src/factories/snsFactory.js +87 -0
- package/dist/src/factories/sqsFactory.js +41 -0
- package/dist/src/factories/ssmParameterFactory.js +67 -0
- package/dist/src/factories/ssoFactory.js +32 -0
- package/dist/src/factories/ssoGroupFactory.js +41 -0
- package/dist/src/factories/ssoPermissionSetFactory.js +29 -0
- package/dist/src/factories/ssoUserFactory.js +30 -0
- package/dist/src/factories/stepFunctionsFactory.js +32 -0
- package/dist/src/factories/tagPolicies.js +99 -0
- package/dist/src/factories/transformBudgetCostFilters.js +8 -0
- package/dist/src/factories/transformBudgetNotifications.js +12 -0
- package/dist/src/factories/transformBudgetPlannedLimits.js +8 -0
- package/dist/src/factories/types.js +2 -0
- package/dist/src/factories/validateAcmConfig.js +26 -0
- package/dist/src/factories/validateAuroraConfig.js +8 -0
- package/dist/src/factories/validateBedrockConfig.js +124 -0
- package/dist/src/factories/validateDashboardConfig.js +28 -0
- package/dist/src/factories/validateEventBridgeConfig.js +14 -0
- package/dist/src/factories/validateHostedZoneConfig.js +26 -0
- package/dist/src/factories/validateIamRoleConfig.js +8 -0
- package/dist/src/factories/validateKmsKeyConfig.js +8 -0
- package/dist/src/factories/validateRdsConfig.js +17 -0
- package/dist/src/factories/validateRoute53RecordConfig.js +41 -0
- package/dist/src/factories/validateS3Config.js +8 -0
- package/dist/src/factories/validateSecretsManagerConfig.js +8 -0
- package/dist/src/factories/validateSecurityGroupConfig.js +8 -0
- package/dist/src/factories/validateSecurityGroupRuleConfig.js +8 -0
- package/dist/src/factories/validateSesDomainDkimConfig.js +8 -0
- package/dist/src/factories/validateSesDomainIdentityConfig.js +8 -0
- package/dist/src/factories/validateSesIdentitiesConfig.js +40 -0
- package/dist/src/factories/validateSnsConfig.js +11 -0
- package/dist/src/factories/validateSqsConfig.js +11 -0
- package/dist/src/factories/validateSsmParameterFactoryConfig.js +9 -0
- package/dist/src/factories/validateStepFunctionsConfig.js +8 -0
- package/dist/src/factories/vpcEndpointFactory.js +98 -0
- package/dist/src/factories/wafFactory.js +499 -0
- package/package.json +71 -0
- package/scripts/copy-assets.js +136 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Asset Copy Script for Terruvim (Enhanced Console UI)
|
|
4
|
+
*
|
|
5
|
+
* Copies asset folders from the Terruvim package to the target project.
|
|
6
|
+
* - By default, copies all subfolders from terruvim/assets to ./assets in the current project (for postinstall).
|
|
7
|
+
* - With --interactive, allows the user to select which subfolders to copy.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node copy-assets.js # Copies all asset subfolders
|
|
11
|
+
* node copy-assets.js --interactive # Prompts for selection
|
|
12
|
+
*
|
|
13
|
+
* This script is intended for use in npm postinstall hooks or as a manual utility.
|
|
14
|
+
*/
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
const readline = require('readline');
|
|
18
|
+
|
|
19
|
+
// Simple color/emoji helpers for console output
|
|
20
|
+
const colors = {
|
|
21
|
+
reset: '\x1b[0m',
|
|
22
|
+
bright: '\x1b[1m',
|
|
23
|
+
green: '\x1b[32m',
|
|
24
|
+
yellow: '\x1b[33m',
|
|
25
|
+
blue: '\x1b[34m',
|
|
26
|
+
cyan: '\x1b[36m',
|
|
27
|
+
red: '\x1b[31m',
|
|
28
|
+
magenta: '\x1b[35m',
|
|
29
|
+
gray: '\x1b[90m',
|
|
30
|
+
};
|
|
31
|
+
const icons = {
|
|
32
|
+
folder: 'đ',
|
|
33
|
+
file: 'đ',
|
|
34
|
+
check: 'â
',
|
|
35
|
+
warn: 'â ī¸',
|
|
36
|
+
arrow: 'âĄī¸',
|
|
37
|
+
info: 'âšī¸',
|
|
38
|
+
copy: 'đ',
|
|
39
|
+
};
|
|
40
|
+
function colorize(str, color) { return colors[color] + str + colors.reset; }
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Recursively copies files and directories from src to dest.
|
|
44
|
+
* @param {string} src - Source path
|
|
45
|
+
* @param {string} dest - Destination path
|
|
46
|
+
*/
|
|
47
|
+
function copyRecursiveSync(src, dest) {
|
|
48
|
+
if (!fs.existsSync(src)) return;
|
|
49
|
+
const stats = fs.statSync(src);
|
|
50
|
+
if (stats.isDirectory()) {
|
|
51
|
+
if (!fs.existsSync(dest)) fs.mkdirSync(dest, { recursive: true });
|
|
52
|
+
for (const child of fs.readdirSync(src)) {
|
|
53
|
+
copyRecursiveSync(path.join(src, child), path.join(dest, child));
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
fs.copyFileSync(src, dest);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Define paths
|
|
61
|
+
const terruvimAssets = path.join(__dirname, '..', 'assets');
|
|
62
|
+
const projectRoot = process.cwd();
|
|
63
|
+
const targetAssets = path.join(projectRoot, 'assets');
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Copies all subfolders from terruvim/assets to the target project's assets directory.
|
|
67
|
+
* Used for postinstall automation.
|
|
68
|
+
*/
|
|
69
|
+
function copyAllSubfolders() {
|
|
70
|
+
if (!fs.existsSync(terruvimAssets)) return;
|
|
71
|
+
const subfolders = fs.readdirSync(terruvimAssets).filter(f => fs.statSync(path.join(terruvimAssets, f)).isDirectory());
|
|
72
|
+
for (const sub of subfolders) {
|
|
73
|
+
const src = path.join(terruvimAssets, sub);
|
|
74
|
+
const dest = path.join(targetAssets, sub);
|
|
75
|
+
console.log(`${icons.copy} ${colorize('Copying', 'cyan')} ${colorize(src, 'yellow')} ${icons.arrow} ${colorize(dest, 'green')}`);
|
|
76
|
+
copyRecursiveSync(src, dest);
|
|
77
|
+
}
|
|
78
|
+
console.log(`${icons.check} ${colorize('All asset subfolders copied successfully.', 'green')}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Prompts the user with a question and returns the answer as a Promise.
|
|
83
|
+
* @param {string} question - The question to display
|
|
84
|
+
* @returns {Promise<string>} - The user's input
|
|
85
|
+
*/
|
|
86
|
+
function prompt(question) {
|
|
87
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
88
|
+
return new Promise(resolve => rl.question(colorize(question, 'bright'), ans => { rl.close(); resolve(ans); }));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Interactive mode: lets the user select which asset subfolders to copy.
|
|
93
|
+
*/
|
|
94
|
+
async function main() {
|
|
95
|
+
// Get list of subfolders in assets
|
|
96
|
+
if (!fs.existsSync(terruvimAssets)) {
|
|
97
|
+
console.log(`${icons.warn} ${colorize('No assets directory found in terruvim package.', 'red')}`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const subfolders = fs.readdirSync(terruvimAssets).filter(f => fs.statSync(path.join(terruvimAssets, f)).isDirectory());
|
|
101
|
+
if (subfolders.length === 0) {
|
|
102
|
+
console.log(`${icons.warn} ${colorize('No subfolders found in assets.', 'red')}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
console.log(colorize(`${icons.folder} Available asset subfolders:`, 'magenta'));
|
|
106
|
+
subfolders.forEach((f, i) => console.log(` [${colorize(i+1, 'yellow')}] ${icons.folder} ${colorize(f, 'cyan')}`));
|
|
107
|
+
const answer = await prompt(`Select subfolders to copy (comma separated numbers, or "all"): `);
|
|
108
|
+
let selected = [];
|
|
109
|
+
if (answer.trim().toLowerCase() === 'all') {
|
|
110
|
+
selected = subfolders;
|
|
111
|
+
} else {
|
|
112
|
+
selected = answer.split(',').map(n => subfolders[parseInt(n.trim(), 10)-1]).filter(Boolean);
|
|
113
|
+
}
|
|
114
|
+
if (selected.length === 0) {
|
|
115
|
+
console.log(`${icons.warn} ${colorize('No subfolders selected. Exiting.', 'red')}`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
for (const sub of selected) {
|
|
119
|
+
const src = path.join(terruvimAssets, sub);
|
|
120
|
+
const dest = path.join(targetAssets, sub);
|
|
121
|
+
console.log(`${icons.copy} ${colorize('Copying', 'cyan')} ${colorize(src, 'yellow')} ${icons.arrow} ${colorize(dest, 'green')}`);
|
|
122
|
+
copyRecursiveSync(src, dest);
|
|
123
|
+
}
|
|
124
|
+
console.log(`${icons.check} ${colorize('Selected assets copied successfully.', 'green')}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// If --interactive is passed, run in interactive mode; otherwise, copy all subfolders
|
|
128
|
+
if (process.argv.includes('--interactive')) {
|
|
129
|
+
(async () => {
|
|
130
|
+
console.log(`${icons.info} ${colorize('Copying assets from', 'blue')} ${colorize(terruvimAssets, 'yellow')} ${colorize('to', 'blue')} ${colorize(targetAssets, 'green')}`);
|
|
131
|
+
await main();
|
|
132
|
+
})();
|
|
133
|
+
} else {
|
|
134
|
+
copyAllSubfolders();
|
|
135
|
+
}
|
|
136
|
+
// End of script
|