@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.
@@ -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>;