@venturekit/infra 0.0.0-dev.20260307234057
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/LICENSE +191 -0
- package/dist/constructs/api.d.ts +76 -0
- package/dist/constructs/api.js +101 -0
- package/dist/constructs/index.d.ts +6 -0
- package/dist/constructs/index.js +23 -0
- package/dist/constructs/lambda.d.ts +47 -0
- package/dist/constructs/lambda.js +50 -0
- package/dist/constructs/vpc.d.ts +37 -0
- package/dist/constructs/vpc.js +35 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +15 -0
- package/dist/translators/auth.d.ts +20 -0
- package/dist/translators/auth.js +72 -0
- package/dist/translators/cache.d.ts +21 -0
- package/dist/translators/cache.js +38 -0
- package/dist/translators/database.d.ts +32 -0
- package/dist/translators/database.js +88 -0
- package/dist/translators/index.d.ts +15 -0
- package/dist/translators/index.js +26 -0
- package/dist/translators/orchestrator.d.ts +18 -0
- package/dist/translators/orchestrator.js +127 -0
- package/dist/translators/queue.d.ts +19 -0
- package/dist/translators/queue.js +39 -0
- package/dist/translators/schedule.d.ts +18 -0
- package/dist/translators/schedule.js +44 -0
- package/dist/translators/storage.d.ts +19 -0
- package/dist/translators/storage.js +48 -0
- package/dist/venture.d.ts +89 -0
- package/dist/venture.js +229 -0
- package/package.json +40 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Intent Translator
|
|
4
|
+
*
|
|
5
|
+
* Translates AuthIntent to SST Cognito resources.
|
|
6
|
+
* This file isolates all SST/Cognito-specific logic.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.translateAuth = translateAuth;
|
|
10
|
+
/**
|
|
11
|
+
* Map password strength to Cognito password policy
|
|
12
|
+
*/
|
|
13
|
+
function getPasswordPolicy(strength = 'standard') {
|
|
14
|
+
if (strength === 'strong') {
|
|
15
|
+
return {
|
|
16
|
+
minLength: 12,
|
|
17
|
+
requireLowercase: true,
|
|
18
|
+
requireUppercase: true,
|
|
19
|
+
requireDigits: true,
|
|
20
|
+
requireSymbols: true,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
minLength: 8,
|
|
25
|
+
requireLowercase: true,
|
|
26
|
+
requireUppercase: true,
|
|
27
|
+
requireDigits: true,
|
|
28
|
+
requireSymbols: false,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Translate AuthIntent to SST Cognito UserPool
|
|
33
|
+
*/
|
|
34
|
+
async function translateAuth(intent, sst, projectName) {
|
|
35
|
+
const resourceName = `${projectName}-${intent.id}`;
|
|
36
|
+
// Build user pool configuration
|
|
37
|
+
const userPoolConfig = {
|
|
38
|
+
usernames: intent.signInWith,
|
|
39
|
+
triggers: {},
|
|
40
|
+
};
|
|
41
|
+
// MFA configuration
|
|
42
|
+
if (intent.mfa && intent.mfa !== 'off') {
|
|
43
|
+
userPoolConfig.mfa = intent.mfa;
|
|
44
|
+
}
|
|
45
|
+
// Create user pool
|
|
46
|
+
const userPool = new sst.CognitoUserPool(resourceName, userPoolConfig);
|
|
47
|
+
// Create clients
|
|
48
|
+
let primaryClientId = '';
|
|
49
|
+
if (intent.clients && intent.clients.length > 0) {
|
|
50
|
+
for (const client of intent.clients) {
|
|
51
|
+
const appClient = new sst.CognitoUserPoolClient(`${resourceName}-${client.name}`, {
|
|
52
|
+
userPool: userPool.id,
|
|
53
|
+
});
|
|
54
|
+
if (!primaryClientId) {
|
|
55
|
+
primaryClientId = appClient.id;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Create default client
|
|
61
|
+
const defaultClient = new sst.CognitoUserPoolClient(`${resourceName}-default`, {
|
|
62
|
+
userPool: userPool.id,
|
|
63
|
+
});
|
|
64
|
+
primaryClientId = defaultClient.id;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
userPoolId: userPool.id,
|
|
68
|
+
userPoolArn: userPool.arn,
|
|
69
|
+
clientId: primaryClientId,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2xhdG9ycy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7QUF1Q0gsc0NBb0RDO0FBN0VEOztHQUVHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxXQUFrQyxVQUFVO0lBQ3JFLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE9BQU87WUFDTCxTQUFTLEVBQUUsRUFBRTtZQUNiLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU87UUFDTCxTQUFTLEVBQUUsQ0FBQztRQUNaLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixjQUFjLEVBQUUsS0FBSztLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FDakMsTUFBa0IsRUFDbEIsR0FBUSxFQUNSLFdBQW1CO0lBRW5CLE1BQU0sWUFBWSxHQUFHLEdBQUcsV0FBVyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUVuRCxnQ0FBZ0M7SUFDaEMsTUFBTSxjQUFjLEdBQTRCO1FBQzlDLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM1QixRQUFRLEVBQUUsRUFBRTtLQUNiLENBQUM7SUFFRixvQkFBb0I7SUFDcEIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDdkMsY0FBYyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUV2RSxpQkFBaUI7SUFDakIsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBRXpCLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FDN0MsR0FBRyxZQUFZLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxFQUNoQztnQkFDRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUU7YUFDdEIsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixlQUFlLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sd0JBQXdCO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUNqRCxHQUFHLFlBQVksVUFBVSxFQUN6QjtZQUNFLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtTQUN0QixDQUNGLENBQUM7UUFDRixlQUFlLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTztRQUNMLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUN2QixXQUFXLEVBQUUsUUFBUSxDQUFDLEdBQUc7UUFDekIsUUFBUSxFQUFFLGVBQWU7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGggSW50ZW50IFRyYW5zbGF0b3JcbiAqIFxuICogVHJhbnNsYXRlcyBBdXRoSW50ZW50IHRvIFNTVCBDb2duaXRvIHJlc291cmNlcy5cbiAqIFRoaXMgZmlsZSBpc29sYXRlcyBhbGwgU1NUL0NvZ25pdG8tc3BlY2lmaWMgbG9naWMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdXRoSW50ZW50IH0gZnJvbSAnQHZlbnR1cmVraXQvY29yZSc7XG5cbi8qKlxuICogQXV0aCBvdXRwdXQgYWZ0ZXIgY3JlYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoT3V0cHV0IHtcbiAgdXNlclBvb2xJZDogc3RyaW5nO1xuICB1c2VyUG9vbEFybjogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFwIHBhc3N3b3JkIHN0cmVuZ3RoIHRvIENvZ25pdG8gcGFzc3dvcmQgcG9saWN5XG4gKi9cbmZ1bmN0aW9uIGdldFBhc3N3b3JkUG9saWN5KHN0cmVuZ3RoOiAnc3RhbmRhcmQnIHwgJ3N0cm9uZycgPSAnc3RhbmRhcmQnKSB7XG4gIGlmIChzdHJlbmd0aCA9PT0gJ3N0cm9uZycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWluTGVuZ3RoOiAxMixcbiAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IHRydWUsXG4gICAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxuICAgICAgcmVxdWlyZURpZ2l0czogdHJ1ZSxcbiAgICAgIHJlcXVpcmVTeW1ib2xzOiB0cnVlLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtaW5MZW5ndGg6IDgsXG4gICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcbiAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxuICAgIHJlcXVpcmVEaWdpdHM6IHRydWUsXG4gICAgcmVxdWlyZVN5bWJvbHM6IGZhbHNlLFxuICB9O1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSBBdXRoSW50ZW50IHRvIFNTVCBDb2duaXRvIFVzZXJQb29sXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFuc2xhdGVBdXRoKFxuICBpbnRlbnQ6IEF1dGhJbnRlbnQsXG4gIHNzdDogYW55LFxuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPEF1dGhPdXRwdXQ+IHtcbiAgY29uc3QgcmVzb3VyY2VOYW1lID0gYCR7cHJvamVjdE5hbWV9LSR7aW50ZW50LmlkfWA7XG4gIFxuICAvLyBCdWlsZCB1c2VyIHBvb2wgY29uZmlndXJhdGlvblxuICBjb25zdCB1c2VyUG9vbENvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgdXNlcm5hbWVzOiBpbnRlbnQuc2lnbkluV2l0aCxcbiAgICB0cmlnZ2Vyczoge30sXG4gIH07XG4gIFxuICAvLyBNRkEgY29uZmlndXJhdGlvblxuICBpZiAoaW50ZW50Lm1mYSAmJiBpbnRlbnQubWZhICE9PSAnb2ZmJykge1xuICAgIHVzZXJQb29sQ29uZmlnLm1mYSA9IGludGVudC5tZmE7XG4gIH1cbiAgXG4gIC8vIENyZWF0ZSB1c2VyIHBvb2xcbiAgY29uc3QgdXNlclBvb2wgPSBuZXcgc3N0LkNvZ25pdG9Vc2VyUG9vbChyZXNvdXJjZU5hbWUsIHVzZXJQb29sQ29uZmlnKTtcbiAgXG4gIC8vIENyZWF0ZSBjbGllbnRzXG4gIGxldCBwcmltYXJ5Q2xpZW50SWQgPSAnJztcbiAgXG4gIGlmIChpbnRlbnQuY2xpZW50cyAmJiBpbnRlbnQuY2xpZW50cy5sZW5ndGggPiAwKSB7XG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgaW50ZW50LmNsaWVudHMpIHtcbiAgICAgIGNvbnN0IGFwcENsaWVudCA9IG5ldyBzc3QuQ29nbml0b1VzZXJQb29sQ2xpZW50KFxuICAgICAgICBgJHtyZXNvdXJjZU5hbWV9LSR7Y2xpZW50Lm5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJQb29sOiB1c2VyUG9vbC5pZCxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGlmICghcHJpbWFyeUNsaWVudElkKSB7XG4gICAgICAgIHByaW1hcnlDbGllbnRJZCA9IGFwcENsaWVudC5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gQ3JlYXRlIGRlZmF1bHQgY2xpZW50XG4gICAgY29uc3QgZGVmYXVsdENsaWVudCA9IG5ldyBzc3QuQ29nbml0b1VzZXJQb29sQ2xpZW50KFxuICAgICAgYCR7cmVzb3VyY2VOYW1lfS1kZWZhdWx0YCxcbiAgICAgIHtcbiAgICAgICAgdXNlclBvb2w6IHVzZXJQb29sLmlkLFxuICAgICAgfVxuICAgICk7XG4gICAgcHJpbWFyeUNsaWVudElkID0gZGVmYXVsdENsaWVudC5pZDtcbiAgfVxuICBcbiAgcmV0dXJuIHtcbiAgICB1c2VyUG9vbElkOiB1c2VyUG9vbC5pZCxcbiAgICB1c2VyUG9vbEFybjogdXNlclBvb2wuYXJuLFxuICAgIGNsaWVudElkOiBwcmltYXJ5Q2xpZW50SWQsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Intent Translator
|
|
3
|
+
*
|
|
4
|
+
* Translates CacheIntent to SST cache resources.
|
|
5
|
+
* This file isolates all SST/ElastiCache-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { CacheIntent } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Cache output after creation
|
|
10
|
+
*/
|
|
11
|
+
export interface CacheOutput {
|
|
12
|
+
endpoint: string;
|
|
13
|
+
port: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Translate CacheIntent to SST cache resource
|
|
17
|
+
*
|
|
18
|
+
* Note: SST v3 uses different constructs for Redis.
|
|
19
|
+
* This translator abstracts those differences.
|
|
20
|
+
*/
|
|
21
|
+
export declare function translateCache(intent: CacheIntent, sst: any, projectName: string): Promise<CacheOutput>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cache Intent Translator
|
|
4
|
+
*
|
|
5
|
+
* Translates CacheIntent to SST cache resources.
|
|
6
|
+
* This file isolates all SST/ElastiCache-specific logic.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.translateCache = translateCache;
|
|
10
|
+
/**
|
|
11
|
+
* Map size to cache node type
|
|
12
|
+
*/
|
|
13
|
+
function sizeToNodeType(size) {
|
|
14
|
+
const mapping = {
|
|
15
|
+
small: 'cache.t3.micro',
|
|
16
|
+
medium: 'cache.t3.small',
|
|
17
|
+
large: 'cache.t3.medium',
|
|
18
|
+
xlarge: 'cache.t3.large',
|
|
19
|
+
};
|
|
20
|
+
return mapping[size];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Translate CacheIntent to SST cache resource
|
|
24
|
+
*
|
|
25
|
+
* Note: SST v3 uses different constructs for Redis.
|
|
26
|
+
* This translator abstracts those differences.
|
|
27
|
+
*/
|
|
28
|
+
async function translateCache(intent, sst, projectName) {
|
|
29
|
+
const resourceName = `${projectName}-${intent.id}`;
|
|
30
|
+
// SST v3 uses a simpler Redis construct
|
|
31
|
+
// The translator handles version differences here
|
|
32
|
+
const redis = new sst.Redis(resourceName, {});
|
|
33
|
+
return {
|
|
34
|
+
endpoint: redis.host,
|
|
35
|
+
port: redis.port,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvcnMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOztBQStCSCx3Q0FlQztBQWxDRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLElBQWtCO0lBQ3hDLE1BQU0sT0FBTyxHQUFpQztRQUM1QyxLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixNQUFNLEVBQUUsZ0JBQWdCO0tBQ3pCLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUNsQyxNQUFtQixFQUNuQixHQUFRLEVBQ1IsV0FBbUI7SUFFbkIsTUFBTSxZQUFZLEdBQUcsR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRW5ELHdDQUF3QztJQUN4QyxrREFBa0Q7SUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU5QyxPQUFPO1FBQ0wsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtLQUNqQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FjaGUgSW50ZW50IFRyYW5zbGF0b3JcbiAqIFxuICogVHJhbnNsYXRlcyBDYWNoZUludGVudCB0byBTU1QgY2FjaGUgcmVzb3VyY2VzLlxuICogVGhpcyBmaWxlIGlzb2xhdGVzIGFsbCBTU1QvRWxhc3RpQ2FjaGUtc3BlY2lmaWMgbG9naWMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDYWNoZUludGVudCwgUmVzb3VyY2VTaXplIH0gZnJvbSAnQHZlbnR1cmVraXQvY29yZSc7XG5cbi8qKlxuICogQ2FjaGUgb3V0cHV0IGFmdGVyIGNyZWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVPdXRwdXQge1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59XG5cbi8qKlxuICogTWFwIHNpemUgdG8gY2FjaGUgbm9kZSB0eXBlXG4gKi9cbmZ1bmN0aW9uIHNpemVUb05vZGVUeXBlKHNpemU6IFJlc291cmNlU2l6ZSk6IHN0cmluZyB7XG4gIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxSZXNvdXJjZVNpemUsIHN0cmluZz4gPSB7XG4gICAgc21hbGw6ICdjYWNoZS50My5taWNybycsXG4gICAgbWVkaXVtOiAnY2FjaGUudDMuc21hbGwnLFxuICAgIGxhcmdlOiAnY2FjaGUudDMubWVkaXVtJyxcbiAgICB4bGFyZ2U6ICdjYWNoZS50My5sYXJnZScsXG4gIH07XG4gIHJldHVybiBtYXBwaW5nW3NpemVdO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSBDYWNoZUludGVudCB0byBTU1QgY2FjaGUgcmVzb3VyY2VcbiAqIFxuICogTm90ZTogU1NUIHYzIHVzZXMgZGlmZmVyZW50IGNvbnN0cnVjdHMgZm9yIFJlZGlzLlxuICogVGhpcyB0cmFuc2xhdG9yIGFic3RyYWN0cyB0aG9zZSBkaWZmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYW5zbGF0ZUNhY2hlKFxuICBpbnRlbnQ6IENhY2hlSW50ZW50LFxuICBzc3Q6IGFueSxcbiAgcHJvamVjdE5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxDYWNoZU91dHB1dD4ge1xuICBjb25zdCByZXNvdXJjZU5hbWUgPSBgJHtwcm9qZWN0TmFtZX0tJHtpbnRlbnQuaWR9YDtcbiAgXG4gIC8vIFNTVCB2MyB1c2VzIGEgc2ltcGxlciBSZWRpcyBjb25zdHJ1Y3RcbiAgLy8gVGhlIHRyYW5zbGF0b3IgaGFuZGxlcyB2ZXJzaW9uIGRpZmZlcmVuY2VzIGhlcmVcbiAgY29uc3QgcmVkaXMgPSBuZXcgc3N0LlJlZGlzKHJlc291cmNlTmFtZSwge30pO1xuICBcbiAgcmV0dXJuIHtcbiAgICBlbmRwb2ludDogcmVkaXMuaG9zdCxcbiAgICBwb3J0OiByZWRpcy5wb3J0LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Intent Translator
|
|
3
|
+
*
|
|
4
|
+
* Translates DatabaseIntent to SST RDS resources.
|
|
5
|
+
* This file isolates all SST/RDS-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { DatabaseIntent } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Database output after creation
|
|
10
|
+
*/
|
|
11
|
+
export interface DatabaseOutput {
|
|
12
|
+
endpoint: string;
|
|
13
|
+
port: number;
|
|
14
|
+
secretArn: string;
|
|
15
|
+
databaseName: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Translate DatabaseIntent to SST RDS configuration
|
|
19
|
+
*
|
|
20
|
+
* @param intent - The high-level database intent
|
|
21
|
+
* @param sst - The SST module (passed in to avoid import issues)
|
|
22
|
+
* @param projectName - The project name for resource naming
|
|
23
|
+
* @returns The created database output
|
|
24
|
+
*/
|
|
25
|
+
export declare function translateDatabase(intent: DatabaseIntent, sst: any, projectName: string): Promise<DatabaseOutput>;
|
|
26
|
+
/**
|
|
27
|
+
* Translate DatabaseIntent to SST configuration object
|
|
28
|
+
* (Alternative: returns config instead of creating resource)
|
|
29
|
+
*
|
|
30
|
+
* Use this when you need to defer resource creation.
|
|
31
|
+
*/
|
|
32
|
+
export declare function translateDatabaseConfig(intent: DatabaseIntent, projectName: string): Record<string, unknown>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Database Intent Translator
|
|
4
|
+
*
|
|
5
|
+
* Translates DatabaseIntent to SST RDS resources.
|
|
6
|
+
* This file isolates all SST/RDS-specific logic.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.translateDatabase = translateDatabase;
|
|
10
|
+
exports.translateDatabaseConfig = translateDatabaseConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Map size preset to RDS instance class
|
|
13
|
+
* This mapping is the ONLY place that knows about AWS instance types
|
|
14
|
+
*/
|
|
15
|
+
function sizeToInstanceClass(size, engine) {
|
|
16
|
+
const mapping = {
|
|
17
|
+
small: 'db.t3.micro',
|
|
18
|
+
medium: 'db.t3.small',
|
|
19
|
+
large: 'db.t3.medium',
|
|
20
|
+
xlarge: 'db.t3.large',
|
|
21
|
+
};
|
|
22
|
+
return mapping[size];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Map size preset to storage allocation
|
|
26
|
+
*/
|
|
27
|
+
function sizeToStorage(size) {
|
|
28
|
+
const mapping = {
|
|
29
|
+
small: 20,
|
|
30
|
+
medium: 50,
|
|
31
|
+
large: 100,
|
|
32
|
+
xlarge: 200,
|
|
33
|
+
};
|
|
34
|
+
return mapping[size];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get default port for engine
|
|
38
|
+
*/
|
|
39
|
+
function getDefaultPort(engine) {
|
|
40
|
+
return engine === 'postgres' ? 5432 : 3306;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Translate DatabaseIntent to SST RDS configuration
|
|
44
|
+
*
|
|
45
|
+
* @param intent - The high-level database intent
|
|
46
|
+
* @param sst - The SST module (passed in to avoid import issues)
|
|
47
|
+
* @param projectName - The project name for resource naming
|
|
48
|
+
* @returns The created database output
|
|
49
|
+
*/
|
|
50
|
+
async function translateDatabase(intent, sst, projectName) {
|
|
51
|
+
const resourceName = `${projectName}-${intent.id}`;
|
|
52
|
+
// Translate intent to SST-specific configuration
|
|
53
|
+
// This is where SST version-specific code lives
|
|
54
|
+
const rds = new sst.Postgres(resourceName, {
|
|
55
|
+
scaling: {
|
|
56
|
+
min: intent.size === 'small' ? '0.5 ACU' : intent.size === 'medium' ? '1 ACU' : '2 ACU',
|
|
57
|
+
max: intent.size === 'small' ? '2 ACU' : intent.size === 'medium' ? '4 ACU' : '8 ACU',
|
|
58
|
+
},
|
|
59
|
+
database: intent.name,
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
endpoint: rds.host,
|
|
63
|
+
port: rds.port,
|
|
64
|
+
secretArn: rds.secretArn,
|
|
65
|
+
databaseName: intent.name,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Translate DatabaseIntent to SST configuration object
|
|
70
|
+
* (Alternative: returns config instead of creating resource)
|
|
71
|
+
*
|
|
72
|
+
* Use this when you need to defer resource creation.
|
|
73
|
+
*/
|
|
74
|
+
function translateDatabaseConfig(intent, projectName) {
|
|
75
|
+
return {
|
|
76
|
+
name: `${projectName}-${intent.id}`,
|
|
77
|
+
engine: intent.type,
|
|
78
|
+
instanceClass: sizeToInstanceClass(intent.size, intent.type),
|
|
79
|
+
allocatedStorage: sizeToStorage(intent.size),
|
|
80
|
+
databaseName: intent.name,
|
|
81
|
+
multiAz: intent.highAvailability ?? false,
|
|
82
|
+
storageEncrypted: intent.encrypted ?? true,
|
|
83
|
+
backupRetentionPeriod: intent.backups !== false ? (intent.backupRetentionDays ?? 7) : 0,
|
|
84
|
+
performanceInsightsEnabled: intent.performanceInsights ?? false,
|
|
85
|
+
port: getDefaultPort(intent.type),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvcnMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOztBQXdESCw4Q0F1QkM7QUFRRCwwREFnQkM7QUF6RkQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFrQixFQUFFLE1BQTRCO0lBQzNFLE1BQU0sT0FBTyxHQUFpQztRQUM1QyxLQUFLLEVBQUUsYUFBYTtRQUNwQixNQUFNLEVBQUUsYUFBYTtRQUNyQixLQUFLLEVBQUUsY0FBYztRQUNyQixNQUFNLEVBQUUsYUFBYTtLQUN0QixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBa0I7SUFDdkMsTUFBTSxPQUFPLEdBQWlDO1FBQzVDLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxHQUFHO0tBQ1osQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQTRCO0lBQ2xELE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE1BQXNCLEVBQ3RCLEdBQVEsRUFDUixXQUFtQjtJQUVuQixNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7SUFFbkQsaURBQWlEO0lBQ2pELGdEQUFnRDtJQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1FBQ3pDLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3ZGLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPO1NBQ3RGO1FBQ0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0tBQ3RCLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDbEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2QsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLE1BQXNCLEVBQ3RCLFdBQW1CO0lBRW5CLE9BQU87UUFDTCxJQUFJLEVBQUUsR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDbkIsYUFBYSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1RCxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1QyxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDekIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1FBQ3pDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSTtRQUMxQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkYsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixJQUFJLEtBQUs7UUFDL0QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ2xDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEYXRhYmFzZSBJbnRlbnQgVHJhbnNsYXRvclxuICogXG4gKiBUcmFuc2xhdGVzIERhdGFiYXNlSW50ZW50IHRvIFNTVCBSRFMgcmVzb3VyY2VzLlxuICogVGhpcyBmaWxlIGlzb2xhdGVzIGFsbCBTU1QvUkRTLXNwZWNpZmljIGxvZ2ljLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VJbnRlbnQsIFJlc291cmNlU2l6ZSB9IGZyb20gJ0B2ZW50dXJla2l0L2NvcmUnO1xuXG4vKipcbiAqIERhdGFiYXNlIG91dHB1dCBhZnRlciBjcmVhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3V0cHV0IHtcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBzZWNyZXRBcm46IHN0cmluZztcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFwIHNpemUgcHJlc2V0IHRvIFJEUyBpbnN0YW5jZSBjbGFzc1xuICogVGhpcyBtYXBwaW5nIGlzIHRoZSBPTkxZIHBsYWNlIHRoYXQga25vd3MgYWJvdXQgQVdTIGluc3RhbmNlIHR5cGVzXG4gKi9cbmZ1bmN0aW9uIHNpemVUb0luc3RhbmNlQ2xhc3Moc2l6ZTogUmVzb3VyY2VTaXplLCBlbmdpbmU6ICdwb3N0Z3JlcycgfCAnbXlzcWwnKTogc3RyaW5nIHtcbiAgY29uc3QgbWFwcGluZzogUmVjb3JkPFJlc291cmNlU2l6ZSwgc3RyaW5nPiA9IHtcbiAgICBzbWFsbDogJ2RiLnQzLm1pY3JvJyxcbiAgICBtZWRpdW06ICdkYi50My5zbWFsbCcsXG4gICAgbGFyZ2U6ICdkYi50My5tZWRpdW0nLFxuICAgIHhsYXJnZTogJ2RiLnQzLmxhcmdlJyxcbiAgfTtcbiAgcmV0dXJuIG1hcHBpbmdbc2l6ZV07XG59XG5cbi8qKlxuICogTWFwIHNpemUgcHJlc2V0IHRvIHN0b3JhZ2UgYWxsb2NhdGlvblxuICovXG5mdW5jdGlvbiBzaXplVG9TdG9yYWdlKHNpemU6IFJlc291cmNlU2l6ZSk6IG51bWJlciB7XG4gIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxSZXNvdXJjZVNpemUsIG51bWJlcj4gPSB7XG4gICAgc21hbGw6IDIwLFxuICAgIG1lZGl1bTogNTAsXG4gICAgbGFyZ2U6IDEwMCxcbiAgICB4bGFyZ2U6IDIwMCxcbiAgfTtcbiAgcmV0dXJuIG1hcHBpbmdbc2l6ZV07XG59XG5cbi8qKlxuICogR2V0IGRlZmF1bHQgcG9ydCBmb3IgZW5naW5lXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRQb3J0KGVuZ2luZTogJ3Bvc3RncmVzJyB8ICdteXNxbCcpOiBudW1iZXIge1xuICByZXR1cm4gZW5naW5lID09PSAncG9zdGdyZXMnID8gNTQzMiA6IDMzMDY7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIERhdGFiYXNlSW50ZW50IHRvIFNTVCBSRFMgY29uZmlndXJhdGlvblxuICogXG4gKiBAcGFyYW0gaW50ZW50IC0gVGhlIGhpZ2gtbGV2ZWwgZGF0YWJhc2UgaW50ZW50XG4gKiBAcGFyYW0gc3N0IC0gVGhlIFNTVCBtb2R1bGUgKHBhc3NlZCBpbiB0byBhdm9pZCBpbXBvcnQgaXNzdWVzKVxuICogQHBhcmFtIHByb2plY3ROYW1lIC0gVGhlIHByb2plY3QgbmFtZSBmb3IgcmVzb3VyY2UgbmFtaW5nXG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBkYXRhYmFzZSBvdXRwdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYW5zbGF0ZURhdGFiYXNlKFxuICBpbnRlbnQ6IERhdGFiYXNlSW50ZW50LFxuICBzc3Q6IGFueSxcbiAgcHJvamVjdE5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxEYXRhYmFzZU91dHB1dD4ge1xuICBjb25zdCByZXNvdXJjZU5hbWUgPSBgJHtwcm9qZWN0TmFtZX0tJHtpbnRlbnQuaWR9YDtcbiAgXG4gIC8vIFRyYW5zbGF0ZSBpbnRlbnQgdG8gU1NULXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAgLy8gVGhpcyBpcyB3aGVyZSBTU1QgdmVyc2lvbi1zcGVjaWZpYyBjb2RlIGxpdmVzXG4gIGNvbnN0IHJkcyA9IG5ldyBzc3QuUG9zdGdyZXMocmVzb3VyY2VOYW1lLCB7XG4gICAgc2NhbGluZzoge1xuICAgICAgbWluOiBpbnRlbnQuc2l6ZSA9PT0gJ3NtYWxsJyA/ICcwLjUgQUNVJyA6IGludGVudC5zaXplID09PSAnbWVkaXVtJyA/ICcxIEFDVScgOiAnMiBBQ1UnLFxuICAgICAgbWF4OiBpbnRlbnQuc2l6ZSA9PT0gJ3NtYWxsJyA/ICcyIEFDVScgOiBpbnRlbnQuc2l6ZSA9PT0gJ21lZGl1bScgPyAnNCBBQ1UnIDogJzggQUNVJyxcbiAgICB9LFxuICAgIGRhdGFiYXNlOiBpbnRlbnQubmFtZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBlbmRwb2ludDogcmRzLmhvc3QsXG4gICAgcG9ydDogcmRzLnBvcnQsXG4gICAgc2VjcmV0QXJuOiByZHMuc2VjcmV0QXJuLFxuICAgIGRhdGFiYXNlTmFtZTogaW50ZW50Lm5hbWUsXG4gIH07XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIERhdGFiYXNlSW50ZW50IHRvIFNTVCBjb25maWd1cmF0aW9uIG9iamVjdFxuICogKEFsdGVybmF0aXZlOiByZXR1cm5zIGNvbmZpZyBpbnN0ZWFkIG9mIGNyZWF0aW5nIHJlc291cmNlKVxuICogXG4gKiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkIHRvIGRlZmVyIHJlc291cmNlIGNyZWF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlRGF0YWJhc2VDb25maWcoXG4gIGludGVudDogRGF0YWJhc2VJbnRlbnQsXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBgJHtwcm9qZWN0TmFtZX0tJHtpbnRlbnQuaWR9YCxcbiAgICBlbmdpbmU6IGludGVudC50eXBlLFxuICAgIGluc3RhbmNlQ2xhc3M6IHNpemVUb0luc3RhbmNlQ2xhc3MoaW50ZW50LnNpemUsIGludGVudC50eXBlKSxcbiAgICBhbGxvY2F0ZWRTdG9yYWdlOiBzaXplVG9TdG9yYWdlKGludGVudC5zaXplKSxcbiAgICBkYXRhYmFzZU5hbWU6IGludGVudC5uYW1lLFxuICAgIG11bHRpQXo6IGludGVudC5oaWdoQXZhaWxhYmlsaXR5ID8/IGZhbHNlLFxuICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IGludGVudC5lbmNyeXB0ZWQgPz8gdHJ1ZSxcbiAgICBiYWNrdXBSZXRlbnRpb25QZXJpb2Q6IGludGVudC5iYWNrdXBzICE9PSBmYWxzZSA/IChpbnRlbnQuYmFja3VwUmV0ZW50aW9uRGF5cyA/PyA3KSA6IDAsXG4gICAgcGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWQ6IGludGVudC5wZXJmb3JtYW5jZUluc2lnaHRzID8/IGZhbHNlLFxuICAgIHBvcnQ6IGdldERlZmF1bHRQb3J0KGludGVudC50eXBlKSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Translators
|
|
3
|
+
*
|
|
4
|
+
* Translates VentureKit intents to SST resources.
|
|
5
|
+
* This is the ONLY place where SST-specific code lives.
|
|
6
|
+
*
|
|
7
|
+
* When SST releases a new version, only this file needs updating.
|
|
8
|
+
*/
|
|
9
|
+
export { translateDatabase } from './database';
|
|
10
|
+
export { translateStorage } from './storage';
|
|
11
|
+
export { translateAuth } from './auth';
|
|
12
|
+
export { translateQueue } from './queue';
|
|
13
|
+
export { translateCache } from './cache';
|
|
14
|
+
export { translateSchedule } from './schedule';
|
|
15
|
+
export { translateAllIntents } from './orchestrator';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Intent Translators
|
|
4
|
+
*
|
|
5
|
+
* Translates VentureKit intents to SST resources.
|
|
6
|
+
* This is the ONLY place where SST-specific code lives.
|
|
7
|
+
*
|
|
8
|
+
* When SST releases a new version, only this file needs updating.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.translateAllIntents = exports.translateSchedule = exports.translateCache = exports.translateQueue = exports.translateAuth = exports.translateStorage = exports.translateDatabase = void 0;
|
|
12
|
+
var database_1 = require("./database");
|
|
13
|
+
Object.defineProperty(exports, "translateDatabase", { enumerable: true, get: function () { return database_1.translateDatabase; } });
|
|
14
|
+
var storage_1 = require("./storage");
|
|
15
|
+
Object.defineProperty(exports, "translateStorage", { enumerable: true, get: function () { return storage_1.translateStorage; } });
|
|
16
|
+
var auth_1 = require("./auth");
|
|
17
|
+
Object.defineProperty(exports, "translateAuth", { enumerable: true, get: function () { return auth_1.translateAuth; } });
|
|
18
|
+
var queue_1 = require("./queue");
|
|
19
|
+
Object.defineProperty(exports, "translateQueue", { enumerable: true, get: function () { return queue_1.translateQueue; } });
|
|
20
|
+
var cache_1 = require("./cache");
|
|
21
|
+
Object.defineProperty(exports, "translateCache", { enumerable: true, get: function () { return cache_1.translateCache; } });
|
|
22
|
+
var schedule_1 = require("./schedule");
|
|
23
|
+
Object.defineProperty(exports, "translateSchedule", { enumerable: true, get: function () { return schedule_1.translateSchedule; } });
|
|
24
|
+
var orchestrator_1 = require("./orchestrator");
|
|
25
|
+
Object.defineProperty(exports, "translateAllIntents", { enumerable: true, get: function () { return orchestrator_1.translateAllIntents; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7OztBQUVILHVDQUErQztBQUF0Qyw2R0FBQSxpQkFBaUIsT0FBQTtBQUMxQixxQ0FBNkM7QUFBcEMsMkdBQUEsZ0JBQWdCLE9BQUE7QUFDekIsK0JBQXVDO0FBQTlCLHFHQUFBLGFBQWEsT0FBQTtBQUN0QixpQ0FBeUM7QUFBaEMsdUdBQUEsY0FBYyxPQUFBO0FBQ3ZCLGlDQUF5QztBQUFoQyx1R0FBQSxjQUFjLE9BQUE7QUFDdkIsdUNBQStDO0FBQXRDLDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLCtDQUFxRDtBQUE1QyxtSEFBQSxtQkFBbUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZW50IFRyYW5zbGF0b3JzXG4gKiBcbiAqIFRyYW5zbGF0ZXMgVmVudHVyZUtpdCBpbnRlbnRzIHRvIFNTVCByZXNvdXJjZXMuXG4gKiBUaGlzIGlzIHRoZSBPTkxZIHBsYWNlIHdoZXJlIFNTVC1zcGVjaWZpYyBjb2RlIGxpdmVzLlxuICogXG4gKiBXaGVuIFNTVCByZWxlYXNlcyBhIG5ldyB2ZXJzaW9uLCBvbmx5IHRoaXMgZmlsZSBuZWVkcyB1cGRhdGluZy5cbiAqL1xuXG5leHBvcnQgeyB0cmFuc2xhdGVEYXRhYmFzZSB9IGZyb20gJy4vZGF0YWJhc2UnO1xuZXhwb3J0IHsgdHJhbnNsYXRlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5leHBvcnQgeyB0cmFuc2xhdGVBdXRoIH0gZnJvbSAnLi9hdXRoJztcbmV4cG9ydCB7IHRyYW5zbGF0ZVF1ZXVlIH0gZnJvbSAnLi9xdWV1ZSc7XG5leHBvcnQgeyB0cmFuc2xhdGVDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuZXhwb3J0IHsgdHJhbnNsYXRlU2NoZWR1bGUgfSBmcm9tICcuL3NjaGVkdWxlJztcbmV4cG9ydCB7IHRyYW5zbGF0ZUFsbEludGVudHMgfSBmcm9tICcuL29yY2hlc3RyYXRvcic7XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the translation of all intents to SST resources.
|
|
5
|
+
* This is the main entry point for intent-based infrastructure creation.
|
|
6
|
+
*/
|
|
7
|
+
import type { VentureIntent, IntentOutputs } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Translate all intents to SST resources
|
|
10
|
+
*
|
|
11
|
+
* This function is the single point where SST is imported and used.
|
|
12
|
+
* When SST releases a new version, only the translator files need updating.
|
|
13
|
+
*
|
|
14
|
+
* @param intents - The high-level infrastructure intents
|
|
15
|
+
* @param projectName - The project name for resource naming
|
|
16
|
+
* @returns Outputs from all created resources
|
|
17
|
+
*/
|
|
18
|
+
export declare function translateAllIntents(intents: VentureIntent, projectName: string): Promise<IntentOutputs>;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Intent Orchestrator
|
|
4
|
+
*
|
|
5
|
+
* Orchestrates the translation of all intents to SST resources.
|
|
6
|
+
* This is the main entry point for intent-based infrastructure creation.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.translateAllIntents = translateAllIntents;
|
|
43
|
+
const database_1 = require("./database");
|
|
44
|
+
const storage_1 = require("./storage");
|
|
45
|
+
const auth_1 = require("./auth");
|
|
46
|
+
const queue_1 = require("./queue");
|
|
47
|
+
const cache_1 = require("./cache");
|
|
48
|
+
const schedule_1 = require("./schedule");
|
|
49
|
+
/**
|
|
50
|
+
* Translate all intents to SST resources
|
|
51
|
+
*
|
|
52
|
+
* This function is the single point where SST is imported and used.
|
|
53
|
+
* When SST releases a new version, only the translator files need updating.
|
|
54
|
+
*
|
|
55
|
+
* @param intents - The high-level infrastructure intents
|
|
56
|
+
* @param projectName - The project name for resource naming
|
|
57
|
+
* @returns Outputs from all created resources
|
|
58
|
+
*/
|
|
59
|
+
async function translateAllIntents(intents, projectName) {
|
|
60
|
+
// Dynamic import of SST - isolated to this file
|
|
61
|
+
const sst = await Promise.resolve().then(() => __importStar(require('sst')));
|
|
62
|
+
const outputs = {
|
|
63
|
+
databases: {},
|
|
64
|
+
storage: {},
|
|
65
|
+
auth: {},
|
|
66
|
+
queues: {},
|
|
67
|
+
caches: {},
|
|
68
|
+
};
|
|
69
|
+
// Translate databases
|
|
70
|
+
if (intents.databases) {
|
|
71
|
+
for (const intent of intents.databases) {
|
|
72
|
+
const result = await (0, database_1.translateDatabase)(intent, sst, projectName);
|
|
73
|
+
outputs.databases[intent.id] = {
|
|
74
|
+
endpoint: result.endpoint,
|
|
75
|
+
port: result.port,
|
|
76
|
+
secretArn: result.secretArn,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Translate storage
|
|
81
|
+
if (intents.storage) {
|
|
82
|
+
for (const intent of intents.storage) {
|
|
83
|
+
const result = await (0, storage_1.translateStorage)(intent, sst, projectName);
|
|
84
|
+
outputs.storage[intent.id] = {
|
|
85
|
+
bucketName: result.bucketName,
|
|
86
|
+
cdnUrl: result.cdnUrl,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Translate auth
|
|
91
|
+
if (intents.auth) {
|
|
92
|
+
for (const intent of intents.auth) {
|
|
93
|
+
const result = await (0, auth_1.translateAuth)(intent, sst, projectName);
|
|
94
|
+
outputs.auth[intent.id] = {
|
|
95
|
+
userPoolId: result.userPoolId,
|
|
96
|
+
clientId: result.clientId,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Translate queues
|
|
101
|
+
if (intents.queues) {
|
|
102
|
+
for (const intent of intents.queues) {
|
|
103
|
+
const result = await (0, queue_1.translateQueue)(intent, sst, projectName);
|
|
104
|
+
outputs.queues[intent.id] = {
|
|
105
|
+
queueUrl: result.queueUrl,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Translate caches
|
|
110
|
+
if (intents.caches) {
|
|
111
|
+
for (const intent of intents.caches) {
|
|
112
|
+
const result = await (0, cache_1.translateCache)(intent, sst, projectName);
|
|
113
|
+
outputs.caches[intent.id] = {
|
|
114
|
+
endpoint: result.endpoint,
|
|
115
|
+
port: result.port,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Translate schedules (no output needed, they're event-driven)
|
|
120
|
+
if (intents.schedules) {
|
|
121
|
+
for (const intent of intents.schedules) {
|
|
122
|
+
await (0, schedule_1.translateSchedule)(intent, sst, projectName);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return outputs;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyYW5zbGF0b3JzL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JILGtEQThFQztBQS9GRCx5Q0FBK0M7QUFDL0MsdUNBQTZDO0FBQzdDLGlDQUF1QztBQUN2QyxtQ0FBeUM7QUFDekMsbUNBQXlDO0FBQ3pDLHlDQUErQztBQUUvQzs7Ozs7Ozs7O0dBU0c7QUFDSSxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLE9BQXNCLEVBQ3RCLFdBQW1CO0lBRW5CLGdEQUFnRDtJQUNoRCxNQUFNLEdBQUcsR0FBRyx3REFBYSxLQUFLLEdBQVEsQ0FBQztJQUV2QyxNQUFNLE9BQU8sR0FBa0I7UUFDN0IsU0FBUyxFQUFFLEVBQUU7UUFDYixPQUFPLEVBQUUsRUFBRTtRQUNYLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixzQkFBc0I7SUFDdEIsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRCQUFpQixFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDakUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUc7Z0JBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7YUFDNUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHO2dCQUMzQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTthQUN0QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7SUFDakIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG9CQUFhLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFDeEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM3QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDMUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxzQkFBYyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDOUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUc7Z0JBQzFCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTthQUMxQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHNCQUFjLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5RCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFDMUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBQSw0QkFBaUIsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZW50IE9yY2hlc3RyYXRvclxuICogXG4gKiBPcmNoZXN0cmF0ZXMgdGhlIHRyYW5zbGF0aW9uIG9mIGFsbCBpbnRlbnRzIHRvIFNTVCByZXNvdXJjZXMuXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBpbnRlbnQtYmFzZWQgaW5mcmFzdHJ1Y3R1cmUgY3JlYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWZW50dXJlSW50ZW50LCBJbnRlbnRPdXRwdXRzIH0gZnJvbSAnQHZlbnR1cmVraXQvY29yZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGVEYXRhYmFzZSB9IGZyb20gJy4vZGF0YWJhc2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGVBdXRoIH0gZnJvbSAnLi9hdXRoJztcbmltcG9ydCB7IHRyYW5zbGF0ZVF1ZXVlIH0gZnJvbSAnLi9xdWV1ZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGVDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IHsgdHJhbnNsYXRlU2NoZWR1bGUgfSBmcm9tICcuL3NjaGVkdWxlJztcblxuLyoqXG4gKiBUcmFuc2xhdGUgYWxsIGludGVudHMgdG8gU1NUIHJlc291cmNlc1xuICogXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzaW5nbGUgcG9pbnQgd2hlcmUgU1NUIGlzIGltcG9ydGVkIGFuZCB1c2VkLlxuICogV2hlbiBTU1QgcmVsZWFzZXMgYSBuZXcgdmVyc2lvbiwgb25seSB0aGUgdHJhbnNsYXRvciBmaWxlcyBuZWVkIHVwZGF0aW5nLlxuICogXG4gKiBAcGFyYW0gaW50ZW50cyAtIFRoZSBoaWdoLWxldmVsIGluZnJhc3RydWN0dXJlIGludGVudHNcbiAqIEBwYXJhbSBwcm9qZWN0TmFtZSAtIFRoZSBwcm9qZWN0IG5hbWUgZm9yIHJlc291cmNlIG5hbWluZ1xuICogQHJldHVybnMgT3V0cHV0cyBmcm9tIGFsbCBjcmVhdGVkIHJlc291cmNlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNsYXRlQWxsSW50ZW50cyhcbiAgaW50ZW50czogVmVudHVyZUludGVudCxcbiAgcHJvamVjdE5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxJbnRlbnRPdXRwdXRzPiB7XG4gIC8vIER5bmFtaWMgaW1wb3J0IG9mIFNTVCAtIGlzb2xhdGVkIHRvIHRoaXMgZmlsZVxuICBjb25zdCBzc3QgPSBhd2FpdCBpbXBvcnQoJ3NzdCcpIGFzIGFueTtcbiAgXG4gIGNvbnN0IG91dHB1dHM6IEludGVudE91dHB1dHMgPSB7XG4gICAgZGF0YWJhc2VzOiB7fSxcbiAgICBzdG9yYWdlOiB7fSxcbiAgICBhdXRoOiB7fSxcbiAgICBxdWV1ZXM6IHt9LFxuICAgIGNhY2hlczoge30sXG4gIH07XG4gIFxuICAvLyBUcmFuc2xhdGUgZGF0YWJhc2VzXG4gIGlmIChpbnRlbnRzLmRhdGFiYXNlcykge1xuICAgIGZvciAoY29uc3QgaW50ZW50IG9mIGludGVudHMuZGF0YWJhc2VzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2xhdGVEYXRhYmFzZShpbnRlbnQsIHNzdCwgcHJvamVjdE5hbWUpO1xuICAgICAgb3V0cHV0cy5kYXRhYmFzZXNbaW50ZW50LmlkXSA9IHtcbiAgICAgICAgZW5kcG9pbnQ6IHJlc3VsdC5lbmRwb2ludCxcbiAgICAgICAgcG9ydDogcmVzdWx0LnBvcnQsXG4gICAgICAgIHNlY3JldEFybjogcmVzdWx0LnNlY3JldEFybixcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIFxuICAvLyBUcmFuc2xhdGUgc3RvcmFnZVxuICBpZiAoaW50ZW50cy5zdG9yYWdlKSB7XG4gICAgZm9yIChjb25zdCBpbnRlbnQgb2YgaW50ZW50cy5zdG9yYWdlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2xhdGVTdG9yYWdlKGludGVudCwgc3N0LCBwcm9qZWN0TmFtZSk7XG4gICAgICBvdXRwdXRzLnN0b3JhZ2VbaW50ZW50LmlkXSA9IHtcbiAgICAgICAgYnVja2V0TmFtZTogcmVzdWx0LmJ1Y2tldE5hbWUsXG4gICAgICAgIGNkblVybDogcmVzdWx0LmNkblVybCxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIFxuICAvLyBUcmFuc2xhdGUgYXV0aFxuICBpZiAoaW50ZW50cy5hdXRoKSB7XG4gICAgZm9yIChjb25zdCBpbnRlbnQgb2YgaW50ZW50cy5hdXRoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2xhdGVBdXRoKGludGVudCwgc3N0LCBwcm9qZWN0TmFtZSk7XG4gICAgICBvdXRwdXRzLmF1dGhbaW50ZW50LmlkXSA9IHtcbiAgICAgICAgdXNlclBvb2xJZDogcmVzdWx0LnVzZXJQb29sSWQsXG4gICAgICAgIGNsaWVudElkOiByZXN1bHQuY2xpZW50SWQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBcbiAgLy8gVHJhbnNsYXRlIHF1ZXVlc1xuICBpZiAoaW50ZW50cy5xdWV1ZXMpIHtcbiAgICBmb3IgKGNvbnN0IGludGVudCBvZiBpbnRlbnRzLnF1ZXVlcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhbnNsYXRlUXVldWUoaW50ZW50LCBzc3QsIHByb2plY3ROYW1lKTtcbiAgICAgIG91dHB1dHMucXVldWVzW2ludGVudC5pZF0gPSB7XG4gICAgICAgIHF1ZXVlVXJsOiByZXN1bHQucXVldWVVcmwsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBcbiAgLy8gVHJhbnNsYXRlIGNhY2hlc1xuICBpZiAoaW50ZW50cy5jYWNoZXMpIHtcbiAgICBmb3IgKGNvbnN0IGludGVudCBvZiBpbnRlbnRzLmNhY2hlcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhbnNsYXRlQ2FjaGUoaW50ZW50LCBzc3QsIHByb2plY3ROYW1lKTtcbiAgICAgIG91dHB1dHMuY2FjaGVzW2ludGVudC5pZF0gPSB7XG4gICAgICAgIGVuZHBvaW50OiByZXN1bHQuZW5kcG9pbnQsXG4gICAgICAgIHBvcnQ6IHJlc3VsdC5wb3J0LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIFRyYW5zbGF0ZSBzY2hlZHVsZXMgKG5vIG91dHB1dCBuZWVkZWQsIHRoZXkncmUgZXZlbnQtZHJpdmVuKVxuICBpZiAoaW50ZW50cy5zY2hlZHVsZXMpIHtcbiAgICBmb3IgKGNvbnN0IGludGVudCBvZiBpbnRlbnRzLnNjaGVkdWxlcykge1xuICAgICAgYXdhaXQgdHJhbnNsYXRlU2NoZWR1bGUoaW50ZW50LCBzc3QsIHByb2plY3ROYW1lKTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiBvdXRwdXRzO1xufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue Intent Translator
|
|
3
|
+
*
|
|
4
|
+
* Translates QueueIntent to SST SQS resources.
|
|
5
|
+
* This file isolates all SST/SQS-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { QueueIntent } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Queue output after creation
|
|
10
|
+
*/
|
|
11
|
+
export interface QueueOutput {
|
|
12
|
+
queueUrl: string;
|
|
13
|
+
queueArn: string;
|
|
14
|
+
deadLetterQueueUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Translate QueueIntent to SST Queue
|
|
18
|
+
*/
|
|
19
|
+
export declare function translateQueue(intent: QueueIntent, sst: any, projectName: string): Promise<QueueOutput>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Queue Intent Translator
|
|
4
|
+
*
|
|
5
|
+
* Translates QueueIntent to SST SQS resources.
|
|
6
|
+
* This file isolates all SST/SQS-specific logic.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.translateQueue = translateQueue;
|
|
10
|
+
/**
|
|
11
|
+
* Translate QueueIntent to SST Queue
|
|
12
|
+
*/
|
|
13
|
+
async function translateQueue(intent, sst, projectName) {
|
|
14
|
+
const resourceName = `${projectName}-${intent.id}`;
|
|
15
|
+
// Build queue configuration
|
|
16
|
+
const queueConfig = {
|
|
17
|
+
fifo: intent.type === 'fifo',
|
|
18
|
+
};
|
|
19
|
+
if (intent.visibilityTimeoutSeconds) {
|
|
20
|
+
queueConfig.visibilityTimeout = `${intent.visibilityTimeoutSeconds} seconds`;
|
|
21
|
+
}
|
|
22
|
+
// Create dead letter queue if requested
|
|
23
|
+
let dlqUrl;
|
|
24
|
+
if (intent.deadLetterQueue) {
|
|
25
|
+
const dlq = new sst.Queue(`${resourceName}-dlq`, {
|
|
26
|
+
fifo: intent.type === 'fifo',
|
|
27
|
+
});
|
|
28
|
+
queueConfig.dlq = dlq.arn;
|
|
29
|
+
dlqUrl = dlq.url;
|
|
30
|
+
}
|
|
31
|
+
// Create main queue
|
|
32
|
+
const queue = new sst.Queue(resourceName, queueConfig);
|
|
33
|
+
return {
|
|
34
|
+
queueUrl: queue.url,
|
|
35
|
+
queueArn: queue.arn,
|
|
36
|
+
deadLetterQueueUrl: dlqUrl,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvcnMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOztBQWdCSCx3Q0FrQ0M7QUFyQ0Q7O0dBRUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUNsQyxNQUFtQixFQUNuQixHQUFRLEVBQ1IsV0FBbUI7SUFFbkIsTUFBTSxZQUFZLEdBQUcsR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRW5ELDRCQUE0QjtJQUM1QixNQUFNLFdBQVcsR0FBNEI7UUFDM0MsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTTtLQUM3QixDQUFDO0lBRUYsSUFBSSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNwQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxNQUFNLENBQUMsd0JBQXdCLFVBQVUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksTUFBMEIsQ0FBQztJQUMvQixJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLE1BQU0sRUFBRTtZQUMvQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNO1NBQzdCLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdkQsT0FBTztRQUNMLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRztRQUNuQixRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDbkIsa0JBQWtCLEVBQUUsTUFBTTtLQUMzQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUXVldWUgSW50ZW50IFRyYW5zbGF0b3JcbiAqIFxuICogVHJhbnNsYXRlcyBRdWV1ZUludGVudCB0byBTU1QgU1FTIHJlc291cmNlcy5cbiAqIFRoaXMgZmlsZSBpc29sYXRlcyBhbGwgU1NUL1NRUy1zcGVjaWZpYyBsb2dpYy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFF1ZXVlSW50ZW50IH0gZnJvbSAnQHZlbnR1cmVraXQvY29yZSc7XG5cbi8qKlxuICogUXVldWUgb3V0cHV0IGFmdGVyIGNyZWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVldWVPdXRwdXQge1xuICBxdWV1ZVVybDogc3RyaW5nO1xuICBxdWV1ZUFybjogc3RyaW5nO1xuICBkZWFkTGV0dGVyUXVldWVVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIFF1ZXVlSW50ZW50IHRvIFNTVCBRdWV1ZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNsYXRlUXVldWUoXG4gIGludGVudDogUXVldWVJbnRlbnQsXG4gIHNzdDogYW55LFxuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFF1ZXVlT3V0cHV0PiB7XG4gIGNvbnN0IHJlc291cmNlTmFtZSA9IGAke3Byb2plY3ROYW1lfS0ke2ludGVudC5pZH1gO1xuICBcbiAgLy8gQnVpbGQgcXVldWUgY29uZmlndXJhdGlvblxuICBjb25zdCBxdWV1ZUNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgZmlmbzogaW50ZW50LnR5cGUgPT09ICdmaWZvJyxcbiAgfTtcbiAgXG4gIGlmIChpbnRlbnQudmlzaWJpbGl0eVRpbWVvdXRTZWNvbmRzKSB7XG4gICAgcXVldWVDb25maWcudmlzaWJpbGl0eVRpbWVvdXQgPSBgJHtpbnRlbnQudmlzaWJpbGl0eVRpbWVvdXRTZWNvbmRzfSBzZWNvbmRzYDtcbiAgfVxuICBcbiAgLy8gQ3JlYXRlIGRlYWQgbGV0dGVyIHF1ZXVlIGlmIHJlcXVlc3RlZFxuICBsZXQgZGxxVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChpbnRlbnQuZGVhZExldHRlclF1ZXVlKSB7XG4gICAgY29uc3QgZGxxID0gbmV3IHNzdC5RdWV1ZShgJHtyZXNvdXJjZU5hbWV9LWRscWAsIHtcbiAgICAgIGZpZm86IGludGVudC50eXBlID09PSAnZmlmbycsXG4gICAgfSk7XG4gICAgcXVldWVDb25maWcuZGxxID0gZGxxLmFybjtcbiAgICBkbHFVcmwgPSBkbHEudXJsO1xuICB9XG4gIFxuICAvLyBDcmVhdGUgbWFpbiBxdWV1ZVxuICBjb25zdCBxdWV1ZSA9IG5ldyBzc3QuUXVldWUocmVzb3VyY2VOYW1lLCBxdWV1ZUNvbmZpZyk7XG4gIFxuICByZXR1cm4ge1xuICAgIHF1ZXVlVXJsOiBxdWV1ZS51cmwsXG4gICAgcXVldWVBcm46IHF1ZXVlLmFybixcbiAgICBkZWFkTGV0dGVyUXVldWVVcmw6IGRscVVybCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Intent Translator
|
|
3
|
+
*
|
|
4
|
+
* Translates ScheduleIntent to SST Cron resources.
|
|
5
|
+
* This file isolates all SST/EventBridge-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { ScheduleIntent } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Schedule output after creation
|
|
10
|
+
*/
|
|
11
|
+
export interface ScheduleOutput {
|
|
12
|
+
ruleArn: string;
|
|
13
|
+
ruleName: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Translate ScheduleIntent to SST Cron
|
|
17
|
+
*/
|
|
18
|
+
export declare function translateSchedule(intent: ScheduleIntent, sst: any, projectName: string): Promise<ScheduleOutput>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Schedule Intent Translator
|
|
4
|
+
*
|
|
5
|
+
* Translates ScheduleIntent to SST Cron resources.
|
|
6
|
+
* This file isolates all SST/EventBridge-specific logic.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.translateSchedule = translateSchedule;
|
|
10
|
+
/**
|
|
11
|
+
* Convert rate string to SST format
|
|
12
|
+
* e.g., "5 minutes" -> "rate(5 minutes)"
|
|
13
|
+
*/
|
|
14
|
+
function formatRate(rate) {
|
|
15
|
+
return `rate(${rate})`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Convert cron string to SST format
|
|
19
|
+
* e.g., "0 8 * * ? *" -> "cron(0 8 * * ? *)"
|
|
20
|
+
*/
|
|
21
|
+
function formatCron(cron) {
|
|
22
|
+
return `cron(${cron})`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Translate ScheduleIntent to SST Cron
|
|
26
|
+
*/
|
|
27
|
+
async function translateSchedule(intent, sst, projectName) {
|
|
28
|
+
const resourceName = `${projectName}-${intent.id}`;
|
|
29
|
+
// Determine schedule expression
|
|
30
|
+
const schedule = 'rate' in intent.schedule
|
|
31
|
+
? formatRate(intent.schedule.rate)
|
|
32
|
+
: formatCron(intent.schedule.cron);
|
|
33
|
+
// Create cron job
|
|
34
|
+
const cron = new sst.Cron(resourceName, {
|
|
35
|
+
schedule,
|
|
36
|
+
job: intent.handler,
|
|
37
|
+
enabled: intent.enabled ?? true,
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
ruleArn: cron.nodes.rule.arn,
|
|
41
|
+
ruleName: cron.nodes.rule.name,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvcnMvc2NoZWR1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOztBQStCSCw4Q0F1QkM7QUExQ0Q7OztHQUdHO0FBQ0gsU0FBUyxVQUFVLENBQUMsSUFBWTtJQUM5QixPQUFPLFFBQVEsSUFBSSxHQUFHLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsVUFBVSxDQUFDLElBQVk7SUFDOUIsT0FBTyxRQUFRLElBQUksR0FBRyxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsTUFBc0IsRUFDdEIsR0FBUSxFQUNSLFdBQW1CO0lBRW5CLE1BQU0sWUFBWSxHQUFHLEdBQUcsV0FBVyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUVuRCxnQ0FBZ0M7SUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRO1FBQ3hDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLGtCQUFrQjtJQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ3RDLFFBQVE7UUFDUixHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSTtLQUNoQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7UUFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUk7S0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNjaGVkdWxlIEludGVudCBUcmFuc2xhdG9yXG4gKiBcbiAqIFRyYW5zbGF0ZXMgU2NoZWR1bGVJbnRlbnQgdG8gU1NUIENyb24gcmVzb3VyY2VzLlxuICogVGhpcyBmaWxlIGlzb2xhdGVzIGFsbCBTU1QvRXZlbnRCcmlkZ2Utc3BlY2lmaWMgbG9naWMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZUludGVudCB9IGZyb20gJ0B2ZW50dXJla2l0L2NvcmUnO1xuXG4vKipcbiAqIFNjaGVkdWxlIG91dHB1dCBhZnRlciBjcmVhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3V0cHV0IHtcbiAgcnVsZUFybjogc3RyaW5nO1xuICBydWxlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnQgcmF0ZSBzdHJpbmcgdG8gU1NUIGZvcm1hdFxuICogZS5nLiwgXCI1IG1pbnV0ZXNcIiAtPiBcInJhdGUoNSBtaW51dGVzKVwiXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFJhdGUocmF0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGByYXRlKCR7cmF0ZX0pYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNyb24gc3RyaW5nIHRvIFNTVCBmb3JtYXRcbiAqIGUuZy4sIFwiMCA4ICogKiA/ICpcIiAtPiBcImNyb24oMCA4ICogKiA/ICopXCJcbiAqL1xuZnVuY3Rpb24gZm9ybWF0Q3Jvbihjcm9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYGNyb24oJHtjcm9ufSlgO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSBTY2hlZHVsZUludGVudCB0byBTU1QgQ3JvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNsYXRlU2NoZWR1bGUoXG4gIGludGVudDogU2NoZWR1bGVJbnRlbnQsXG4gIHNzdDogYW55LFxuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFNjaGVkdWxlT3V0cHV0PiB7XG4gIGNvbnN0IHJlc291cmNlTmFtZSA9IGAke3Byb2plY3ROYW1lfS0ke2ludGVudC5pZH1gO1xuICBcbiAgLy8gRGV0ZXJtaW5lIHNjaGVkdWxlIGV4cHJlc3Npb25cbiAgY29uc3Qgc2NoZWR1bGUgPSAncmF0ZScgaW4gaW50ZW50LnNjaGVkdWxlXG4gICAgPyBmb3JtYXRSYXRlKGludGVudC5zY2hlZHVsZS5yYXRlKVxuICAgIDogZm9ybWF0Q3JvbihpbnRlbnQuc2NoZWR1bGUuY3Jvbik7XG4gIFxuICAvLyBDcmVhdGUgY3JvbiBqb2JcbiAgY29uc3QgY3JvbiA9IG5ldyBzc3QuQ3JvbihyZXNvdXJjZU5hbWUsIHtcbiAgICBzY2hlZHVsZSxcbiAgICBqb2I6IGludGVudC5oYW5kbGVyLFxuICAgIGVuYWJsZWQ6IGludGVudC5lbmFibGVkID8/IHRydWUsXG4gIH0pO1xuICBcbiAgcmV0dXJuIHtcbiAgICBydWxlQXJuOiBjcm9uLm5vZGVzLnJ1bGUuYXJuLFxuICAgIHJ1bGVOYW1lOiBjcm9uLm5vZGVzLnJ1bGUubmFtZSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Intent Translator
|
|
3
|
+
*
|
|
4
|
+
* Translates StorageIntent to SST S3/CDN resources.
|
|
5
|
+
* This file isolates all SST/S3-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import type { StorageIntent } from '@venturekit/core';
|
|
8
|
+
/**
|
|
9
|
+
* Storage output after creation
|
|
10
|
+
*/
|
|
11
|
+
export interface StorageOutput {
|
|
12
|
+
bucketName: string;
|
|
13
|
+
bucketArn: string;
|
|
14
|
+
cdnUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Translate StorageIntent to SST Bucket
|
|
18
|
+
*/
|
|
19
|
+
export declare function translateStorage(intent: StorageIntent, sst: any, projectName: string): Promise<StorageOutput>;
|