@fjall/generator 4.4.0 → 5.0.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.
@@ -0,0 +1,156 @@
1
+ {
2
+ "version": 1,
3
+ "algorithm": "sha256",
4
+ "sources": [
5
+ "src"
6
+ ],
7
+ "hash": "57a1628f8b57c0ec6e562cbb8d82160de330bd8409e1d9023a8bffb7198aaaa3",
8
+ "files": {
9
+ "src/ast/astTestHelpers.ts": "026cac849eb88bdb",
10
+ "src/ast/domain/astDomainParser.ts": "bac0b16eb2e62552",
11
+ "src/ast/index.ts": "502a507c3764acbf",
12
+ "src/ast/mutation/astCodeInjection.ts": "c1ebf483fb1e2332",
13
+ "src/ast/mutation/astExpressionEvaluator.ts": "6082789268b91212",
14
+ "src/ast/mutation/astSurgicalModification.ts": "9c512e11e8239c4d",
15
+ "src/ast/parsers/common/astCommonParser.ts": "d4c19453e9a75cac",
16
+ "src/ast/parsers/common/astStatementClassifier.ts": "b053f2ed51ec76f5",
17
+ "src/ast/parsers/common/astStatementQueries.ts": "e40e31e0fcdc15e3",
18
+ "src/ast/parsers/orchestrator/astInfrastructureParser.ts": "07fd7a94796ebf5f",
19
+ "src/ast/parsers/orchestrator/astPlanConverter.ts": "eb9b1f0ab90f6999",
20
+ "src/ast/parsers/resources/astCdnParser.ts": "e00d034378374811",
21
+ "src/ast/parsers/resources/astClickHouseParser.ts": "cf49943b3d2bbd48",
22
+ "src/ast/parsers/resources/astComputeConnectionParser.ts": "e0f1533845f3ce8a",
23
+ "src/ast/parsers/resources/astComputeParser.ts": "98e4a2e6b2d634fa",
24
+ "src/ast/parsers/resources/astComputeParserHelpers.ts": "6e0349d365bcf6cf",
25
+ "src/ast/parsers/resources/astDatabaseParser.ts": "e18f5483f5e23297",
26
+ "src/ast/parsers/resources/astDynamoDBParser.ts": "809c2c633447b388",
27
+ "src/ast/parsers/resources/astMessagingParser.ts": "b185ec22e6b96943",
28
+ "src/ast/parsers/resources/astNetworkParser.ts": "8697dccb454eac7d",
29
+ "src/ast/parsers/resources/astPatternParser.ts": "09c624247eaf0786",
30
+ "src/ast/parsers/resources/astScheduleParser.ts": "03de29da6d4b7380",
31
+ "src/ast/parsers/resources/astStorageParser.ts": "309bc3257f46cfdf",
32
+ "src/aws/regions.ts": "a028bcb92b0e41d9",
33
+ "src/codemod/_internal.ts": "e865b7172fcc457b",
34
+ "src/codemod/drift/detect.ts": "af3fb518a9d7165d",
35
+ "src/codemod/drift/index.ts": "e87e1ced35eefa44",
36
+ "src/codemod/drift/merge.ts": "29093929befa9abd",
37
+ "src/codemod/drift/snapshot.ts": "f8ef6b4097aa3d10",
38
+ "src/codemod/drift/types.ts": "7f1d7899e420e4d7",
39
+ "src/codemod/edits/addResource.ts": "002563615dbca570",
40
+ "src/codemod/edits/addResource/appBinding.ts": "20fe5dbcfdc378c3",
41
+ "src/codemod/edits/addResource/bodyIndex.ts": "3e179eac10d7bcf4",
42
+ "src/codemod/edits/addResource/propertyBuilder.ts": "18022f8899ba4b38",
43
+ "src/codemod/edits/appendAccountToStage.ts": "2b92f93734497303",
44
+ "src/codemod/edits/controlFlowPolicy.ts": "e32bbe2894f76c65",
45
+ "src/codemod/edits/crossPlanConnection.ts": "54a4ecb7b3368160",
46
+ "src/codemod/edits/driftPolicy.ts": "5d9b7bb3505f987d",
47
+ "src/codemod/edits/ensureImports.ts": "3ca0b6d446c4333c",
48
+ "src/codemod/edits/findInsertionPosition.ts": "20cd34fdcf781017",
49
+ "src/codemod/edits/index.ts": "bea5ed7c3983342b",
50
+ "src/codemod/edits/modifyResource.ts": "8b91e93dc9a732ec",
51
+ "src/codemod/edits/modifyResource/literalConversion.ts": "9a9eefbe72e434bf",
52
+ "src/codemod/edits/removeResource.ts": "2c7c8fe67bc3a866",
53
+ "src/codemod/edits/removeResource/commentHeuristic.ts": "90b6ce7ba5aa2a48",
54
+ "src/codemod/edits/removeResource/importPruning.ts": "f22783108b40f6cb",
55
+ "src/codemod/edits/unmanagedShapeErrors.ts": "4ea5a1614f8065f8",
56
+ "src/codemod/edits/vpcPeer.ts": "0bcf90c2e6d16ca4",
57
+ "src/codemod/edits/vpcPeerAccepter.ts": "c9eace933e9e2345",
58
+ "src/codemod/fileRewriter/builders.ts": "46a0d43240ff0818",
59
+ "src/codemod/fileRewriter/index.ts": "fd715b41176a7999",
60
+ "src/codemod/fileRewriter/locateByRange.ts": "889ee6256201c1fe",
61
+ "src/codemod/fileRewriter/parse.ts": "b12026c31562a13c",
62
+ "src/codemod/fileRewriter/print.ts": "f5ff7afb5b7786bf",
63
+ "src/codemod/historyPaths.ts": "ef8084013146db57",
64
+ "src/codemod/index.ts": "a555c237989cb6c4",
65
+ "src/codemod/listResources.ts": "97f206a50edbea20",
66
+ "src/codemod/llmFallback/apply.ts": "2e656a6e55b3b4e3",
67
+ "src/codemod/llmFallback/claudeTier.ts": "0a37fe782c85f75b",
68
+ "src/codemod/llmFallback/egressGate.ts": "2573dcf5b7a126a0",
69
+ "src/codemod/llmFallback/egressGate.types.ts": "15531dd497ae6135",
70
+ "src/codemod/llmFallback/index.ts": "b6c6cc8ef78d7887",
71
+ "src/codemod/llmFallback/morphTier.ts": "9551b6b63a1af561",
72
+ "src/codemod/llmFallback/prompt.ts": "60e8f4ab434bf9ec",
73
+ "src/codemod/llmFallback/runFallback.ts": "d3f1d1915aa56a23",
74
+ "src/codemod/llmFallback/shouldTryFallback.ts": "df6038f97612b8ee",
75
+ "src/codemod/llmFallback/signals.ts": "298bae6465b5f173",
76
+ "src/codemod/llmFallback/telemetryEvents.ts": "33a85939739693ab",
77
+ "src/codemod/llmFallback/tierRunner.ts": "a26094accd78cf15",
78
+ "src/codemod/llmFallback/types.ts": "14af8d2bd9afae12",
79
+ "src/codemod/registry.ts": "14b93cc476fdadd1",
80
+ "src/codemod/semanticIndex/classifyControlFlow.ts": "ed96215d91a3cae3",
81
+ "src/codemod/semanticIndex/findReferences.ts": "96aea37418d1e91a",
82
+ "src/codemod/semanticIndex/index.ts": "cfcd212d34ab20fb",
83
+ "src/codemod/semanticIndex/listImports.ts": "1e5fba6e34a17dab",
84
+ "src/codemod/semanticIndex/locateByShape.ts": "6c2eadd7d1df9464",
85
+ "src/codemod/semanticIndex/projectCache.ts": "dfd9b265c9d233c9",
86
+ "src/codemod/semanticIndex/resolveConstructByLiteralProperty.ts": "2d013a330af15c5c",
87
+ "src/codemod/telemetry/errorKinds.ts": "66c736abfa8b3a67",
88
+ "src/codemod/types.ts": "4097b650c1bde13a",
89
+ "src/codemod/validationGate/gates/classify.ts": "edb92a1f7a2d9aeb",
90
+ "src/codemod/validationGate/gates/drift.ts": "bd603a216fbb91a9",
91
+ "src/codemod/validationGate/gates/locate.ts": "2c186c32edbb97ce",
92
+ "src/codemod/validationGate/gates/parse.ts": "5433c5c8ffa35324",
93
+ "src/codemod/validationGate/gates/schema.ts": "aa904146e30219bd",
94
+ "src/codemod/validationGate/index.ts": "df5754bea9070410",
95
+ "src/codemod/validationGate/types.ts": "af466ee5f3433042",
96
+ "src/detection/index.ts": "b4ad9a935564cb3e",
97
+ "src/dns/bindParser.ts": "a5371cd1fa781ce6",
98
+ "src/dns/bindWriter.ts": "634b96dd15ee94b2",
99
+ "src/dns/domainFileGenerator.ts": "143fbcfbdb152398",
100
+ "src/dns/domainRecords.ts": "17f895ff9a7b719b",
101
+ "src/dns/index.ts": "b476ef3d7b381dc8",
102
+ "src/dns/types.ts": "82d6db9d7d26dbc2",
103
+ "src/generation/common.ts": "4b63724600c726de",
104
+ "src/generation/compute.ts": "4029a0d8e3197686",
105
+ "src/generation/compute/ec2.ts": "4d8187d293a57fb1",
106
+ "src/generation/compute/ecs.ts": "72190132fdaa1847",
107
+ "src/generation/compute/lambda.ts": "4f5e31080941b83a",
108
+ "src/generation/compute/shared.ts": "3724d4bfe92cfcb7",
109
+ "src/generation/database.ts": "a28f791f0f028343",
110
+ "src/generation/generatePatternCode.ts": "de16f42105a45358",
111
+ "src/generation/index.ts": "fd58a833e13bcf07",
112
+ "src/generation/infrastructure.ts": "6381d502f4733926",
113
+ "src/generation/messagingConnections.ts": "1f070088c39e9749",
114
+ "src/generation/storage.ts": "68fa78401bbcf8a5",
115
+ "src/generation/storageConnections.ts": "db1ab6ccdc19afab",
116
+ "src/index.ts": "fc8f27b8ffade9ef",
117
+ "src/planning/generateResourceChange.ts": "1c6411f9a12e7acb",
118
+ "src/planning/index.ts": "5caacb699eed31ba",
119
+ "src/planning/openNextPlanning.ts": "4af9cb9061f7d21e",
120
+ "src/planning/resourceAddition.ts": "45b010d2eaf96522",
121
+ "src/planning/resourceConnections.ts": "a6b7db8f733e560f",
122
+ "src/planning/resourcePlanning.ts": "85038ad65bda976f",
123
+ "src/planning/staticSitePlanning.ts": "242af1e9618821ab",
124
+ "src/presets/clickhouseTierPreset.ts": "72b2b8a8caf4bdb4",
125
+ "src/presets/index.ts": "8332c0198b2a6fe9",
126
+ "src/presets/patternTierPresets.ts": "f4fc368fc623aae4",
127
+ "src/presets/storagePresets.ts": "5df2d4d7d21a66d8",
128
+ "src/presets/tierPresets.ts": "c0148771bffbef9b",
129
+ "src/presets/tierTypes.ts": "96d33201ebddf6e6",
130
+ "src/schemas/alarmSchemas.ts": "9016095d8031f006",
131
+ "src/schemas/applicationSchemas.ts": "d85771a4607cf2da",
132
+ "src/schemas/baseSchemas.ts": "93d9bd1c0adfcaa0",
133
+ "src/schemas/buildkiteSchemas.ts": "a28ec3b40f7851ec",
134
+ "src/schemas/cdnSchemas.ts": "a982034c7903a31a",
135
+ "src/schemas/computeSchemas.ts": "516df862131921fe",
136
+ "src/schemas/constants.ts": "1df67cde0522a514",
137
+ "src/schemas/databaseSchemas.ts": "3c05f176e1aadb46",
138
+ "src/schemas/devRolePolicies.ts": "6ca70fb20f5fbebc",
139
+ "src/schemas/index.ts": "a1500a885048074b",
140
+ "src/schemas/instanceTypeArchitecture.ts": "6bf38031a54a4620",
141
+ "src/schemas/messagingSchemas.ts": "2c1975fac903fd1b",
142
+ "src/schemas/networkSchemas.ts": "c3a5f30e440dd2f8",
143
+ "src/schemas/organisationSchemas.ts": "50d793aa7ff7f749",
144
+ "src/schemas/patternSchemas.ts": "2ad2ed522c244ac1",
145
+ "src/schemas/resourceSchemas.ts": "cd050813242ea213",
146
+ "src/schemas/securityBoundary.ts": "54d216807103bab8",
147
+ "src/schemas/sharedTypes.ts": "45210e600bea393e",
148
+ "src/schemas/storageSchemas.ts": "2d4b9d86e3397387",
149
+ "src/types/Result.ts": "6a078a91fc3072e3",
150
+ "src/util/errorUtils.ts": "c021c57804424a5d",
151
+ "src/validation/patterns.ts": "f9629eafdad7ac3e",
152
+ "src/validation/validationMessages.ts": "c727ade4690274f4",
153
+ "src/validation/validationPatterns.ts": "865f3d688975b7c8",
154
+ "src/version.ts": "cf9b5c4290050e6f"
155
+ }
156
+ }
package/dist/.minified CHANGED
@@ -1 +1 @@
1
- 146 files minified at 2026-07-30T00:34:10.939Z
1
+ 146 files minified at 2026-07-31T11:05:13.235Z
@@ -24,7 +24,7 @@ ${l} certificates: [
24
24
  ],
25
25
  records: ${d},
26
26
  });
27
- `}r(k,"generateDefaultInfrastructureTs");function g(t){return JSON.stringify({name:`domain-${t}`,version:u,scripts:{},devDependencies:{"@types/node":"20.4.9","ts-node":"^10.9.1",typescript:"~5.1.6"},dependencies:{"@fjall/components-infrastructure":`^${u}`,"aws-cdk-lib":"^2.260.0",constructs:"^10.6.0"}},null,2)+`
27
+ `}r(k,"generateDefaultInfrastructureTs");function g(t){return JSON.stringify({name:`domain-${t}`,version:u,scripts:{},devDependencies:{"@types/node":"20.4.9","ts-node":"^10.9.1",typescript:"~5.1.6"},dependencies:{"@fjall/components-infrastructure":`^${u}`,"aws-cdk-lib":"^2.262.2",constructs:"^10.7.2"}},null,2)+`
28
28
  `}r(g,"generateDomainPackageJson");const y=`node_modules/
29
29
  cdk.out/
30
30
  *.d.ts
@@ -161,9 +161,10 @@ export interface OidcTrustParams {
161
161
  /**
162
162
  * §4.4a machine-trust rendering mode for the FjallDeploy role.
163
163
  *
164
- * - `"expanded"` (default): governance renders `[generic, acct]` — a SUPERSET
165
- * of the pre-§4.4a trust, safe for every org because off-allowlist mints
166
- * still issue the generic subject.
164
+ * - `"expanded"` (default): the machine accept list renders `[generic, acct]`
165
+ * wherever the account id is known — a SUPERSET of the pre-§4.4a trust,
166
+ * safe for every org because off-allowlist mints still issue the generic
167
+ * subject (governance tiers since §4.4a; every tier since §4.4b Step 1).
167
168
  * - `"account-scoped"` (Step-3 contract): the machine statement accepts ONLY
168
169
  * the account-scoped literal. Opt-in per deployment — NEVER the shared
169
170
  * default: issuance for most orgs still mints the generic subject, so a
@@ -180,17 +181,18 @@ export type MachineTrustMode = "expanded" | "account-scoped";
180
181
  */
181
182
  export interface NarrowedDeployTrustParams extends OidcTrustParams {
182
183
  /**
183
- * Account TIER (never the workload STAGE). When governance
184
- * (`organisation`/`platform`) AND `accountId` is present, the machine-subject
185
- * statement's accept list gains the account-scoped literal alongside the
186
- * generic `org:{orgId}:*` (§4.4a expand). App-tier (`account`) or absent ⇒
187
- * generic literal only (unchanged).
184
+ * Account TIER (never the workload STAGE). Gates ONLY the
185
+ * `"account-scoped"` contract mode, which stays restricted to governance
186
+ * tiers (`organisation`/`platform`) until §4.4b's probe gate lands. The
187
+ * expand itself keys on `accountId` alone (§4.4b Step 1).
188
188
  */
189
189
  accountTier?: AccountTier;
190
190
  /**
191
191
  * 12-digit AWS account id of THIS account — the `{awsAccountId}` in the
192
- * account-scoped machine subject ({@link deployAccountSubject}). Ignored
193
- * unless `accountTier` is governance.
192
+ * account-scoped machine subject ({@link deployAccountSubject}). When
193
+ * present, the machine accept list gains the account-scoped literal
194
+ * alongside the generic sentinel (expand); absent ⇒ generic-only
195
+ * (fail-safe — never widen to a wildcard we cannot bind to an account).
194
196
  */
195
197
  accountId?: string;
196
198
  /**
@@ -216,16 +218,15 @@ export interface NarrowedDeployTrustParams extends OidcTrustParams {
216
218
  * scoped dev-tier roles AccessDeny, so it runs under the admin role like
217
219
  * `org-setup` (design "Deploy-role boundary" VERDICT-2).
218
220
  *
219
- * §4.4a governance-tier expand: when `accountTier` is governance
220
- * (`organisation`/`platform`) AND `accountId` is present, the machine-subject
221
+ * §4.4a/§4.4b expand: when `accountId` is present the machine-subject
221
222
  * statement additionally accepts the account-scoped literal
222
223
  * `org:{orgId}:acct:{accountId}` ({@link deployAccountSubject}) — a SUPERSET of
223
224
  * the prior trust (the generic `org:{orgId}:*` is retained), so this step never
224
225
  * narrows on its own. Issuance flips to the account-scoped subject only after
225
- * this expand is LIVE (design §4.2 invariant). App-tier (`account`) or an
226
- * absent tier renders the generic-only machine subject unchanged; a governance
227
- * tier WITHOUT `accountId` falls back to generic-only (fail-safe — never widen
228
- * to a bare wildcard we cannot bind to an account).
226
+ * this expand is LIVE (design §4.2 invariant): governance issuance flipped
227
+ * with §4.4a; app-tier issuance stays generic until the §4.4b flip. An absent
228
+ * `accountId` renders the generic-only machine subject unchanged (fail-safe —
229
+ * never widen to a bare wildcard we cannot bind to an account).
229
230
  *
230
231
  * §4.4a Step-3 contract: `machineTrustMode: "account-scoped"` renders the
231
232
  * account-scoped literal ONLY (no generic member). Opt-in per deployment —
@@ -1 +1 @@
1
- var A=Object.defineProperty;var t=(e,a)=>A(e,"name",{value:a,configurable:!0});import{isGovernanceTier as u}from"@fjall/util";const y="fjall.io",c="sts.amazonaws.com",P="0000000000000000000000000000000000000000";function F(e){return`FjallDevDeploy${e}`}t(F,"devDeployRoleName");function T(e){return`FjallDevProvisioner${e}`}t(T,"devProvisionerRoleName");function $(e){return`FjallDevSyncWriter${e}`}t($,"devSyncWriterRoleName");const C="FjallDevDeployPolicy",k="FjallDevProvisionerPolicy",L="FjallDevSyncWriterPolicy",D="FjallDevBoundary";function m(e){return`arn:aws:iam::${e}:policy/${D}`}t(m,"devBoundaryPolicyArn");function R(e){return`org:${e}:dev-provisioner`}t(R,"devProvisionerSubject");function j(e){return`org:${e}:dev-sync`}t(j,"devSyncSubject");function d(e,a){return`org:${e}:acct:${a}`}t(d,"deployAccountSubject");function f(e){return`org:${e}:*`}t(f,"genericMachineSubject");const w=["discovery","connection","org-setup","dev-substrate-setup"];function E(e,a){return`org:${e}:${a}`}t(E,"serviceSubject");function h(e){const{fjallOrgId:a,providerArn:i,issuerDomain:r,accountTier:o,accountId:l}=e,v=e.machineTrustMode??"expanded",n={[`${r}:aud`]:c};let s;if(v==="account-scoped"){if(o===void 0||!u(o)||l===void 0)throw new Error(`machineTrustMode "account-scoped" requires a governance accountTier and an accountId (got tier: ${String(o)}, accountId ${l===void 0?"absent":"present"}) \u2014 refusing to fall back to the generic machine subject: a silent fallback would re-widen the trust the \xA74.4a Step-3 contract removes`);s=[d(a,l)]}else o!==void 0&&u(o)&&l!==void 0?s=[f(a),d(a,l)]:s=f(a);return[{Sid:"FjallMachineSubject",Effect:"Allow",Principal:{Federated:i},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...n,[`${r}:sub`]:s}}},{Sid:"FjallUserSubjects",Effect:"Allow",Principal:{Federated:i},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:n,StringLike:{[`${r}:sub`]:`org:${a}:user:*`}}},{Sid:"FjallServiceSubjects",Effect:"Allow",Principal:{Federated:i},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...n,[`${r}:sub`]:w.map(S=>E(a,S))}}}]}t(h,"buildNarrowedDeployTrustStatements");function x(e){const{fjallOrgId:a,providerArn:i,issuerDomain:r,accountId:o}=e;return[{Sid:"FjallDevSubjectsThisAccount",Effect:"Allow",Principal:{Federated:i},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${r}:aud`]:c},StringLike:{[`${r}:sub`]:`org:${a}:dev:${o}:*`}}}]}t(x,"buildDevDeployTrustStatements");function g(e){const{providerArn:a,issuerDomain:i,sid:r,subject:o}=e;return[{Sid:r,Effect:"Allow",Principal:{Federated:a},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${i}:aud`]:c,[`${i}:sub`]:o}}}]}t(g,"buildServiceSubjectTrustStatements");function G(e){return g({...e,sid:"FjallDevProvisionerSubject",subject:R(e.fjallOrgId)})}t(G,"buildDevProvisionerTrustStatements");function O(e){return g({...e,sid:"FjallDevSyncSubject",subject:j(e.fjallOrgId)})}t(O,"buildDevSyncWriterTrustStatements");function q({accountId:e}){return[{Sid:"FjallDevEcsTaggedMutations",Effect:"Allow",Action:["ecs:UpdateService","ecs:DeleteService","ecs:RunTask","ecs:StopTask"],Resource:`arn:aws:ecs:*:${e}:*`,Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevEcsTaggedCreates",Effect:"Allow",Action:["ecs:RegisterTaskDefinition","ecs:CreateService"],Resource:"*",Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevEcsTagOnCreate",Effect:"Allow",Action:["ecs:TagResource"],Resource:`arn:aws:ecs:*:${e}:*`,Condition:{StringEquals:{"ecs:CreateAction":["RegisterTaskDefinition","CreateService","RunTask"]}}},{Sid:"FjallDevEcsReads",Effect:"Allow",Action:["ecs:Describe*","ecs:List*"],Resource:"*"},{Sid:"FjallDevEcsDeregisterTaskDefinition",Effect:"Allow",Action:["ecs:DeregisterTaskDefinition"],Resource:`arn:aws:ecs:*:${e}:task-definition/fjall-dev-*`},{Sid:"FjallDevElbTaggedMutations",Effect:"Allow",Action:["elasticloadbalancing:ModifyRule","elasticloadbalancing:DeleteRule","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:RegisterTargets","elasticloadbalancing:DeregisterTargets"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevElbTaggedCreates",Effect:"Allow",Action:["elasticloadbalancing:CreateTargetGroup","elasticloadbalancing:CreateRule"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevElbTagOnCreate",Effect:"Allow",Action:["elasticloadbalancing:AddTags"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateRule"]}}},{Sid:"FjallDevElbReads",Effect:"Allow",Action:["elasticloadbalancing:Describe*"],Resource:"*"},{Sid:"FjallDevSsmDevTree",Effect:"Allow",Action:["ssm:GetParameter*","ssm:PutParameter","ssm:AddTagsToResource"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevLogsMutations",Effect:"Allow",Action:["logs:PutRetentionPolicy","logs:DeleteLogGroup"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevLogsTaggedCreate",Effect:"Allow",Action:["logs:CreateLogGroup","logs:TagResource"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`,Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevLogsRead",Effect:"Allow",Action:["logs:GetLogEvents","logs:DescribeLogStreams","logs:FilterLogEvents"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevLogsDescribeGroups",Effect:"Allow",Action:["logs:DescribeLogGroups"],Resource:"*"},{Sid:"FjallDevKmsViaDevAlias",Effect:"Allow",Action:["kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{"ForAnyValue:StringLike":{"kms:ResourceAliases":"alias/fjall-dev-*"}}},{Sid:"FjallDevKmsSsmSecureString",Effect:"Allow",Action:["kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"ssm.*.amazonaws.com"}}},{Sid:"FjallDevEcrAuthToken",Effect:"Allow",Action:["ecr:GetAuthorizationToken"],Resource:"*"},{Sid:"FjallDevEcrPushPull",Effect:"Allow",Action:["ecr:PutImage","ecr:InitiateLayerUpload","ecr:UploadLayerPart","ecr:CompleteLayerUpload","ecr:BatchCheckLayerAvailability","ecr:BatchGetImage","ecr:GetDownloadUrlForLayer","ecr:DescribeImages"],Resource:`arn:aws:ecr:*:${e}:repository/*`},{Sid:"FjallDevPassDevPathRoles",Effect:"Allow",Action:["iam:PassRole"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`}]}t(q,"buildDevDeployPolicyStatements");function M({accountId:e}){return[{Sid:"FjallDevProvisionerBoundedRoleWrites",Effect:"Allow",Action:["iam:CreateRole","iam:PutRolePolicy","iam:AttachRolePolicy"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`,Condition:{StringEquals:{"iam:PermissionsBoundary":m(e)}}},{Sid:"FjallDevProvisionerPathRoleOps",Effect:"Allow",Action:["iam:DeleteRole","iam:DeleteRolePolicy","iam:DetachRolePolicy","iam:ListRolePolicies","iam:TagRole"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`},{Sid:"FjallDevProvisionerListRoles",Effect:"Allow",Action:["iam:ListRoles"],Resource:"*"},{Sid:"FjallDevProvisionerDevMasterSecrets",Effect:"Allow",Action:["secretsmanager:GetSecretValue"],Resource:`arn:aws:secretsmanager:*:${e}:secret:fjall-dev-*`},{Sid:"FjallDevProvisionerKmsDecryptViaSecretsManager",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"secretsmanager.*.amazonaws.com"}}},{Sid:"FjallDevProvisionerDataApi",Effect:"Allow",Action:["rds-data:ExecuteStatement","rds-data:BatchExecuteStatement","rds-data:BeginTransaction","rds-data:CommitTransaction","rds-data:RollbackTransaction"],Resource:`arn:aws:rds:*:${e}:cluster:fjall-dev-*`},{Sid:"FjallDevProvisionerMetrics",Effect:"Allow",Action:["cloudwatch:GetMetricData"],Resource:"*"},{Sid:"FjallDevProvisionerOrphanDiscovery",Effect:"Allow",Action:["tag:GetResources"],Resource:"*"},{Sid:"FjallDevProvisionerSsmTeardown",Effect:"Allow",Action:["ssm:DeleteParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevProvisionerLogsTeardown",Effect:"Allow",Action:["logs:DeleteLogGroup"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevProvisionerTaggedTeardown",Effect:"Allow",Action:["ecs:UpdateService","ecs:StopTask","ecs:DeleteService","elasticloadbalancing:DeleteRule","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:DeregisterTargets"],Resource:[`arn:aws:ecs:*:${e}:*`,`arn:aws:elasticloadbalancing:*:${e}:*`],Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevProvisionerTeardownReads",Effect:"Allow",Action:["ecs:Describe*","elasticloadbalancing:Describe*"],Resource:"*"},{Sid:"FjallDevProvisionerImageJanitor",Effect:"Allow",Action:["ecr:ListImages","ecr:DescribeImages","ecr:BatchDeleteImage"],Resource:`arn:aws:ecr:*:${e}:repository/*`},{Sid:"FjallDevProvisionerSsmReadAll",Effect:"Allow",Action:["ssm:GetParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/*`},{Sid:"FjallDevProvisionerKmsDecryptViaSsm",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"ssm.*.amazonaws.com"}}}]}t(M,"buildDevProvisionerPolicyStatements");function _({accountId:e}){return[{Sid:"FjallDevSyncPrefixReadWrite",Effect:"Allow",Action:["s3:GetObject","s3:PutObject"],Resource:`arn:aws:s3:::fjall-dev-sync-${e}-*/*`,Condition:{StringEquals:{"aws:ResourceAccount":e}}}]}t(_,"buildDevSyncWriterPolicyStatements");function W({accountId:e}){return[{Sid:"FjallDevBoundarySsmDevRead",Effect:"Allow",Action:["ssm:GetParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevBoundaryKmsDecryptDevAlias",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{"ForAnyValue:StringLike":{"kms:ResourceAliases":"alias/fjall-dev-*"}}},{Sid:"FjallDevBoundarySyncPrefixReadWrite",Effect:"Allow",Action:["s3:GetObject","s3:PutObject"],Resource:`arn:aws:s3:::fjall-dev-sync-${e}-*/*`,Condition:{StringEquals:{"aws:ResourceAccount":e}}},{Sid:"FjallDevBoundarySlotLogs",Effect:"Allow",Action:["logs:CreateLogStream","logs:PutLogEvents"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevBoundarySyncQueue",Effect:"Allow",Action:["sqs:ReceiveMessage","sqs:DeleteMessage","sqs:GetQueueUrl"],Resource:`arn:aws:sqs:*:${e}:fjall-dev-sync-${e}-*`}]}t(W,"buildDevBoundaryStatements");export{w as DEPLOY_SERVICE_SUBJECT_NAMES,D as DEV_BOUNDARY_POLICY_NAME,C as DEV_DEPLOY_POLICY_NAME,k as DEV_PROVISIONER_POLICY_NAME,L as DEV_SYNC_WRITER_POLICY_NAME,c as FJALL_OIDC_AUDIENCE,y as FJALL_OIDC_ISSUER_DOMAIN,P as FJALL_OIDC_PLACEHOLDER_THUMBPRINT,W as buildDevBoundaryStatements,q as buildDevDeployPolicyStatements,x as buildDevDeployTrustStatements,M as buildDevProvisionerPolicyStatements,G as buildDevProvisionerTrustStatements,_ as buildDevSyncWriterPolicyStatements,O as buildDevSyncWriterTrustStatements,h as buildNarrowedDeployTrustStatements,d as deployAccountSubject,m as devBoundaryPolicyArn,F as devDeployRoleName,T as devProvisionerRoleName,R as devProvisionerSubject,j as devSyncSubject,$ as devSyncWriterRoleName,f as genericMachineSubject,E as serviceSubject};
1
+ var S=Object.defineProperty;var t=(e,a)=>S(e,"name",{value:a,configurable:!0});import{isGovernanceTier as A}from"@fjall/util";const y="fjall.io",c="sts.amazonaws.com",P="0000000000000000000000000000000000000000";function F(e){return`FjallDevDeploy${e}`}t(F,"devDeployRoleName");function T(e){return`FjallDevProvisioner${e}`}t(T,"devProvisionerRoleName");function $(e){return`FjallDevSyncWriter${e}`}t($,"devSyncWriterRoleName");const C="FjallDevDeployPolicy",k="FjallDevProvisionerPolicy",L="FjallDevSyncWriterPolicy",D="FjallDevBoundary";function m(e){return`arn:aws:iam::${e}:policy/${D}`}t(m,"devBoundaryPolicyArn");function R(e){return`org:${e}:dev-provisioner`}t(R,"devProvisionerSubject");function j(e){return`org:${e}:dev-sync`}t(j,"devSyncSubject");function u(e,a){return`org:${e}:acct:${a}`}t(u,"deployAccountSubject");function d(e){return`org:${e}:*`}t(d,"genericMachineSubject");const w=["discovery","connection","org-setup","dev-substrate-setup"];function E(e,a){return`org:${e}:${a}`}t(E,"serviceSubject");function h(e){const{fjallOrgId:a,providerArn:o,issuerDomain:r,accountTier:i,accountId:l}=e,g=e.machineTrustMode??"expanded",n={[`${r}:aud`]:c};let s;if(g==="account-scoped"){if(i===void 0||!A(i)||l===void 0)throw new Error(`machineTrustMode "account-scoped" requires a governance accountTier and an accountId (got tier: ${String(i)}, accountId ${l===void 0?"absent":"present"}) \u2014 refusing to fall back to the generic machine subject: a silent fallback would re-widen the trust the \xA74.4a Step-3 contract removes`);s=[u(a,l)]}else l!==void 0?s=[d(a),u(a,l)]:s=d(a);return[{Sid:"FjallMachineSubject",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...n,[`${r}:sub`]:s}}},{Sid:"FjallUserSubjects",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:n,StringLike:{[`${r}:sub`]:`org:${a}:user:*`}}},{Sid:"FjallServiceSubjects",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...n,[`${r}:sub`]:w.map(v=>E(a,v))}}}]}t(h,"buildNarrowedDeployTrustStatements");function x(e){const{fjallOrgId:a,providerArn:o,issuerDomain:r,accountId:i}=e;return[{Sid:"FjallDevSubjectsThisAccount",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${r}:aud`]:c},StringLike:{[`${r}:sub`]:`org:${a}:dev:${i}:*`}}}]}t(x,"buildDevDeployTrustStatements");function f(e){const{providerArn:a,issuerDomain:o,sid:r,subject:i}=e;return[{Sid:r,Effect:"Allow",Principal:{Federated:a},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${o}:aud`]:c,[`${o}:sub`]:i}}}]}t(f,"buildServiceSubjectTrustStatements");function G(e){return f({...e,sid:"FjallDevProvisionerSubject",subject:R(e.fjallOrgId)})}t(G,"buildDevProvisionerTrustStatements");function O(e){return f({...e,sid:"FjallDevSyncSubject",subject:j(e.fjallOrgId)})}t(O,"buildDevSyncWriterTrustStatements");function q({accountId:e}){return[{Sid:"FjallDevEcsTaggedMutations",Effect:"Allow",Action:["ecs:UpdateService","ecs:DeleteService","ecs:RunTask","ecs:StopTask"],Resource:`arn:aws:ecs:*:${e}:*`,Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevEcsTaggedCreates",Effect:"Allow",Action:["ecs:RegisterTaskDefinition","ecs:CreateService"],Resource:"*",Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevEcsTagOnCreate",Effect:"Allow",Action:["ecs:TagResource"],Resource:`arn:aws:ecs:*:${e}:*`,Condition:{StringEquals:{"ecs:CreateAction":["RegisterTaskDefinition","CreateService","RunTask"]}}},{Sid:"FjallDevEcsReads",Effect:"Allow",Action:["ecs:Describe*","ecs:List*"],Resource:"*"},{Sid:"FjallDevEcsDeregisterTaskDefinition",Effect:"Allow",Action:["ecs:DeregisterTaskDefinition"],Resource:`arn:aws:ecs:*:${e}:task-definition/fjall-dev-*`},{Sid:"FjallDevElbTaggedMutations",Effect:"Allow",Action:["elasticloadbalancing:ModifyRule","elasticloadbalancing:DeleteRule","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:RegisterTargets","elasticloadbalancing:DeregisterTargets"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevElbTaggedCreates",Effect:"Allow",Action:["elasticloadbalancing:CreateTargetGroup","elasticloadbalancing:CreateRule"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevElbTagOnCreate",Effect:"Allow",Action:["elasticloadbalancing:AddTags"],Resource:`arn:aws:elasticloadbalancing:*:${e}:*`,Condition:{StringEquals:{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateRule"]}}},{Sid:"FjallDevElbReads",Effect:"Allow",Action:["elasticloadbalancing:Describe*"],Resource:"*"},{Sid:"FjallDevSsmDevTree",Effect:"Allow",Action:["ssm:GetParameter*","ssm:PutParameter","ssm:AddTagsToResource"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevLogsMutations",Effect:"Allow",Action:["logs:PutRetentionPolicy","logs:DeleteLogGroup"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevLogsTaggedCreate",Effect:"Allow",Action:["logs:CreateLogGroup","logs:TagResource"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`,Condition:{StringEquals:{"aws:RequestTag/fjall:dev":"true"}}},{Sid:"FjallDevLogsRead",Effect:"Allow",Action:["logs:GetLogEvents","logs:DescribeLogStreams","logs:FilterLogEvents"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevLogsDescribeGroups",Effect:"Allow",Action:["logs:DescribeLogGroups"],Resource:"*"},{Sid:"FjallDevKmsViaDevAlias",Effect:"Allow",Action:["kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{"ForAnyValue:StringLike":{"kms:ResourceAliases":"alias/fjall-dev-*"}}},{Sid:"FjallDevKmsSsmSecureString",Effect:"Allow",Action:["kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"ssm.*.amazonaws.com"}}},{Sid:"FjallDevEcrAuthToken",Effect:"Allow",Action:["ecr:GetAuthorizationToken"],Resource:"*"},{Sid:"FjallDevEcrPushPull",Effect:"Allow",Action:["ecr:PutImage","ecr:InitiateLayerUpload","ecr:UploadLayerPart","ecr:CompleteLayerUpload","ecr:BatchCheckLayerAvailability","ecr:BatchGetImage","ecr:GetDownloadUrlForLayer","ecr:DescribeImages"],Resource:`arn:aws:ecr:*:${e}:repository/*`},{Sid:"FjallDevPassDevPathRoles",Effect:"Allow",Action:["iam:PassRole"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`}]}t(q,"buildDevDeployPolicyStatements");function M({accountId:e}){return[{Sid:"FjallDevProvisionerBoundedRoleWrites",Effect:"Allow",Action:["iam:CreateRole","iam:PutRolePolicy","iam:AttachRolePolicy"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`,Condition:{StringEquals:{"iam:PermissionsBoundary":m(e)}}},{Sid:"FjallDevProvisionerPathRoleOps",Effect:"Allow",Action:["iam:DeleteRole","iam:DeleteRolePolicy","iam:DetachRolePolicy","iam:ListRolePolicies","iam:TagRole"],Resource:`arn:aws:iam::${e}:role/fjall/dev/*`},{Sid:"FjallDevProvisionerListRoles",Effect:"Allow",Action:["iam:ListRoles"],Resource:"*"},{Sid:"FjallDevProvisionerDevMasterSecrets",Effect:"Allow",Action:["secretsmanager:GetSecretValue"],Resource:`arn:aws:secretsmanager:*:${e}:secret:fjall-dev-*`},{Sid:"FjallDevProvisionerKmsDecryptViaSecretsManager",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"secretsmanager.*.amazonaws.com"}}},{Sid:"FjallDevProvisionerDataApi",Effect:"Allow",Action:["rds-data:ExecuteStatement","rds-data:BatchExecuteStatement","rds-data:BeginTransaction","rds-data:CommitTransaction","rds-data:RollbackTransaction"],Resource:`arn:aws:rds:*:${e}:cluster:fjall-dev-*`},{Sid:"FjallDevProvisionerMetrics",Effect:"Allow",Action:["cloudwatch:GetMetricData"],Resource:"*"},{Sid:"FjallDevProvisionerOrphanDiscovery",Effect:"Allow",Action:["tag:GetResources"],Resource:"*"},{Sid:"FjallDevProvisionerSsmTeardown",Effect:"Allow",Action:["ssm:DeleteParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevProvisionerLogsTeardown",Effect:"Allow",Action:["logs:DeleteLogGroup"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevProvisionerTaggedTeardown",Effect:"Allow",Action:["ecs:UpdateService","ecs:StopTask","ecs:DeleteService","elasticloadbalancing:DeleteRule","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:DeregisterTargets"],Resource:[`arn:aws:ecs:*:${e}:*`,`arn:aws:elasticloadbalancing:*:${e}:*`],Condition:{StringEquals:{"aws:ResourceTag/fjall:dev":"true"}}},{Sid:"FjallDevProvisionerTeardownReads",Effect:"Allow",Action:["ecs:Describe*","elasticloadbalancing:Describe*"],Resource:"*"},{Sid:"FjallDevProvisionerImageJanitor",Effect:"Allow",Action:["ecr:ListImages","ecr:DescribeImages","ecr:BatchDeleteImage"],Resource:`arn:aws:ecr:*:${e}:repository/*`},{Sid:"FjallDevProvisionerSsmReadAll",Effect:"Allow",Action:["ssm:GetParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/*`},{Sid:"FjallDevProvisionerKmsDecryptViaSsm",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{StringLike:{"kms:ViaService":"ssm.*.amazonaws.com"}}}]}t(M,"buildDevProvisionerPolicyStatements");function _({accountId:e}){return[{Sid:"FjallDevSyncPrefixReadWrite",Effect:"Allow",Action:["s3:GetObject","s3:PutObject"],Resource:`arn:aws:s3:::fjall-dev-sync-${e}-*/*`,Condition:{StringEquals:{"aws:ResourceAccount":e}}}]}t(_,"buildDevSyncWriterPolicyStatements");function W({accountId:e}){return[{Sid:"FjallDevBoundarySsmDevRead",Effect:"Allow",Action:["ssm:GetParameter*"],Resource:`arn:aws:ssm:*:${e}:parameter/fjall/dev/*`},{Sid:"FjallDevBoundaryKmsDecryptDevAlias",Effect:"Allow",Action:["kms:Decrypt"],Resource:`arn:aws:kms:*:${e}:key/*`,Condition:{"ForAnyValue:StringLike":{"kms:ResourceAliases":"alias/fjall-dev-*"}}},{Sid:"FjallDevBoundarySyncPrefixReadWrite",Effect:"Allow",Action:["s3:GetObject","s3:PutObject"],Resource:`arn:aws:s3:::fjall-dev-sync-${e}-*/*`,Condition:{StringEquals:{"aws:ResourceAccount":e}}},{Sid:"FjallDevBoundarySlotLogs",Effect:"Allow",Action:["logs:CreateLogStream","logs:PutLogEvents"],Resource:`arn:aws:logs:*:${e}:log-group:/fjall/dev/*`},{Sid:"FjallDevBoundarySyncQueue",Effect:"Allow",Action:["sqs:ReceiveMessage","sqs:DeleteMessage","sqs:GetQueueUrl"],Resource:`arn:aws:sqs:*:${e}:fjall-dev-sync-${e}-*`}]}t(W,"buildDevBoundaryStatements");export{w as DEPLOY_SERVICE_SUBJECT_NAMES,D as DEV_BOUNDARY_POLICY_NAME,C as DEV_DEPLOY_POLICY_NAME,k as DEV_PROVISIONER_POLICY_NAME,L as DEV_SYNC_WRITER_POLICY_NAME,c as FJALL_OIDC_AUDIENCE,y as FJALL_OIDC_ISSUER_DOMAIN,P as FJALL_OIDC_PLACEHOLDER_THUMBPRINT,W as buildDevBoundaryStatements,q as buildDevDeployPolicyStatements,x as buildDevDeployTrustStatements,M as buildDevProvisionerPolicyStatements,G as buildDevProvisionerTrustStatements,_ as buildDevSyncWriterPolicyStatements,O as buildDevSyncWriterTrustStatements,h as buildNarrowedDeployTrustStatements,u as deployAccountSubject,m as devBoundaryPolicyArn,F as devDeployRoleName,T as devProvisionerRoleName,R as devProvisionerSubject,j as devSyncSubject,$ as devSyncWriterRoleName,d as genericMachineSubject,E as serviceSubject};
@@ -1 +1 @@
1
- var n=Object.defineProperty;var c=(t,e)=>n(t,"name",{value:e,configurable:!0});const i=new Set(["t4g","c6g","c6gd","c6gn","c7g","c7gd","c7gn","r6g","r6gd","r7g","r7gd","m6g","m6gd","m7g","m7gd","a1","x2gd","im4gn","is4gen","i4g","hpc7g"]);function g(t){const e=t.split(".")[0]??"";return i.has(e)?"ARM":"STANDARD"}c(g,"getArchitectureForInstanceType");function a(t,e){const r=g(t);return r!==e?{valid:!1,message:`Instance type '${t}' requires ${r} architecture, but '${e}' AMI was specified. Use a ${r==="ARM"?"Graviton instance (t4g, c6g, r6g, m6g, etc.)":"Intel/AMD instance (t3, c5, r5, m5, etc.)"} instead.`}:{valid:!0}}c(a,"validateArchitectureMatch");function o(t,e){return g(t)===e}c(o,"isArchitectureCompatible");export{g as getArchitectureForInstanceType,o as isArchitectureCompatible,a as validateArchitectureMatch};
1
+ var n=Object.defineProperty;var g=(t,e)=>n(t,"name",{value:e,configurable:!0});const i=new Set(["t4g","c6g","c6gd","c6gn","c7g","c7gd","c7gn","r6g","r6gd","r7g","r7gd","r8g","r8gd","c8g","c8gd","c8gn","m6g","m6gd","m7g","m7gd","m8g","m8gd","x8g","i8g","a1","x2gd","im4gn","is4gen","i4g","hpc7g"]);function r(t){const e=t.split(".")[0]??"";return i.has(e)?"ARM":"STANDARD"}g(r,"getArchitectureForInstanceType");function a(t,e){const c=r(t);return c!==e?{valid:!1,message:`Instance type '${t}' requires ${c} architecture, but '${e}' AMI was specified. Use a ${c==="ARM"?"Graviton instance (t4g, c6g, r6g, m6g, etc.)":"Intel/AMD instance (t3, c5, r5, m5, etc.)"} instead.`}:{valid:!0}}g(a,"validateArchitectureMatch");function d(t,e){return r(t)===e}g(d,"isArchitectureCompatible");export{r as getArchitectureForInstanceType,d as isArchitectureCompatible,a as validateArchitectureMatch};
@@ -1 +1 @@
1
- export declare const GENERATOR_VERSION = "4.4.0";
1
+ export declare const GENERATOR_VERSION = "5.0.0";
@@ -1 +1 @@
1
- const E="4.4.0";export{E as GENERATOR_VERSION};
1
+ const E="5.0.0";export{E as GENERATOR_VERSION};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/generator",
3
- "version": "4.4.0",
3
+ "version": "5.0.0",
4
4
  "description": "Pure infrastructure generation logic for Fjall",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "scripts": {
33
33
  "clean": "rm -rf ./dist ./sourcemaps",
34
- "build": "npm run clean && tsc && node ../scripts/minify-dist.mjs dist",
34
+ "build": "npm run clean && tsc && node ../scripts/minify-dist.mjs dist && node ../scripts/stamp-build.mjs",
35
35
  "prepack": "node ../scripts/check-dist-freshness.mjs",
36
36
  "watch": "npm run build && tsc --watch --preserveWatchOutput",
37
37
  "watch:only": "tsc --watch --preserveWatchOutput",
@@ -48,21 +48,21 @@
48
48
  },
49
49
  "license": "SEE LICENSE IN LICENSE",
50
50
  "dependencies": {
51
- "@fjall/util": "^4.4.0",
51
+ "@fjall/util": "^5.0.0",
52
52
  "ast-types": "^0.16.1",
53
- "recast": "^0.23.11",
53
+ "recast": "^0.23.12",
54
54
  "ts-morph": "^28.0.0",
55
55
  "typescript": "^6.0.3",
56
56
  "zod": "^4.4.3"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@eslint/js": "^10.0.1",
60
- "@types/node": "^26.0.0",
61
- "@vitest/coverage-v8": "^4.1.5",
62
- "eslint": "^10.2.1",
63
- "fast-check": "^4.7.0",
64
- "typescript-eslint": "^8.59.1",
65
- "vitest": "^4.1.5"
60
+ "@types/node": "^26.1.2",
61
+ "@vitest/coverage-v8": "^4.1.10",
62
+ "eslint": "^10.8.0",
63
+ "fast-check": "^4.9.0",
64
+ "typescript-eslint": "^8.65.0",
65
+ "vitest": "^4.1.10"
66
66
  },
67
- "gitHead": "c700128600ab453fa63ce28b3effe8965373be43"
67
+ "gitHead": "78dded6f582368076e8b5f351399219e5a954659"
68
68
  }