@fjall/generator 2.34.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.minified +1 -1
- package/dist/src/ast/astTestHelpers.js +1 -1
- package/dist/src/ast/domain/astDomainParser.d.ts +15 -7
- package/dist/src/ast/domain/astDomainParser.js +1 -1
- package/dist/src/ast/index.d.ts +1 -1
- package/dist/src/ast/mutation/astCodeInjection.js +4 -4
- package/dist/src/ast/mutation/astExpressionEvaluator.js +1 -1
- package/dist/src/ast/mutation/astSurgicalModification.js +5 -5
- package/dist/src/ast/parsers/common/astCommonParser.js +1 -1
- package/dist/src/ast/parsers/common/astStatementClassifier.js +1 -1
- package/dist/src/ast/parsers/common/astStatementQueries.js +3 -3
- package/dist/src/ast/parsers/orchestrator/astInfrastructureParser.js +1 -1
- package/dist/src/ast/parsers/orchestrator/astPlanConverter.js +2 -2
- package/dist/src/ast/parsers/resources/astCdnParser.js +1 -1
- package/dist/src/ast/parsers/resources/astClickHouseParser.js +1 -1
- package/dist/src/ast/parsers/resources/astComputeConnectionParser.js +1 -1
- package/dist/src/ast/parsers/resources/astComputeParser.js +1 -1
- package/dist/src/ast/parsers/resources/astComputeParserHelpers.js +1 -1
- package/dist/src/ast/parsers/resources/astDatabaseParser.js +1 -1
- package/dist/src/ast/parsers/resources/astDynamoDBParser.js +1 -1
- package/dist/src/ast/parsers/resources/astMessagingParser.js +1 -1
- package/dist/src/ast/parsers/resources/astNetworkParser.js +1 -1
- package/dist/src/ast/parsers/resources/astPatternParser.js +1 -1
- package/dist/src/ast/parsers/resources/astScheduleParser.js +1 -1
- package/dist/src/ast/parsers/resources/astStorageParser.js +1 -1
- package/dist/src/aws/regions.js +1 -1
- package/dist/src/codemod/_internal.js +1 -1
- package/dist/src/codemod/drift/detect.js +1 -1
- package/dist/src/codemod/drift/merge.js +1 -1
- package/dist/src/codemod/drift/snapshot.js +1 -1
- package/dist/src/codemod/edits/addResource/bodyIndex.js +1 -1
- package/dist/src/codemod/edits/addResource/propertyBuilder.js +1 -1
- package/dist/src/codemod/edits/addResource.js +1 -1
- package/dist/src/codemod/edits/appendAccountToStage.js +1 -1
- package/dist/src/codemod/edits/controlFlowPolicy.js +1 -1
- package/dist/src/codemod/edits/crossPlanConnection.js +1 -1
- package/dist/src/codemod/edits/driftPolicy.js +1 -1
- package/dist/src/codemod/edits/ensureImports.js +1 -1
- package/dist/src/codemod/edits/findInsertionPosition.js +1 -1
- package/dist/src/codemod/edits/modifyResource/literalConversion.js +1 -1
- package/dist/src/codemod/edits/modifyResource.js +1 -1
- package/dist/src/codemod/edits/removeResource/commentHeuristic.js +1 -1
- package/dist/src/codemod/edits/removeResource/importPruning.js +1 -1
- package/dist/src/codemod/edits/removeResource.js +1 -1
- package/dist/src/codemod/edits/vpcPeer.js +1 -1
- package/dist/src/codemod/edits/vpcPeerAccepter.js +1 -1
- package/dist/src/codemod/fileRewriter/builders.js +1 -1
- package/dist/src/codemod/fileRewriter/locateByRange.js +1 -1
- package/dist/src/codemod/fileRewriter/parse.js +2 -2
- package/dist/src/codemod/fileRewriter/print.js +2 -2
- package/dist/src/codemod/historyPaths.js +1 -1
- package/dist/src/codemod/listResources.js +1 -1
- package/dist/src/codemod/llmFallback/apply.js +1 -1
- package/dist/src/codemod/llmFallback/claudeTier.js +1 -1
- package/dist/src/codemod/llmFallback/egressGate.js +1 -1
- package/dist/src/codemod/llmFallback/morphTier.js +2 -2
- package/dist/src/codemod/llmFallback/prompt.js +13 -13
- package/dist/src/codemod/llmFallback/runFallback.js +1 -1
- package/dist/src/codemod/llmFallback/shouldTryFallback.js +1 -1
- package/dist/src/codemod/llmFallback/signals.js +1 -1
- package/dist/src/codemod/llmFallback/telemetryEvents.js +1 -1
- package/dist/src/codemod/llmFallback/tierRunner.js +1 -1
- package/dist/src/codemod/registry.js +1 -1
- package/dist/src/codemod/semanticIndex/classifyControlFlow.js +1 -1
- package/dist/src/codemod/semanticIndex/findReferences.js +2 -2
- package/dist/src/codemod/semanticIndex/listImports.js +1 -1
- package/dist/src/codemod/semanticIndex/locateByShape.js +1 -1
- package/dist/src/codemod/semanticIndex/projectCache.js +1 -1
- package/dist/src/codemod/semanticIndex/resolveConstructByLiteralProperty.js +1 -1
- package/dist/src/codemod/validationGate/gates/classify.js +1 -1
- package/dist/src/codemod/validationGate/gates/locate.js +1 -1
- package/dist/src/codemod/validationGate/types.js +1 -1
- package/dist/src/detection/index.js +1 -1
- package/dist/src/dns/bindParser.js +2 -2
- package/dist/src/dns/bindWriter.js +2 -2
- package/dist/src/dns/domainFileGenerator.js +18 -28
- package/dist/src/dns/domainRecords.d.ts +11 -0
- package/dist/src/dns/domainRecords.js +1 -1
- package/dist/src/generation/common.js +7 -7
- package/dist/src/generation/compute/ec2.js +3 -3
- package/dist/src/generation/compute/ecs.js +24 -24
- package/dist/src/generation/compute/lambda.js +8 -8
- package/dist/src/generation/compute/shared.js +4 -4
- package/dist/src/generation/compute.js +5 -5
- package/dist/src/generation/database.js +18 -18
- package/dist/src/generation/generatePatternCode.js +16 -16
- package/dist/src/generation/infrastructure.js +14 -14
- package/dist/src/generation/messagingConnections.js +1 -1
- package/dist/src/generation/storage.js +14 -14
- package/dist/src/generation/storageConnections.js +1 -1
- package/dist/src/planning/generateResourceChange.js +1 -1
- package/dist/src/planning/openNextPlanning.js +1 -1
- package/dist/src/planning/resourceAddition.js +1 -1
- package/dist/src/planning/resourceConnections.js +1 -1
- package/dist/src/planning/resourcePlanning.js +1 -1
- package/dist/src/planning/staticSitePlanning.js +1 -1
- package/dist/src/presets/patternTierPresets.js +1 -1
- package/dist/src/presets/storagePresets.js +1 -1
- package/dist/src/presets/tierPresets.js +1 -1
- package/dist/src/schemas/baseSchemas.js +2 -2
- package/dist/src/schemas/computeSchemas.js +1 -1
- package/dist/src/schemas/constants.js +1 -1
- package/dist/src/schemas/devRolePolicies.js +1 -1
- package/dist/src/schemas/instanceTypeArchitecture.js +1 -1
- package/dist/src/schemas/securityBoundary.js +1 -1
- package/dist/src/types/Result.js +1 -1
- package/dist/src/validation/validationPatterns.js +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatValue as
|
|
2
|
-
`)}function
|
|
3
|
-
${
|
|
4
|
-
${
|
|
1
|
+
var a=Object.defineProperty;var e=(n,o)=>a(n,"name",{value:o,configurable:!0});import{formatValue as i}from"../common.js";function s(n){return!!(n.needsConnection&&n.connectedDatabase?.length)}e(s,"computeHasDatabaseConnections");function u(n){return!!n.connectedStorage?.length}e(u,"computeHasStorageConnections");function f(n){return!!n.connectedMessaging?.length}e(f,"computeHasMessagingConnections");function m(n){return s(n)||u(n)||f(n)}e(m,"computeHasConnections");const l={ENVIRONMENT:{__expression:"getConfig().environment"}};function x(n,o){return Object.entries(n).map(([t,r])=>`${o}${t}: ${i(r)},`).join(`
|
|
2
|
+
`)}e(x,"formatEnvBlock");function $(n,o,t){return n.length<=1?`{ ${n[0]??""} }`:`{${n.map(c=>`
|
|
3
|
+
${t}${c},`).join("")}
|
|
4
|
+
${o}}`}e($,"formatCompactOrExpandedObject");export{l as BASE_ENVIRONMENT_VARS,m as computeHasConnections,s as computeHasDatabaseConnections,f as computeHasMessagingConnections,u as computeHasStorageConnections,$ as formatCompactOrExpandedObject,x as formatEnvBlock};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{getVariableName as
|
|
2
|
-
`:""}${
|
|
1
|
+
var u=Object.defineProperty;var c=(t,a)=>u(t,"name",{value:a,configurable:!0});import{getVariableName as g,escapeStringLiteral as r}from"./common.js";import{generateLambdaCode as l,generateLambdaConnectionsCode as f}from"./compute/lambda.js";import{generateEc2Code as h}from"./compute/ec2.js";import{generateEcsCode as C}from"./compute/ecs.js";import{generateLambdaCode as k,generateLambdaConnectionsCode as V}from"./compute/lambda.js";import{generateEc2Code as F}from"./compute/ec2.js";import{generateEcsCode as U}from"./compute/ecs.js";function L(t,a){if(t.compute.length===0)return"";let o="";for(let n=0;n<t.compute.length;n++){const e=t.compute[n],s=a.has(e.name)||e.scheduleExpression!==void 0,d=g(e),i=t.database.length>0||t.s3.length>0||n>0,m=s?`const ${d} = `:"";switch(o+=`${i?`
|
|
2
|
+
`:""}${m}app.addCompute(
|
|
3
3
|
ComputeFactory.build(${r(e.name)}, {
|
|
4
|
-
type: ${r(e.type)},`,e.type){case"lambda":
|
|
4
|
+
type: ${r(e.type)},`,e.type){case"lambda":o+=l(e),o+=f(e,t);break;case"ec2":o+=h(e);break;case"ecs":o+=C(e,t);break;default:{const p=e.type;throw new Error(`Unhandled compute type: ${String(p)}`)}}o+=`
|
|
5
5
|
})
|
|
6
6
|
);
|
|
7
|
-
`,e.scheduleExpression!==void 0&&(
|
|
8
|
-
`)}return
|
|
7
|
+
`,e.scheduleExpression!==void 0&&(o+=`app.addSchedule(${r(`${e.name}Schedule`)}, { schedule: ${r(e.scheduleExpression)}, target: ${d} });
|
|
8
|
+
`)}return o}c(L,"generateComputeCode");export{L as generateComputeCode,F as generateEc2Code,U as generateEcsCode,k as generateLambdaCode,V as generateLambdaConnectionsCode};
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import{buildProperty as o,formatValue as
|
|
2
|
-
secondaryRegions: [${
|
|
3
|
-
`:""}${
|
|
4
|
-
DatabaseFactory.build(${
|
|
1
|
+
var b=Object.defineProperty;var s=(e,n)=>b(e,"name",{value:n,configurable:!0});import{buildProperty as o,formatValue as p,getVariableName as f,emitExtraProperties as A,escapeStringLiteral as u,formatStringArray as y,emitProductionAlertsTopicSpread as m}from"./common.js";const l=Object.freeze({HOST:"DATABASE_HOST",PORT:"DATABASE_PORT",NAME:"DATABASE_NAME",SSL:"DATABASE_SSL",USERNAME:"DATABASE_USERNAME",PASSWORD:"DATABASE_PASSWORD"}),g=Object.freeze({USERNAME:"username",PASSWORD:"password"});function E(e,n){const r=n.connectedDatabase;return r?.length?e.database.filter(t=>r.includes(t.name)):[]}s(E,"getConnectedDatabases");function S(e,n){return`${e}.getCredentials().getImport(${u(n)})`}s(S,"getCredentialExpression");function $(e){const n=[],r=s((t,a,c)=>{n.push({key:t,expression:a,isSecret:c})},"addEntry");if(e.length===1){const t=f(e[0]);r(l.HOST,`${t}.getHostEndpoint()`,!1),r(l.PORT,`${t}.getHostPort()`,!1),r(l.NAME,`${t}.getDatabaseName()`,!1),r(l.SSL,'"true"',!1),r(l.USERNAME,S(t,g.USERNAME),!0),r(l.PASSWORD,S(t,g.PASSWORD),!0)}else for(const[t,a]of e.entries()){const c=f(a),i=t===0?"":`_${t+1}`;r(`${l.HOST}${i}`,`${c}.getHostEndpoint()`,!1),r(`${l.PORT}${i}`,`${c}.getHostPort()`,!1),r(`${l.NAME}${i}`,`${c}.getDatabaseName()`,!1),r(`${l.SSL}${i}`,'"true"',!1),r(`${l.USERNAME}${i}`,S(c,g.USERNAME),!0),r(`${l.PASSWORD}${i}`,S(c,g.PASSWORD),!0)}return n}s($,"generateDatabaseEnvVarEntries");function O(e){return`connections: [${e.map(r=>f(r)).join(", ")}],`}s(O,"formatConnectionsCode");function R(e){return e.expression==='"true"'?"true":{__expression:e.expression}}s(R,"toDatabaseEnvVarValue");function V(e,n){const r={},t={};if(!n.needsConnection||!n.connectedDatabase?.length)return{env:r,secrets:t};const a=E(e,n),c=$(a);for(const i of c){const d=R(i);i.isSecret?t[i.key]={__expression:i.expression}:r[i.key]=d}return{env:r,secrets:t}}s(V,"buildDatabaseEnvVars");function h(e){let n="";return n+=o(e.port!==void 0,"port",e.port),n+=o(e.deletionProtection!==void 0,"deletionProtection",e.deletionProtection),n+=o(e.snapshotIdentifier!==void 0,"snapshotIdentifier",e.snapshotIdentifier,"string"),n+=o(e.snapshotUsername!==void 0,"snapshotUsername",e.snapshotUsername,"string"),n+=o(e.monitoringInterval!==void 0,"monitoringInterval",e.monitoringInterval),n}s(h,"generateDatabaseSharedProps");function D(e){if(e.type!=="Instance")return"";let n="";return n+=o(e.instanceType!==void 0,"instanceType",e.instanceType,"string"),n+=o(e.allocatedStorage!==void 0,"allocatedStorage",e.allocatedStorage),n+=o(e.multiAz!==void 0,"multiAz",e.multiAz),n+=o(e.publiclyAccessible!==void 0,"publiclyAccessible",e.publiclyAccessible),n+=o(e.encryption!==void 0,"encryption",e.encryption,"object"),n+=o(e.databaseInsights!==void 0,"databaseInsights",e.databaseInsights,"boolean-or-object"),n+=o(e.proxy!==void 0,"proxy",e.proxy,"boolean-or-object"),n+=o(e.readReplica!==void 0,"readReplica",e.readReplica,"boolean-or-object"),n+=o(e.credentials!==void 0,"credentials",e.credentials,"object"),n+=o(e.backupRetention!==void 0,"backupRetention",e.backupRetention),n}s(D,"generateDatabaseInstanceProps");function x(e){if(e.type!=="Aurora"&&e.type!=="GlobalAurora")return"";let n="";return n+=o(e.encryption!==void 0,"encryption",e.encryption,"object"),n+=o(e.databaseInsights!==void 0,"databaseInsights",e.databaseInsights,"boolean-or-object"),n+=o(e.proxy!==void 0,"proxy",e.proxy,"boolean-or-object"),n+=o(e.credentials!==void 0,"credentials",e.credentials,"object"),n+=o(e.writer!==void 0,"writer",e.writer,"object"),n+=o(e.readers!==void 0,"readers",e.readers,"boolean-or-object"),n+=o(e.backupRetention!==void 0,"backupRetention",e.backupRetention),n+=o(e.preferredMaintenanceWindow!==void 0,"preferredMaintenanceWindow",e.preferredMaintenanceWindow,"string"),n}s(x,"generateDatabaseAuroraProps");function N(e){if(e.type!=="GlobalAurora")return"";let n="";return n+=o(e.primaryRegion!==void 0,"primaryRegion",e.primaryRegion,"string"),e.secondaryRegions!==void 0&&e.secondaryRegions.length>0&&(n+=`
|
|
2
|
+
secondaryRegions: [${y(e.secondaryRegions)}],`),n+=o(e.globalClusterIdentifier!==void 0,"globalClusterIdentifier",e.globalClusterIdentifier,"string"),n+=o(e.enableGlobalWriteForwarding!==void 0,"enableGlobalWriteForwarding",e.enableGlobalWriteForwarding),n}s(N,"generateDatabaseGlobalAuroraProps");function T(e,n){return n.compute.some(r=>r.needsConnection&&r.connectedDatabase?.includes(e.name))}s(T,"databaseNeedsVariable");function j(e){if(e.database.length===0)return"";let n="";for(let r=0;r<e.database.length;r++){const t=e.database[r],a=f(t),c=T(t,e),i=r>0,d=c?`const ${a} = `:"";n+=`${i?`
|
|
3
|
+
`:""}${d}app.addDatabase(
|
|
4
|
+
DatabaseFactory.build(${u(t.name)}, {
|
|
5
5
|
vpc: app.getVpc(),
|
|
6
|
-
type: ${
|
|
7
|
-
databaseName: ${
|
|
6
|
+
type: ${u(t.type)},
|
|
7
|
+
databaseName: ${u(t.databaseName)},`,t.engineExpression?n+=`
|
|
8
8
|
engine: ${t.engineExpression},`:t.databaseEngine&&(n+=`
|
|
9
|
-
databaseEngine: ${
|
|
9
|
+
databaseEngine: ${u(t.databaseEngine)},`),n+=h(t),n+=D(t),n+=x(t),n+=N(t),n+=A(t.extraProperties),t.alarms===!1?n+=`
|
|
10
10
|
alarms: false,`:typeof t.alarms=="object"&&(n+=`
|
|
11
|
-
alarms: ${
|
|
11
|
+
alarms: ${p(t.alarms," ")},`),t.type!=="GlobalAurora"&&(n+=m()),n+=`
|
|
12
12
|
})
|
|
13
13
|
);
|
|
14
|
-
`}return n}function
|
|
15
|
-
`:"",
|
|
16
|
-
DatabaseFactory.build(${
|
|
14
|
+
`}return n}s(j,"generateDatabaseCode");function w(e){if(!e.clickhouse||e.clickhouse.length===0)return"";let n="";for(let r=0;r<e.clickhouse.length;r++){const t=e.clickhouse[r],a=f(t),c=P(t,e),i=r>0?`
|
|
15
|
+
`:"",d=c?`const ${a} = `:"";n+=`${i}${d}app.addDatabase(
|
|
16
|
+
DatabaseFactory.build(${u(t.name)}, {
|
|
17
17
|
type: "ClickHouse",
|
|
18
|
-
databaseName: ${
|
|
19
|
-
instanceType: ${
|
|
20
|
-
coldTier: ${
|
|
21
|
-
optimiseSchedule: ${
|
|
22
|
-
backupSchedule: ${
|
|
23
|
-
backupRetentionDays: ${t.backupRetentionDays},`),n+=
|
|
18
|
+
databaseName: ${u(t.databaseName)},`,t.instanceType!==void 0&&(n+=`
|
|
19
|
+
instanceType: ${u(t.instanceType)},`),t.coldTier!==void 0&&(n+=`
|
|
20
|
+
coldTier: ${p(t.coldTier," ")},`),t.optimiseSchedule!==void 0&&(n+=`
|
|
21
|
+
optimiseSchedule: ${p(t.optimiseSchedule," ")},`),t.backupSchedule!==void 0&&(n+=`
|
|
22
|
+
backupSchedule: ${p(t.backupSchedule," ")},`),t.backupRetentionDays!==void 0&&(n+=`
|
|
23
|
+
backupRetentionDays: ${t.backupRetentionDays},`),n+=A(t.extraProperties),n+=`
|
|
24
24
|
})
|
|
25
25
|
);
|
|
26
|
-
`}return n}function
|
|
26
|
+
`}return n}s(w,"generateClickHouseCode");function P(e,n){return n.compute.some(r=>r.connectedDatabase?.includes(e.name))}s(P,"clickhouseNeedsVariable");export{g as CREDENTIAL_KEYS,l as DATABASE_ENV_VARS,V as buildDatabaseEnvVars,T as databaseNeedsVariable,O as formatConnectionsCode,w as generateClickHouseCode,j as generateDatabaseCode,$ as generateDatabaseEnvVarEntries,E as getConnectedDatabases,R as toDatabaseEnvVarValue};
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import{toPascalCase as
|
|
2
|
-
${t}${n}: ${e},`}function
|
|
3
|
-
${t}${n}: ${JSON.stringify(e)},`}function
|
|
1
|
+
var f=Object.defineProperty;var r=(n,e)=>f(n,"name",{value:e,configurable:!0});import{toPascalCase as $,formatValue as l}from"./common.js";import{PATTERN_REGISTRY as b}from"@fjall/util";const m=Object.freeze({database:{type:"Instance",backupRetention:7,deletionProtection:!0},compute:{server:{memorySize:1536,timeout:30},imageOptimisation:{memorySize:1536,timeout:30},revalidation:{memorySize:768,timeout:300}}});function c(n,e,t){return e===void 0?"":`
|
|
2
|
+
${t}${n}: ${e},`}r(c,"emitScalar");function s(n,e,t){return e===void 0?"":`
|
|
3
|
+
${t}${n}: ${JSON.stringify(e)},`}r(s,"emitStringField");function u(n,e,t){return e===void 0?"":e===!1?`
|
|
4
4
|
${t}${n}: false,`:`
|
|
5
|
-
${t}${n}: ${
|
|
6
|
-
${t}${n}: ${
|
|
7
|
-
${t}type: "${
|
|
5
|
+
${t}${n}: ${l(e,t)},`}r(u,"emitObjectOrFalse");function a(n,e,t){return e===void 0||Object.keys(e).length===0?"":`
|
|
6
|
+
${t}${n}: ${l(e,t)},`}r(a,"emitObject");function g(n){const e=n??{},t=" ",d=e.type??m.database.type,o=e.backupRetention??m.database.backupRetention,p=e.deletionProtection??m.database.deletionProtection;let i=`
|
|
7
|
+
${t}type: "${d}",`;return i+=s("databaseName",e.databaseName,t),i+=s("databaseEngine",e.databaseEngine,t),d==="Instance"&&e.instanceType!==void 0&&(i+=s("instanceType",e.instanceType,t)),i+=c("allocatedStorage",e.allocatedStorage,t),i+=c("port",e.port,t),i+=`
|
|
8
8
|
${t}backupRetention: ${o},`,i+=`
|
|
9
|
-
${t}deletionProtection: ${
|
|
9
|
+
${t}deletionProtection: ${p},`,i+=c("publiclyAccessible",e.publiclyAccessible,t),i+=s("allowedIpCidr",e.allowedIpCidr,t),i+=c("multiAz",e.multiAz,t),i+=c("allowVpcAccess",e.allowVpcAccess,t),i+=c("monitoringInterval",e.monitoringInterval,t),i+=s("preferredMaintenanceWindow",e.preferredMaintenanceWindow,t),i+=s("snapshotIdentifier",e.snapshotIdentifier,t),i+=s("snapshotUsername",e.snapshotUsername,t),i+=u("readReplica",e.readReplica,t),i+=a("writer",e.writer,t),i+=u("readers",e.readers,t),i+=u("databaseInsights",e.databaseInsights,t),i+=u("proxy",e.proxy,t),i+=a("credentials",e.credentials,t),i+=a("encryption",e.encryption,t),`
|
|
10
10
|
database: {${i}
|
|
11
|
-
},`}function
|
|
11
|
+
},`}r(g,"emitDatabaseBlock");function S(n){const e=n??{},t=e.server?.memorySize??m.compute.server.memorySize,d=e.server?.timeout??m.compute.server.timeout,o=e.imageOptimisation?.memorySize??m.compute.imageOptimisation.memorySize,p=e.imageOptimisation?.timeout??m.compute.imageOptimisation.timeout,i=e.revalidation?.memorySize??m.compute.revalidation.memorySize,y=e.revalidation?.timeout??m.compute.revalidation.timeout;return`
|
|
12
12
|
compute: {
|
|
13
13
|
server: {
|
|
14
14
|
memorySize: ${t},
|
|
15
|
-
timeout: ${
|
|
15
|
+
timeout: ${d},
|
|
16
16
|
},
|
|
17
17
|
imageOptimisation: {
|
|
18
18
|
memorySize: ${o},
|
|
19
|
-
timeout: ${
|
|
19
|
+
timeout: ${p},
|
|
20
20
|
},
|
|
21
21
|
revalidation: {
|
|
22
22
|
memorySize: ${i},
|
|
23
|
-
timeout: ${
|
|
23
|
+
timeout: ${y},
|
|
24
24
|
},
|
|
25
|
-
},`}function
|
|
26
|
-
${e}domain: ${JSON.stringify(n.domain)},`),t+=
|
|
27
|
-
PatternFactory.build("${`${
|
|
25
|
+
},`}r(S,"emitComputeBlock");function v(n){return a("storage",n," ")}r(v,"emitStorageBlock");function z(n){return a("messaging",n," ")}r(z,"emitMessagingBlock");function I(n){return a("cdn",n," ")}r(I,"emitCdnBlock");function O(n){return a("environment",n," ")}r(O,"emitEnvironmentBlock");function T(n){const e=" ";let t="";return t+=s("source",n.source,e),t+=a("build",n.build,e),t+=s("routing",n.routing,e),t+=a("security",n.security,e),n.domain!==void 0&&n.domain!==""&&(t+=`
|
|
26
|
+
${e}domain: ${JSON.stringify(n.domain)},`),t+=a("forms",n.forms,e),t+=a("cdn",n.cdn,e),t}r(T,"emitStaticSiteFields");function C(n){if(!n.patternConfig)return"";const e=n.patternConfig;let o=`app.addPattern(
|
|
27
|
+
PatternFactory.build("${`${$(e.name)}${b[e.type].constructIdSuffix}`}", {
|
|
28
28
|
type: "${e.type}",
|
|
29
29
|
name: "${e.name}",`;return e.type==="payload"||e.type==="nextjs"?(e.domain!==void 0&&e.domain!==""&&(o+=`
|
|
30
|
-
domain: "${e.domain}",`),o
|
|
30
|
+
domain: "${e.domain}",`),o+=g(e.database),o+=S(e.compute),o+=v(e.storage),o+=z(e.messaging),o+=I(e.cdn),o+=O(e.environment)):o+=T(e),o+=`
|
|
31
31
|
})
|
|
32
32
|
);
|
|
33
33
|
|
|
34
|
-
`,o}export{
|
|
34
|
+
`,o}r(C,"generatePatternCodeWithComments");export{m as OPENNEXT_DEFAULTS,C as generatePatternCodeWithComments};
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import{toVariableName as
|
|
2
|
-
NetworkFactory.build("${n.name}", ${
|
|
1
|
+
var g=Object.defineProperty;var s=(e,t)=>g(e,"name",{value:t,configurable:!0});import{toVariableName as h,formatValue as d,resolveResourceVariable as u,emitExtraProperties as l}from"./common.js";import{COMPUTE_TYPE as f}from"../schemas/constants.js";import{OPENNEXT_DEFAULTS as F,generatePatternCodeWithComments as E}from"./generatePatternCode.js";const m="fjall:costAllocation:owner",b="engineering";function y(e){return typeof e=="object"&&e!==null&&Object.keys(e).length===0}s(y,"isEmptyObject");function p(e){const t={...e};return y(t.flowLogs)&&delete t.flowLogs,t}s(p,"cleanNetworkConfig");function w(e){if(!e.additionalNetworks||e.additionalNetworks.length===0)return"";let t="";for(const n of e.additionalNetworks){const i=h(n.name),o={};n.maxAzs!==void 0&&(o.maxAzs=n.maxAzs),n.natGateways!==void 0&&(o.natGateways=n.natGateways),n.flowLogs!==void 0&&(o.flowLogs=n.flowLogs),n.vpcEndpoints!==void 0&&(o.vpcEndpoints=n.vpcEndpoints);const c=p(o);t+=`const ${i} = app.addNetwork(
|
|
2
|
+
NetworkFactory.build("${n.name}", ${d(c," ")})
|
|
3
3
|
);
|
|
4
4
|
|
|
5
|
-
`}return t}function
|
|
5
|
+
`}return t}s(w,"generateNetworkCode");function C(e){const t={};return e.tags&&Object.keys(e.tags).length>0&&Object.assign(t,e.tags),t[m]||(t[m]=e.owner||b),`app.addTags({
|
|
6
6
|
${Object.entries(t).map(([i,o])=>` "${i}": "${o}"`).join(`,
|
|
7
7
|
`)}
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
-
`}function
|
|
10
|
+
`}s(C,"generateTags");function N(e){let t=`
|
|
11
11
|
const appName = "${e.appName}";
|
|
12
12
|
`;const n=e.backup&&typeof e.backup=="object"?e.backup:void 0,i=e.tunnel&&typeof e.tunnel=="object"?e.tunnel:void 0,o=i?i.instanceType?`tunnel: { instanceType: "${i.instanceType}" }`:"tunnel: true":void 0;if(e.vpcId)t+=`const app = App.getApp(appName, {
|
|
13
13
|
network: { useExisting: "${e.vpcId}" }`,n&&(t+=`,
|
|
14
14
|
backup: { tier: "${n.tier}" }`),o&&(t+=`,
|
|
15
15
|
${o}`),t+=`
|
|
16
16
|
});
|
|
17
|
-
`;else if(e.network){const c=
|
|
18
|
-
network: ${
|
|
17
|
+
`;else if(e.network){const c=p(e.network);t+=`const app = App.getApp(appName, {
|
|
18
|
+
network: ${d(c," ")}`,n&&(t+=`,
|
|
19
19
|
backup: { tier: "${n.tier}" }`),o&&(t+=`,
|
|
20
20
|
${o}`),t+=`
|
|
21
21
|
});
|
|
22
22
|
`}else t+="const app = App.getApp(appName, { network: false",n&&(t+=`, backup: { tier: "${n.tier}" }`),o&&(t+=`, ${o}`),t+=` });
|
|
23
23
|
`;return t+=`
|
|
24
|
-
`,t}function
|
|
24
|
+
`,t}s(N,"generateAppInit");function j(e){const t=[];if(e.patternConfig?t.push("PatternFactory"):(e.database.length>0&&t.push("DatabaseFactory"),e.s3.length>0&&t.push("StorageFactory"),e.compute.length>0&&t.push("ComputeFactory"),(e.compute.length>0||e.database.length>0)&&t.push("getConfig"),e.dynamodb&&e.dynamodb.length>0&&e.database.length===0&&t.push("DatabaseFactory"),e.clickhouse&&e.clickhouse.length>0&&e.database.length===0&&!(e.dynamodb&&e.dynamodb.length>0)&&t.push("DatabaseFactory"),e.sqs&&e.sqs.length>0&&t.push("MessagingFactory"),e.cdn&&t.push("CdnFactory"),e.compute.some(r=>r.type===f.LAMBDA&&r.deployment==="code")&&(t.push("Code"),t.push("Runtime")),e.compute.some(r=>r.type===f.LAMBDA&&r.functionUrl)&&t.push("FunctionUrlAuthType"),e.compute.some(r=>r.type===f.LAMBDA&&(r.architecture||r.deployment==="container"))&&t.push("Architecture")),e.additionalNetworks&&e.additionalNetworks.length>0&&t.push("NetworkFactory"),e.additionalManagedImports){for(const o of e.additionalManagedImports)if(o.moduleSpecifier==="@fjall/components-infrastructure"||o.moduleSpecifier==="@fjall/infrastructure")for(const c of o.namedImports)t.includes(c)||t.push(c)}let i=`#!/usr/bin/env node
|
|
25
25
|
|
|
26
26
|
import { App${t.length>0?`, ${t.join(", ")}`:""} } from "@fjall/components-infrastructure";
|
|
27
27
|
`;if(e.additionalManagedImports)for(const o of e.additionalManagedImports){if(o.moduleSpecifier==="@fjall/components-infrastructure"||o.moduleSpecifier==="@fjall/infrastructure")continue;const c=o.namedImports.length>0?`{ ${o.namedImports.join(", ")} }`:"",r=[o.defaultImport??"",c].filter(Boolean).join(", ");r&&(i+=`import ${r} from "${o.moduleSpecifier}";
|
|
28
|
-
`)}return i}function
|
|
28
|
+
`)}return i}s(j,"generateImports");function x(e){if(!e.cdn)return"";const t=u(e,e.cdn.defaultOriginRef);let n=`
|
|
29
29
|
app.addCdn(
|
|
30
30
|
CdnFactory.build("${e.cdn.name}", {
|
|
31
31
|
originType: "auto",
|
|
32
|
-
origin: ${t}`;if(e.cdn.behaviours&&e.cdn.behaviours.length>0){const i=e.cdn.behaviours.map(o=>{const c=
|
|
32
|
+
origin: ${t}`;if(e.cdn.behaviours&&e.cdn.behaviours.length>0){const i=e.cdn.behaviours.map(o=>{const c=u(e,o.originRef);let a=`{
|
|
33
33
|
pathPattern: "${o.pathPattern}",
|
|
34
|
-
origin: ${c},`;return o.cachePolicy&&(
|
|
35
|
-
cachePolicy: "${o.cachePolicy}",`),
|
|
36
|
-
}`,
|
|
34
|
+
origin: ${c},`;return o.cachePolicy&&(a+=`
|
|
35
|
+
cachePolicy: "${o.cachePolicy}",`),a+=`
|
|
36
|
+
}`,a}).join(`,
|
|
37
37
|
`);n+=`,
|
|
38
38
|
behaviours: [
|
|
39
39
|
${i}
|
|
@@ -41,7 +41,7 @@ app.addCdn(
|
|
|
41
41
|
domainNames: ["${e.cdn.customDomain}"]`),e.cdn.certificateArn&&(n+=`,
|
|
42
42
|
certificateArn: "${e.cdn.certificateArn}"`),e.cdn.accessGate!==void 0&&(e.cdn.accessGate===!1?n+=`,
|
|
43
43
|
accessGate: false`:n+=`,
|
|
44
|
-
accessGate: ${
|
|
44
|
+
accessGate: ${d(e.cdn.accessGate," ")}`),n+=l(e.cdn.extraProperties),n+=`
|
|
45
45
|
})
|
|
46
46
|
);
|
|
47
|
-
`,n}function
|
|
47
|
+
`,n}s(x,"generateCDNCode");function L(e){const t=new Set;if(e.cdn&&(e.cdn.defaultOriginRef&&t.add(e.cdn.defaultOriginRef),e.cdn.behaviours))for(const n of e.cdn.behaviours)t.add(n.originRef);return t}s(L,"collectCdnReferencedResources");function O(e){return e.patternConfig!==void 0}s(O,"usesPatternApproach");export{m as COST_ALLOCATION_TAG,b as DEFAULT_COST_ALLOCATION_OWNER,F as OPENNEXT_DEFAULTS,L as collectCdnReferencedResources,N as generateAppInit,x as generateCDNCode,j as generateImports,w as generateNetworkCode,E as generatePatternCodeWithComments,C as generateTags,O as usesPatternApproach};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getVariableName as
|
|
1
|
+
var f=Object.defineProperty;var u=(s,e)=>f(s,"name",{value:e,configurable:!0});import{getVariableName as g}from"./common.js";const i=Object.freeze({URL:"QUEUE_URL",ARN:"QUEUE_ARN"});function p(s,e){const{connectedMessaging:n}=e;return n?.length?(s.sqs??[]).filter(t=>n.includes(t.name)):[]}u(p,"getConnectedMessaging");function a(s){const e=[];if(s.length===1){const n=s[0];if(!n)return e;const t=g(n);e.push({key:i.URL,expression:`${t}.getQueueUrl()`}),e.push({key:i.ARN,expression:`${t}.getQueueArn()`})}else for(const[n,t]of s.entries()){const r=g(t),o=n===0?"":`_${n+1}`;e.push({key:`${i.URL}${o}`,expression:`${r}.getQueueUrl()`}),e.push({key:`${i.ARN}${o}`,expression:`${r}.getQueueArn()`})}return e}u(a,"generateMessagingEnvVarEntries");function U(s,e){const n={},t={};if(!e.connectedMessaging?.length)return{env:n,secrets:t};const r=p(s,e),o=a(r);for(const c of o)n[c.key]={__expression:c.expression};return{env:n,secrets:t}}u(U,"buildMessagingEnvVars");export{i as MESSAGING_ENV_VARS,U as buildMessagingEnvVars,a as generateMessagingEnvVarEntries,p as getConnectedMessaging};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import{buildProperty as o,getVariableName as
|
|
2
|
-
`:"",
|
|
3
|
-
StorageFactory.build(${r(i.name)}, {${
|
|
1
|
+
var g=Object.defineProperty;var s=(e,t)=>g(e,"name",{value:t,configurable:!0});import{buildProperty as o,getVariableName as u,emitExtraProperties as l,escapeStringLiteral as r}from"./common.js";function $(e){let t="";return t+=o(e.bucketName!==void 0,"bucketName",e.bucketName,"string"),t+=o(e.stackPlacement!==void 0&&e.stackPlacement!=="storage","stackPlacement",e.stackPlacement,"string"),t+=o(e.publicReadAccess===!0,"publicReadAccess",!0),t+=o(e.websiteHosting!==void 0,"websiteHosting",e.websiteHosting,"object"),t+=o(e.backupVaultTier!==void 0,"backupVaultTier",e.backupVaultTier,"string"),t+=o(e.versioned!==void 0,"versioned",e.versioned),t+=o(e.encryption!==void 0,"encryption",e.encryption,"string"),t+=o(e.kmsKeyArn!==void 0,"kmsKeyArn",e.kmsKeyArn,"string"),t+=o(e.cors!==void 0&&e.cors.length>0,"cors",e.cors,"object"),t+=o(e.deployment!==void 0,"deployment",e.deployment,"object"),t+=o(e.retain===!0,"retain",!0),t}s($,"generateS3BucketProps");function b(e,t){return!!(t.compute.some(i=>i.connectedStorage?.includes(e.name))||t.cdn&&(t.cdn.defaultOriginRef===e.name||t.cdn.behaviours?.some(i=>i.originRef===e.name)))}s(b,"s3NeedsVariable");function S(e){if(e.s3.length===0)return"";let t="";for(let n=0;n<e.s3.length;n++){const i=e.s3[n],d=u(i),a=b(i,e),m=e.database.length>0||n>0?`
|
|
2
|
+
`:"",y=$(i),f=a?`const ${d} = `:"",p=l(i.extraProperties);y||p?t+=`${m}${f}app.addStorage(
|
|
3
|
+
StorageFactory.build(${r(i.name)}, {${y}${p}
|
|
4
4
|
})
|
|
5
5
|
);
|
|
6
|
-
`:t+=`${
|
|
6
|
+
`:t+=`${m}${f}app.addStorage(
|
|
7
7
|
StorageFactory.build(${r(i.name)}, {})
|
|
8
8
|
);
|
|
9
|
-
`}return t}function
|
|
9
|
+
`}return t}s(S,"generateS3Code");function h(e){if(!e.dynamodb||e.dynamodb.length===0)return"";let t="";for(const n of e.dynamodb){const i=u(n);if(t+=`
|
|
10
10
|
const ${i} = app.addDatabase(
|
|
11
11
|
DatabaseFactory.build(${r(n.name)}, {
|
|
12
12
|
type: "DynamoDB",
|
|
@@ -17,26 +17,26 @@ const ${i} = app.addDatabase(
|
|
|
17
17
|
sortKey: {
|
|
18
18
|
name: ${r(n.sortKey.name)},
|
|
19
19
|
type: ${r(n.sortKey.type)},
|
|
20
|
-
}`),n.globalSecondaryIndexes&&n.globalSecondaryIndexes.length>0){const
|
|
20
|
+
}`),n.globalSecondaryIndexes&&n.globalSecondaryIndexes.length>0){const d=n.globalSecondaryIndexes.map(a=>{let c=`{
|
|
21
21
|
indexName: ${r(a.indexName)},
|
|
22
22
|
partitionKey: {
|
|
23
23
|
name: ${r(a.partitionKey.name)},
|
|
24
24
|
type: ${r(a.partitionKey.type)},
|
|
25
|
-
},`;return a.sortKey&&(
|
|
25
|
+
},`;return a.sortKey&&(c+=`
|
|
26
26
|
sortKey: {
|
|
27
27
|
name: ${r(a.sortKey.name)},
|
|
28
28
|
type: ${r(a.sortKey.type)},
|
|
29
|
-
},`),
|
|
30
|
-
}`,
|
|
29
|
+
},`),c+=`
|
|
30
|
+
}`,c}).join(`,
|
|
31
31
|
`);t+=`,
|
|
32
32
|
globalSecondaryIndexes: [
|
|
33
|
-
${
|
|
33
|
+
${d}
|
|
34
34
|
]`}n.ttlAttribute&&(t+=`,
|
|
35
35
|
ttlAttribute: ${r(n.ttlAttribute)}`),n.stream&&(t+=`,
|
|
36
|
-
stream: true`),t+=
|
|
36
|
+
stream: true`),t+=l(n.extraProperties),t+=`
|
|
37
37
|
})
|
|
38
38
|
);
|
|
39
|
-
`}return t}function
|
|
39
|
+
`}return t}s(h,"generateDynamoDBCode");function x(e,t){return t.compute.some(n=>n.connectedMessaging?.includes(e.name))}s(x,"sqsNeedsVariable");function N(e){if(!e.sqs||e.sqs.length===0)return"";let t="";for(const n of e.sqs){const i=u(n),a=x(n,e)?`const ${i} = `:"";t+=`
|
|
40
40
|
${a}app.addMessaging(
|
|
41
41
|
MessagingFactory.build(${r(n.name)}, {
|
|
42
42
|
type: "queue",
|
|
@@ -44,7 +44,7 @@ ${a}app.addMessaging(
|
|
|
44
44
|
visibilityTimeout: ${n.visibilityTimeout}`),n.retentionPeriod!==void 0&&(t+=`,
|
|
45
45
|
messageRetentionPeriod: ${n.retentionPeriod}`),n.contentBasedDeduplication&&(t+=`,
|
|
46
46
|
contentBasedDeduplication: true`),n.removalPolicy!==void 0&&(t+=`,
|
|
47
|
-
removalPolicy: ${r(n.removalPolicy)}`),t+=
|
|
47
|
+
removalPolicy: ${r(n.removalPolicy)}`),t+=l(n.extraProperties),t+=`
|
|
48
48
|
})
|
|
49
49
|
);
|
|
50
|
-
`}return t}export{
|
|
50
|
+
`}return t}s(N,"generateSQSCode");export{h as generateDynamoDBCode,S as generateS3Code,N as generateSQSCode,b as s3NeedsVariable,x as sqsNeedsVariable};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getVariableName as
|
|
1
|
+
var g=Object.defineProperty;var a=(n,t)=>g(n,"name",{value:t,configurable:!0});import{getVariableName as i}from"./common.js";const f=Object.freeze({NAME:"BUCKET_NAME"});function l(n,t){const{connectedStorage:e}=t;return e?.length?n.s3.filter(r=>e.includes(r.name)):[]}a(l,"getConnectedStorage");function p(n){const t=[];if(n.length===1){const e=n[0];if(!e)return t;const r=i(e);t.push({key:f.NAME,expression:`${r}.getBucketName()`})}else for(const[e,r]of n.entries()){const o=i(r),s=e===0?"":`_${e+1}`;t.push({key:`${f.NAME}${s}`,expression:`${o}.getBucketName()`})}return t}a(p,"generateStorageEnvVarEntries");function m(n,t){const e={},r={};if(!t.connectedStorage?.length)return{env:e,secrets:r};const o=l(n,t),s=p(o);for(const u of s)e[u.key]={__expression:u.expression};return{env:e,secrets:r}}a(m,"buildStorageEnvVars");function E(n,t,e=[]){const r=n.map(c=>i(c)),o=t.map(c=>i(c)),s=e.map(c=>i(c));return`connections: [${[...r,...o,...s].join(", ")}],`}a(E,"formatAllConnectionsCode");export{f as STORAGE_ENV_VARS,m as buildStorageEnvVars,E as formatAllConnectionsCode,p as generateStorageEnvVarEntries,l as getConnectedStorage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parseInfrastructure as
|
|
1
|
+
var l=Object.defineProperty;var d=(t,a)=>l(t,"name",{value:a,configurable:!0});import{parseInfrastructure as m,convertToResourcePlan as f}from"../ast/index.js";import{success as g,failure as u}from"../types/Result.js";import{generateInfrastructureFromPlan as p}from"./resourcePlanning.js";import{addResourceToPlan as C,validateResourceAddition as R}from"./resourceAddition.js";function v(t,a,o){let r;try{r=m(t,{extractCustomCode:!0})}catch(e){return u(new Error(`Failed to parse infrastructure.ts: ${e instanceof Error?e.message:String(e)}`))}let s;try{s=f(r,a,{skipValidation:!0})}catch(e){return u(new Error(`Failed to build resource plan: ${e instanceof Error?e.message:String(e)}`))}r.customCodeBlocks&&r.customCodeBlocks.length>0&&(s.customCodeBlocks=r.customCodeBlocks);const i=R(s,o);if(!i.success)return i;const n=C(s,o);if(!n.success)return n;const c=p(n.data);return c.success?g({originalContent:t,modifiedContent:c.data,addedResource:{type:o.type,name:o.resourceName}}):u(new Error(`Code generation failed: ${c.error.message}`))}d(v,"generateResourceChange");export{v as generateResourceChange};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getPatternTierPreset as
|
|
1
|
+
var C=Object.defineProperty;var r=(e,n)=>C(e,"name",{value:n,configurable:!0});import{getPatternTierPreset as T,isPatternTierName as P,PATTERN_TIER_NAMES as N}from"../presets/patternTierPresets.js";import{getNetworkPreset as w}from"../presets/tierPresets.js";import{success as y,failure as l}from"../types/Result.js";import{PatternConfigSchema as g}from"../schemas/resourceSchemas.js";const k=w("standard");function A(e){return g.options.some(n=>n.shape?.type?.value===e)}r(A,"isPatternConfigType");function h(e,n,a){const{tier:i="standard",domain:d,database:m,compute:s,cdn:f,environment:c,tags:p}=a??{},u=P(i);if(!u&&i!=="custom")return l(new Error(`Invalid pattern tier: "${i}". Valid tiers are: ${[...N,"custom"].join(", ")}`));if(!A(n))return l(new Error(`Unsupported pattern type: ${n}`));const t=u?T(i):null,o=I(n,e,{domain:d,database:m,compute:s,cdn:f,environment:c,tierPreset:t});if(!o.success)return o;const b=o.data;return y({appName:e,type:"standard",pattern:n,network:t?t.network:k,backup:t?t.backup:!1,patternConfig:b,database:[],s3:[],compute:[],tags:p??{}})}r(h,"planOpenNextResources");function E(e,n){return{type:e?.type??n.database.type,instanceType:e?.instanceType??n.database.instanceType,backupRetention:e?.backupRetention??n.database.backupRetention,deletionProtection:e?.deletionProtection??n.database.deletionProtection,...e?.databaseName!==void 0&&{databaseName:e.databaseName},...e?.publiclyAccessible!==void 0&&{publiclyAccessible:e.publiclyAccessible},...e?.allowedIpCidr!==void 0&&{allowedIpCidr:e.allowedIpCidr},...e?.encryption!==void 0&&{encryption:e.encryption}}}r(E,"mergeDatabaseConfig");function R(e,n){return{memorySize:e?.memorySize??n.compute.memorySize,timeout:e?.timeout??n.compute.timeout}}r(R,"mergeComputeConfig");function v(e){const{encryption:n,...a}=e;return{...a,...n&&{encryption:{storageKey:n}}}}r(v,"toPatternDatabaseConfig");function I(e,n,a){const{domain:i,database:d,compute:m,cdn:s,environment:f,tierPreset:c}=a,p=c?E(d,c):d,u=c?R(m,c):m,t={type:e,name:n,domain:i,database:p?v(p):void 0,compute:u?{server:u}:void 0,cdn:s?{domainNames:s.domainNames,certificateArn:s.certificateArn}:void 0,environment:f},o=g.safeParse(t);return o.success?y(o.data):l(new Error(`Invalid pattern config: ${o.error.message}`))}r(I,"buildPatternConfig");export{h as planOpenNextResources};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{success as
|
|
1
|
+
var b=Object.defineProperty;var d=(a,e)=>b(a,"name",{value:e,configurable:!0});import{success as c,failure as u}from"../types/Result.js";import{toPascalCase as l}from"../generation/common.js";import{applyComputeConnections as y,applyServiceConnections as w}from"./resourceConnections.js";function G(a){const e=a.database.length>0,n=a.cdn!==void 0;return[{type:"database",label:"Database (RDS)",available:!0},{type:"database:proxy",label:"RDS Proxy",available:e,reason:e?void 0:"Requires at least one database"},{type:"storage:s3",label:"S3 Bucket",available:!0},{type:"network",label:"Network (VPC)",available:!0},{type:"compute:ecs",label:"Compute (ECS)",available:!0},{type:"compute:lambda",label:"Compute (Lambda)",available:!0},{type:"cdn",label:"CDN (CloudFront)",available:!n,reason:n?"A CDN is already configured. Remove existing CDN first.":void 0},{type:"tunnel",label:"Database Tunnel",available:e&&!a.tunnel,reason:e?a.tunnel?"Tunnel is already enabled":void 0:"Requires at least one database"}]}d(G,"listAvailableResources");function g(a,e){if(S(a,e.resourceName))return u(new Error(`Resource name '${e.resourceName}' is already used in this application.`));switch(e.type){case"database":return v(a,e);case"database:proxy":return C(a,e);case"storage:s3":return c(void 0);case"network":return c(void 0);case"compute:ecs":return!e.services||e.services.length===0?u(new Error("ECS compute requires at least one service.")):c(void 0);case"compute:lambda":return c(void 0);case"cdn":return h(a,e);case"tunnel":return R(a);default:{const n=e;return u(new Error(`Unknown resource type: ${String(n)}`))}}}d(g,"validateResourceAddition");function v(a,e){const n=e.databaseName??e.resourceName.toLowerCase();return a.database.some(t=>t.databaseName===n)?u(new Error(`Database name '${n}' already exists. Choose a different database name.`)):e.databaseType==="GlobalAurora"&&!e.primaryRegion?u(new Error("GlobalAurora databases require a primaryRegion.")):c(void 0)}d(v,"validateDatabaseAddition");function C(a,e){const n=a.database.find(r=>r.name===e.targetDatabase||r.databaseName===e.targetDatabase);if(!n){const r=a.database.map(t=>t.name).join(", ")||"none";return u(new Error(`Database '${e.targetDatabase}' not found. Available databases: ${r}`))}return n.proxy!==void 0&&n.proxy!==!1?u(new Error(`Database '${n.name}' already has RDS Proxy enabled.`)):c(void 0)}d(C,"validateProxyAddition");function h(a,e){if(a.cdn)return u(new Error("A CDN is already configured for this application. Remove the existing CDN first."));if(!f(a,e.defaultOriginRef))return u(new Error(`Origin '${e.defaultOriginRef}' not found in plan. CDN origin must reference an existing resource.`));if(e.behaviours){for(const n of e.behaviours)if(!f(a,n.originRef))return u(new Error(`Behaviour origin '${n.originRef}' not found in plan.`))}return c(void 0)}d(h,"validateCdnAddition");function R(a){return a.tunnel&&typeof a.tunnel=="object"?u(new Error("Tunnel is already enabled for this application.")):a.database.length===0?u(new Error("No databases found \u2014 tunnel requires at least one relational database.")):c(void 0)}d(R,"validateTunnelAddition");function z(a,e){const n=g(a,e);if(!n.success)return n;switch(e.type){case"database":return x(a,e);case"database:proxy":return k(a,e);case"storage:s3":return D(a,e);case"network":return N(a,e);case"compute:ecs":return A(a,e);case"compute:lambda":return T(a,e);case"cdn":return E(a,e);case"tunnel":return P(a,e);default:{const r=e;return u(new Error(`Unknown resource type: ${String(r)}`))}}}d(z,"addResourceToPlan");function x(a,e){const n=e.databaseName??e.resourceName.toLowerCase(),r={name:e.resourceName,type:e.databaseType,databaseName:n};let t;switch(e.databaseType){case"Instance":t={...r,...e.instanceType!==void 0?{instanceType:e.instanceType}:{},...e.multiAz!==void 0?{multiAz:e.multiAz}:{},...e.readReplica!==void 0?{readReplica:e.readReplica}:{},...e.publiclyAccessible!==void 0?{publiclyAccessible:e.publiclyAccessible}:{},...e.backupRetention!==void 0?{backupRetention:e.backupRetention}:{}};break;case"Aurora":t={...r,...e.writer!==void 0?{writer:e.writer}:{},...e.readers!==void 0?{readers:e.readers}:{},...e.backupRetention!==void 0?{backupRetention:e.backupRetention}:{},...e.preferredMaintenanceWindow!==void 0?{preferredMaintenanceWindow:e.preferredMaintenanceWindow}:{}};break;case"GlobalAurora":t={...r,primaryRegion:e.primaryRegion,...e.secondaryRegions!==void 0?{secondaryRegions:e.secondaryRegions}:{}};break;default:{const s=e.databaseType;return u(new Error(`Unknown database type: ${String(s)}`))}}const i={...a,database:[...a.database,t]};return o(i,e.resourceName,"database",e),c(i)}d(x,"addDatabase");function k(a,e){const n=a.database.map(i=>({...i})),r=n.find(i=>i.name===e.targetDatabase||i.databaseName===e.targetDatabase);if(!r)return u(new Error(`Database '${e.targetDatabase}' not found.`));const t={};return e.maxConnections!==void 0&&(t.maxConnections=e.maxConnections),e.maxIdleConnections!==void 0&&(t.maxIdleConnections=e.maxIdleConnections),e.connectionBorrowTimeout!==void 0&&(t.connectionBorrowTimeout=e.connectionBorrowTimeout),e.requireTLS!==void 0&&(t.requireTLS=e.requireTLS),r.proxy=Object.keys(t).length>0?t:{},c({...a,database:n})}d(k,"addProxy");function D(a,e){const n=e.bucketName??e.resourceName.toLowerCase(),r=l(n),t=a.s3.length,i=t===0?"":`${t+1}`,s={name:r,bucketName:n,variableName:`bucket${i}`,...e.publicReadAccess!==void 0?{publicReadAccess:e.publicReadAccess}:{},...e.versioned!==void 0?{versioned:e.versioned}:{},...e.encryption!==void 0?{encryption:e.encryption}:{},...e.websiteHosting?{websiteHosting:{indexDocument:"index.html"}}:{}},m={...a,s3:[...a.s3,s]};return o(m,r,"storage",e),c(m)}d(D,"addS3");function N(a,e){const n={};if(e.maxAzs!==void 0&&(n.maxAzs=e.maxAzs),e.natGateways!==void 0&&(n.natGateways=e.natGateways),e.flowLogs!==void 0&&(n.flowLogs=e.flowLogs),e.vpcEndpoints!==void 0&&(n.vpcEndpoints=e.vpcEndpoints),e.networkName){const r={name:e.networkName,...n};return c({...a,additionalNetworks:[...a.additionalNetworks??[],r]})}return c({...a,network:{...a.network??{},...n}})}d(N,"addNetwork");function A(a,e){const n=e.connectedDatabase??[],r={name:e.resourceName,type:"ecs",needsConnection:n.length>0,connectedDatabase:n,...e.loadBalancer!==void 0?{cluster:{loadBalancer:e.loadBalancer}}:{},services:e.services.map(t=>({name:t.name,capacityProvider:t.capacityProvider??"FARGATE",...t.port!==void 0?{containers:[{port:t.port}]}:{},...t.cpu!==void 0?{cpu:t.cpu}:{},...t.memory!==void 0?{memoryLimitMiB:t.memory}:{}})),...e.docker!==void 0&&{docker:e.docker}};return c({...a,compute:[...a.compute,r]})}d(A,"addEcsCompute");function T(a,e){const n=e.connectedDatabase??[],r={name:e.resourceName,type:"lambda",needsConnection:n.length>0,connectedDatabase:n,...e.timeout!==void 0?{timeout:e.timeout}:{},...e.memory!==void 0?{memory:e.memory}:{},...e.handler!==void 0?{handler:e.handler}:{},...e.runtime!==void 0?{runtime:e.runtime}:{}};return c({...a,compute:[...a.compute,r]})}d(T,"addLambdaCompute");function E(a,e){const n={name:e.resourceName,defaultOriginRef:e.defaultOriginRef,...e.customDomain!==void 0?{customDomain:e.customDomain}:{},...e.certificateArn!==void 0?{certificateArn:e.certificateArn}:{},...e.behaviours&&e.behaviours.length>0?{behaviours:[...e.behaviours].map(r=>({pathPattern:r.pathPattern,originRef:r.originRef,...r.cachePolicy!==void 0?{cachePolicy:r.cachePolicy}:{}}))}:{}};return c({...a,cdn:n})}d(E,"addCdn");function P(a,e){const n=e.instanceType?{instanceType:e.instanceType}:{};return c({...a,tunnel:n})}d(P,"addTunnel");function S(a,e){const n=[...a.database.map(r=>r.name),...a.s3.map(r=>r.name),...a.compute.map(r=>r.name),...(a.dynamodb??[]).map(r=>r.name),...(a.sqs??[]).map(r=>r.name)];return a.cdn&&n.push(a.cdn.name),n.includes(e)}d(S,"isResourceNameTaken");function f(a,e){return a.database.some(n=>n.name===e)||a.s3.some(n=>n.name===e)||a.compute.some(n=>n.name===e)||(a.dynamodb??[]).some(n=>n.name===e)||(a.sqs??[]).some(n=>n.name===e)}d(f,"resourceExistsInPlan");function o(a,e,n,r){r.connectToCompute&&r.connectToCompute.length>0&&y(a,[...r.connectToCompute],e,n),r.connectToServices&&r.connectToServices.length>0&&w(a,[...r.connectToServices],e,n)}d(o,"applyConnections");export{z as addResourceToPlan,G as listAvailableResources,g as validateResourceAddition};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
var l=Object.defineProperty;var a=(e,n)=>l(e,"name",{value:n,configurable:!0});function v(e){const n=e.split("/");if(n.length!==2||!n[0]||!n[1])throw new Error(`Invalid service reference format: '${e}'. Expected 'ClusterName/ServiceName'.`);return n[0]}a(v,"parseServiceReference");function d(e,n,o){o==="database"?(e.needsConnection=!0,e.connectedDatabase=[...new Set([...e.connectedDatabase??[],n])]):e.connectedStorage=[...new Set([...e.connectedStorage??[],n])]}a(d,"addResourceConnection");function p(e,n,o,s){const t=new Set(n),r=[...new Set(n.map(v))];for(const f of r){const i=e.compute.find(c=>c.name===f);if(i?.services){d(i,o,s);for(const c of i.services){const u=`${f}/${c.name}`;t.has(u)&&(s==="database"?c.needsDatabaseConnection=!0:c.needsStorageConnection=!0)}}}}a(p,"applyServiceConnections");function C(e,n,o,s){for(const t of e.compute)if(n.includes(t.name)&&(d(t,o,s),t.services))for(const r of t.services)s==="database"?r.needsDatabaseConnection=!0:r.needsStorageConnection=!0}a(C,"applyComputeConnections");export{C as applyComputeConnections,p as applyServiceConnections};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TIER_PRESETS as
|
|
1
|
+
var b=Object.defineProperty;var a=(e,n)=>b(e,"name",{value:n,configurable:!0});import{TIER_PRESETS as l,getDefaultDatabaseTypeForTier as k,applyTierDefaultsToServices as P}from"../presets/tierPresets.js";import{COMPUTE_TYPE as D,DEFAULT_CONTAINER_PORT as T}from"../schemas/constants.js";import{success as f,failure as h}from"../types/Result.js";import{injectCustomCodeBlocks as p}from"../ast/mutation/astCodeInjection.js";import{toVariableName as m,toValidDatabaseName as v,generateImports as E,generateAppInit as R,generateTags as S,generateNetworkCode as C,generateDatabaseCode as y,generateClickHouseCode as I,generateS3Code as w,generateDynamoDBCode as A,generateSQSCode as B,generateComputeCode as U,generateCDNCode as x,collectCdnReferencedResources as j,usesPatternApproach as _,generatePatternCodeWithComments as $}from"../generation/index.js";function G(e){return e?.map(n=>({name:n.name,...n.serviceType!==void 0&&{serviceType:n.serviceType},...n.docker!==void 0&&{docker:n.docker},...n.containerPort!==void 0&&{containerPort:n.containerPort},...n.needsDatabaseConnection!==void 0&&{needsDatabaseConnection:n.needsDatabaseConnection},...n.routing!==void 0&&{routing:n.routing}}))}a(G,"toUserServiceConfigs");function J(e,n,r=!0,c,t){const i={appName:e,type:n,database:[],s3:[],compute:[]};if(n==="custom")return i;const s=n,o=l[s];return{...i,database:F(e,o,s,r,t),compute:V(e,o,s,r,c),network:o.network,backup:o.backup}}a(J,"planApplicationResources");function F(e,n,r,c,t){const i=k(r),s=n.database[i];return!c||s===null?[]:[{name:e,type:i,databaseName:v(e),variableName:`${m(e)}Database`,...s,...t?.snapshotIdentifier!==void 0&&{snapshotIdentifier:t.snapshotIdentifier},...t?.snapshotUsername!==void 0&&{snapshotUsername:t.snapshotUsername}}]}a(F,"buildDatabasePlan");function N(e,n){if(!(e===void 0&&n===void 0))return{scaling:{...e!==void 0&&{minCapacity:e},...n!==void 0&&{maxCapacity:n}}}}a(N,"buildScalingConfig");function H(e,n){const{minCapacity:r,maxCapacity:c,...t}=e,i=n?.serviceType==="worker",s=n?.containerPort??T,o=n?.docker;return{...t,...o?.path!==void 0&&{docker:{path:o.path,...o.context!==void 0&&{context:o.context},...o.target!==void 0&&{target:o.target}}},...n?.needsDatabaseConnection!==void 0&&{needsDatabaseConnection:n.needsDatabaseConnection},containers:i?[{}]:[{port:s}],...N(r,c)}}a(H,"buildServiceEntry");function M(e,n){return n||e?.directAccess===!0?e:{...e,loadBalancer:!1}}a(M,"resolveClusterConfig");function V(e,n,r,c,t){const i=n.compute.ecs,o=(t&&t.length>0?P(r,t):i.services.map((u,d)=>({...u,name:d===0?"api":`service-${d+1}`}))).map((u,d)=>H(u,t?.[d])),g=o.some(u=>u.containers?.some(d=>d.port!==void 0));return[{name:e,type:D.ECS,needsConnection:c,connectedDatabase:c?[e]:void 0,variableName:`${m(e)}Compute`,cluster:M(i.cluster,g),services:o}]}a(V,"buildComputePlan");function K(e,n){const r=[E(e),R(e),S(e)];if(_(e))r.push($(e),C(e));else{const t=j(e);r.push(C(e),y(e),I(e),w(e),A(e),B(e),U(e,t),x(e))}const c=r.join("");if(e.customCodeBlocks&&e.customCodeBlocks.length>0){const t=p(c,e.customCodeBlocks,n?.resourceMapping);return t.success?f(t.content):h(new Error(`Custom code injection failed: ${t.error??"unknown error"}`))}return f(c)}a(K,"generateInfrastructureFromPlan");export{K as generateInfrastructureFromPlan,J as planApplicationResources,G as toUserServiceConfigs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{success as
|
|
1
|
+
var c=Object.defineProperty;var a=(r,e)=>c(r,"name",{value:e,configurable:!0});import{success as i,failure as u}from"../types/Result.js";import{StaticSitePatternConfigSchema as d}from"../schemas/resourceSchemas.js";function g(r,e){const n={type:"staticsite",name:r,source:e.source,build:e.build,...e.routing!==void 0&&{routing:e.routing},...e.security!==void 0&&{security:e.security},...e.domain!==void 0&&{domain:e.domain},...e.forms!==void 0&&{forms:e.forms},...e.cdn!==void 0&&{cdn:e.cdn}},t=d.safeParse(n);return t.success?i({appName:r,type:"standard",pattern:"staticsite",patternConfig:t.data,database:[],s3:[],compute:[],tags:e.tags??{}}):u(new Error(`Invalid static-site pattern config: ${t.error.message}`))}a(g,"planStaticSiteResources");export{g as planStaticSiteResources};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var o=Object.defineProperty;var i=(t,n)=>o(t,"name",{value:n,configurable:!0});const a=["lightweight","standard","resilient"],l=[...a,"custom"],e=Object.freeze({lightweight:{displayName:"Lightweight",description:"Cost-effective \xB7 Instance DB, minimal Lambda",database:{type:"Instance",instanceType:"t4g.small",backupRetention:7,deletionProtection:!1},compute:{memorySize:512,timeout:30},network:{maxAzs:2,natGateways:{count:1},flowLogs:!1},backup:!1},standard:{displayName:"Standard",description:"Production-ready \xB7 Instance DB, balanced Lambda",database:{type:"Instance",instanceType:"t4g.large",backupRetention:14,deletionProtection:!0},compute:{memorySize:1536,timeout:60},network:{maxAzs:3,natGateways:{count:1},flowLogs:{}},backup:{tier:"standard"}},resilient:{displayName:"Resilient",description:"High-availability \xB7 Aurora V2, KMS encryption",database:{type:"Aurora",backupRetention:30,deletionProtection:!0,encryption:{useCMK:!0}},compute:{memorySize:2048,timeout:120},network:{maxAzs:3,natGateways:{count:3},flowLogs:{retentionDays:90}},backup:{tier:"resilient"}}});function c(t){return e[t]}i(c,"getPatternTierPreset");function d(){return[{label:e.standard.displayName,value:"standard",description:e.standard.description},{label:e.lightweight.displayName,value:"lightweight",description:e.lightweight.description},{label:e.resilient.displayName,value:"resilient",description:e.resilient.description},{label:"Custom",value:"custom",description:"Full control \xB7 Configure everything"}]}i(d,"getPatternTierOptions");const r=new Set(a);function p(t){return r.has(t)}i(p,"isPatternTierName");export{a as PATTERN_TIER_NAMES,e as PATTERN_TIER_PRESETS,l as PATTERN_TYPES_WITH_CUSTOM,d as getPatternTierOptions,c as getPatternTierPreset,p as isPatternTierName};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var r=Object.defineProperty;var t=(e,s)=>r(e,"name",{value:s,configurable:!0});const o=Object.freeze({standard:{},assets:{versioned:!0,deployment:{source:"./assets"}},upload:{versioned:!0,cors:[{allowedOrigins:["*"],allowedMethods:["GET","PUT","POST"]}]},website:{publicReadAccess:!0,websiteHosting:{indexDocument:"index.html",errorDocument:"error.html"}}});function l(e){return{...o[e]}}t(l,"getStoragePreset");function n(){return[{label:"Standard",value:"standard"},{label:"Assets",value:"assets"},{label:"Upload",value:"upload"},{label:"Website Hosting",value:"website"}]}t(n,"getStoragePresetOptions");export{o as STORAGE_PRESETS,l as getStoragePreset,n as getStoragePresetOptions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TIER_NAMES as
|
|
1
|
+
var C=Object.defineProperty;var r=(e,t)=>C(e,"name",{value:t,configurable:!0});import{TIER_NAMES as f}from"../schemas/sharedTypes.js";import{TIER_NAMES as P,CUSTOM_TIER as R,APP_TYPES as G}from"../schemas/sharedTypes.js";const s="service",u="0 4 * * ? *",p="0 5 * * ? *",n=Object.freeze({tinkerer:{displayName:"Tinkerer",description:"Free tier eligible, minimal cost for experimentation",database:{Instance:{instanceType:"t4g.micro",multiAz:!1,proxy:!1,readReplica:!1,publiclyAccessible:!0},Aurora:null,GlobalAurora:null,ClickHouse:null},compute:{ecs:{services:[{name:s,capacityProvider:"EC2",desiredCount:1,minCapacity:1,maxCapacity:1,ec2Config:{instanceType:"t4g.micro",amiHardwareType:"ARM",minCapacity:1,maxCapacity:1,memoryLimitMiB:400}}],cluster:{directAccess:!0}},lambda:{timeout:30,memory:128}},network:{maxAzs:2,natGateways:!1,flowLogs:!1},backup:!1},lightweight:{displayName:"Lightweight",description:"Streamlined single-AZ deployment for cost efficiency",database:{Instance:{instanceType:"t4g.small",multiAz:!1},Aurora:{readers:!1},GlobalAurora:null,ClickHouse:null},compute:{ecs:{services:[{name:s,capacityProvider:"FARGATE_SPOT",cpu:256,memoryLimitMiB:512,desiredCount:1,minCapacity:1,maxCapacity:3}]},lambda:{timeout:30,memory:256}},network:{maxAzs:2,natGateways:{count:1},flowLogs:!1},backup:!1},standard:{displayName:"Standard",description:"Production-ready with sensible defaults",database:{Instance:{instanceType:"t4g.large"},Aurora:{readers:{count:1}},GlobalAurora:{readers:{count:1}},ClickHouse:{instanceType:"t4g.medium",coldTier:{mode:"s3"},optimiseSchedule:u,backupSchedule:p,backupRetentionDays:14}},compute:{ecs:{services:[{name:s,capacityProvider:"FARGATE",cpu:512,memoryLimitMiB:1024,desiredCount:2,minCapacity:2,maxCapacity:5}]},lambda:{timeout:60,memory:256}},network:{maxAzs:3,natGateways:{count:1},flowLogs:{},vpcEndpoints:{interface:{ecr:!0}}},backup:!1},resilient:{displayName:"Resilient",description:"High availability with enhanced monitoring and scaling",database:{Instance:{instanceType:"r7g.large",encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0}},Aurora:{readers:{count:2},encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0},backupRetention:30},GlobalAurora:{readers:{count:2},encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0},backupRetention:30,enableGlobalWriteForwarding:!0},ClickHouse:{instanceType:"m6g.large",coldTier:{mode:"s3"},optimiseSchedule:u,backupSchedule:p,backupRetentionDays:14}},compute:{ecs:{services:[{name:s,capacityProvider:"FARGATE",cpu:1024,memoryLimitMiB:2048,desiredCount:4,minCapacity:4,maxCapacity:20}]},lambda:{timeout:120,memory:512}},network:{maxAzs:3,natGateways:{count:3},flowLogs:{retentionDays:90},vpcEndpoints:{interface:{ecr:!0,secretsManager:!0}}},backup:{tier:"resilient"}},enterprise:{displayName:"Enterprise",description:"Maximum capability with all features enabled",database:{Instance:{instanceType:"r7g.xlarge",encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0},readReplica:{}},Aurora:{readers:{count:2},encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0},backupRetention:35},GlobalAurora:{readers:{count:2},encryption:{storageKey:{useCMK:!0}},databaseInsights:{mode:"advanced",encryptionKey:{useCMK:!0}},proxy:{requireTLS:!0},backupRetention:35,enableGlobalWriteForwarding:!0},ClickHouse:{instanceType:"m6g.xlarge",coldTier:{mode:"s3"},optimiseSchedule:u,backupSchedule:p,backupRetentionDays:30}},compute:{ecs:{services:[{name:s,capacityProvider:"FARGATE",cpu:2048,memoryLimitMiB:4096,desiredCount:6,minCapacity:6,maxCapacity:100}]},lambda:{timeout:300,memory:1024}},network:{maxAzs:3,natGateways:{count:3},flowLogs:{destination:"s3",retentionDays:365},vpcEndpoints:{interface:{ecr:!0,secretsManager:!0,kms:!0,cloudwatchLogs:!0}}},backup:{tier:"enterprise"}}});function E(e,t){return n[e].database[t]}r(E,"getDatabasePreset");function v(e){return n[e].compute.ecs}r(v,"getEcsPreset");function h(e){return n[e].network}r(h,"getNetworkPreset");function T(e){return f.filter(t=>n[t].database[e]!==null)}r(T,"getAvailableTiersForDatabase");function L(e){return T(e).map(t=>({label:n[t].displayName,value:t,description:n[t].description}))}r(L,"getTierOptionsForDatabase");function M(e){switch(e){case"tinkerer":case"lightweight":case"standard":return"Instance";case"resilient":case"enterprise":return"Aurora"}}r(M,"getDefaultDatabaseTypeForTier");function S(e,t){const o=n[e].compute.ecs,i=o.services[0],m=!o.cluster?.directAccess&&o.cluster?.loadBalancer!==!1,y=t.filter(a=>a.serviceType!=="worker").length,b=t.findIndex(a=>a.serviceType!=="worker");return t.map((a,l)=>{const d=l===b,g=a.serviceType==="worker";let c;return m&&!g&&(a.routing?c=a.routing:y>1&&(c={path:d?"/*":`/${a.name.toLowerCase()}/*`,...d?{}:{priority:100+l}})),{name:a.name,capacityProvider:i.capacityProvider,ec2Config:i.ec2Config,cpu:i.cpu,memoryLimitMiB:i.memoryLimitMiB,desiredCount:i.desiredCount,minCapacity:i.minCapacity,maxCapacity:i.maxCapacity,routing:c}})}r(S,"applyTierDefaultsToServices");export{G as APP_TYPES,R as CUSTOM_TIER,P as TIER_NAMES,n as TIER_PRESETS,S as applyTierDefaultsToServices,T as getAvailableTiersForDatabase,E as getDatabasePreset,M as getDefaultDatabaseTypeForTier,v as getEcsPreset,h as getNetworkPreset,L as getTierOptionsForDatabase};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{z as e}from"zod";import{VALIDATION_PATTERNS as o,VALIDATION_MESSAGES as t}from"../validation/patterns.js";import{APP_TYPES as
|
|
2
|
-
`)}export{
|
|
1
|
+
var A=Object.defineProperty;var r=(n,i)=>A(n,"name",{value:i,configurable:!0});import{z as e}from"zod";import{VALIDATION_PATTERNS as o,VALIDATION_MESSAGES as t}from"../validation/patterns.js";import{APP_TYPES as m,PATTERN_TYPE_VALUES as p,MIN_PORT as N,MAX_PORT as _,BACKUP_VAULT_TIERS as g,GOVERNANCE_PRESETS as T}from"./constants.js";import{DEFAULT_REGION as I,regions as l}from"../aws/regions.js";const G=r(n=>e.union([e.literal(!1),n]),"optionalOrDisabled"),U={check:r(n=>n.minCapacity!==void 0&&n.maxCapacity!==void 0?n.minCapacity<=n.maxCapacity:!0,"check"),params:{message:t.CAPACITY_CONSTRAINT.MIN_LTE_MAX,path:["maxCapacity"]}},V=r(n=>e.number().int(t.MEMORY_LIMIT.INTEGER).min(n,n===128?t.MEMORY_LIMIT.MIN_128:t.MEMORY_LIMIT.MIN_512).max(30720,t.MEMORY_LIMIT.MAX),"memoryLimitMiBSchema"),j=e.string().min(1,t.REQUIRED.RESOURCE_NAME).max(63,t.MAX_LENGTH.RESOURCE_NAME).regex(o.RESOURCE_NAME,t.RESOURCE_NAME),B=e.string().min(1,t.REQUIRED.BUCKET_NAME).max(63,t.MAX_LENGTH.BUCKET_NAME).regex(o.BUCKET_NAME,t.BUCKET_NAME),H=e.string().min(1,t.REQUIRED.DATABASE_NAME).max(63,t.MAX_LENGTH.DATABASE_NAME).regex(o.DATABASE_NAME,t.DATABASE_NAME);function c(n,i=o.IDENTIFIER,a=t.IDENTIFIER){return e.string().min(2,t.IDENTIFIER_MIN_LENGTH).max(50,n).regex(i,a).refine(s=>!s.endsWith("-"),{message:t.IDENTIFIER_NO_TRAILING_HYPHEN}).refine(s=>!s.includes("--"),{message:t.IDENTIFIER_NO_CONSECUTIVE_HYPHENS})}r(c,"identifierSchema");const X=c(t.MAX_LENGTH.APP_NAME),Y=c(t.MAX_LENGTH.APP_NAME,o.NEW_APP_NAME,t.NEW_APP_NAME),k=e.number().int(t.PORT.INTEGER).min(N,t.PORT.MIN).max(_,t.PORT.MAX),F=e.object({key:e.string(),sourceText:e.string()}).strict(),M=e.object({__identifier:e.string()}).strict(),S=e.object({__expression:e.string()}).strict(),x=e.object({__call:e.string()}).strict(),u=e.union([M,S,x]),R=e.union([e.string(),e.number(),e.boolean(),u]),K=e.record(e.string().regex(o.ENV_VAR_NAME,t.ENV_VAR_NAME),R),h=e.object({id:e.string(),name:e.string().optional(),arn:e.string().optional(),field:e.string().optional()}).strict().refine(n=>n.name!==void 0!=(n.arn!==void 0),{message:"secretsImport requires exactly one of `name` or `arn`."}),$=e.record(e.string(),h),v=e.record(e.string(),e.unknown()),w=e.enum(m).describe(`Application type must be one of: ${m.join(", ")}`),Q=e.enum(p).describe(`OpenNext deployment pattern: ${p.join(", ")}`),f=e.enum(["before-imports","after-imports","after-app-init","after-tags","after-resource","end-of-file"]),d=e.enum(["import","app-init","tags","database","compute","storage","network","messaging","cdn","pattern","vpc-peer","vpc-peer-accepter","cross-plan-connection","custom"]),W=e.object({sourceText:e.string(),position:f,afterManagedResource:e.object({type:d,name:e.string().optional()}).strict().optional(),originalLine:e.number().int().optional(),leadingComments:e.array(e.string()).optional(),orphaned:e.boolean().optional(),orphanedComment:e.string().optional()}).strict(),q=e.union([e.object({tier:e.enum(g)}).strict(),e.literal(!1)]),z=e.union([e.object({instanceType:e.string().optional()}).strict(),e.literal(!1)]),C=c(t.MAX_LENGTH.ORGANISATION_NAME),P=e.string().regex(o.EMAIL,t.EMAIL),E=e.string().refine(n=>l.includes(n),{message:t.REGION}),Z=e.object({name:C,email:P,accountName:e.string().optional(),primaryRegion:E.optional().default(I),secondaryRegions:e.array(E).optional(),security:e.enum(T).optional(),force:e.boolean().optional()}).strict();function J(n){return n.issues.map(a=>`${a.path.length>0?`${a.path.join(".")}: `:""}${a.message}`).join(`
|
|
2
|
+
`)}r(J,"getZodErrorMessage");export{X as AppNameSchema,w as AppTypeSchema,d as AstStatementTypeSchema,q as BackupConfigSchema,B as BucketNameSchema,U as CAPACITY_REFINEMENT,x as CallValueSchema,W as CustomCodeBlockSchema,f as CustomCodePositionSchema,H as DatabaseNameSchema,P as EmailSchema,K as EnvironmentRecordSchema,R as EnvironmentValueSchema,S as ExpressionValueSchema,F as ExtraPropertySchema,M as IdentifierValueSchema,v as MetadataRecordSchema,Y as NewAppNameSchema,Z as OrganisationGeneratorSchema,C as OrganisationNameSchema,Q as PatternSchema,k as PortSchema,E as RegionSchema,j as ResourceNameSchema,h as SecretImportSchema,$ as SecretsImportRecordSchema,u as SpecialValueSchema,z as TunnelConfigSchema,J as getZodErrorMessage,V as memoryLimitMiBSchema,G as optionalOrDisabled};
|