@fjall/generator 4.3.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.
- package/dist/.build-source-hash +156 -0
- package/dist/.minified +1 -1
- package/dist/src/dns/domainFileGenerator.js +1 -1
- package/dist/src/schemas/devRolePolicies.d.ts +65 -13
- package/dist/src/schemas/devRolePolicies.js +1 -1
- package/dist/src/schemas/instanceTypeArchitecture.js +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +11 -11
|
@@ -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-
|
|
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.
|
|
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
|
|
@@ -113,6 +113,30 @@ export declare function devSyncSubject(fjallOrgId: string): string;
|
|
|
113
113
|
* FjallMachineSubject statement, never by the user or service statements.
|
|
114
114
|
*/
|
|
115
115
|
export declare function deployAccountSubject(fjallOrgId: string, awsAccountId: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Generic machine subject — the shared literal every non-flipped machine mint
|
|
118
|
+
* issues and the pre-§4.4a trust accepts. Same cross-package coupled-value
|
|
119
|
+
* contract as {@link deployAccountSubject}: the webapp mint, the trust builder
|
|
120
|
+
* below, and the dev-gate trust probe must all route through THIS helper
|
|
121
|
+
* rather than re-deriving the string.
|
|
122
|
+
*/
|
|
123
|
+
export declare function genericMachineSubject(fjallOrgId: string): string;
|
|
124
|
+
/**
|
|
125
|
+
* The service subjects the FjallDeploy trust accepts (see
|
|
126
|
+
* {@link buildNarrowedDeployTrustStatements} for why `dev-substrate-setup`
|
|
127
|
+
* rides the admin role). Single source for the vocabulary — consumers deriving
|
|
128
|
+
* runtime accept-sets or minting these subjects must use this tuple, never a
|
|
129
|
+
* re-listed copy.
|
|
130
|
+
*/
|
|
131
|
+
export declare const DEPLOY_SERVICE_SUBJECT_NAMES: readonly ["discovery", "connection", "org-setup", "dev-substrate-setup"];
|
|
132
|
+
export type DeployServiceSubjectName = (typeof DEPLOY_SERVICE_SUBJECT_NAMES)[number];
|
|
133
|
+
/**
|
|
134
|
+
* Server-minted service subject for the FjallDeploy-role service family.
|
|
135
|
+
* Coupled cross-package value ({@link deployAccountSubject} contract): the
|
|
136
|
+
* webapp's discovery credential provider and job handlers mint these exact
|
|
137
|
+
* strings.
|
|
138
|
+
*/
|
|
139
|
+
export declare function serviceSubject(fjallOrgId: string, service: DeployServiceSubjectName): string;
|
|
116
140
|
/**
|
|
117
141
|
* One statement of an OIDC federated trust (assume-role policy) document.
|
|
118
142
|
* Distinct from `BoundaryStatement` because trust statements carry a
|
|
@@ -134,6 +158,21 @@ export interface OidcTrustParams {
|
|
|
134
158
|
/** Issuer domain without scheme, e.g. `fjall.io`. */
|
|
135
159
|
issuerDomain: string;
|
|
136
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* §4.4a machine-trust rendering mode for the FjallDeploy role.
|
|
163
|
+
*
|
|
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).
|
|
168
|
+
* - `"account-scoped"` (Step-3 contract): the machine statement accepts ONLY
|
|
169
|
+
* the account-scoped literal. Opt-in per deployment — NEVER the shared
|
|
170
|
+
* default: issuance for most orgs still mints the generic subject, so a
|
|
171
|
+
* default contract would lock their governance CI out at STS. Set it only
|
|
172
|
+
* where per-account issuance is known-flipped (Fjall's own governance
|
|
173
|
+
* accounts today; §4.4b's probe gate machine-sets it later).
|
|
174
|
+
*/
|
|
175
|
+
export type MachineTrustMode = "expanded" | "account-scoped";
|
|
137
176
|
/**
|
|
138
177
|
* Params for the narrowed FjallDeploy trust, with the optional §4.4a
|
|
139
178
|
* governance-expand fields. A superset of {@link OidcTrustParams}: existing
|
|
@@ -142,19 +181,28 @@ export interface OidcTrustParams {
|
|
|
142
181
|
*/
|
|
143
182
|
export interface NarrowedDeployTrustParams extends OidcTrustParams {
|
|
144
183
|
/**
|
|
145
|
-
* Account TIER (never the workload STAGE).
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* 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).
|
|
150
188
|
*/
|
|
151
189
|
accountTier?: AccountTier;
|
|
152
190
|
/**
|
|
153
191
|
* 12-digit AWS account id of THIS account — the `{awsAccountId}` in the
|
|
154
|
-
* account-scoped machine subject ({@link deployAccountSubject}).
|
|
155
|
-
*
|
|
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).
|
|
156
196
|
*/
|
|
157
197
|
accountId?: string;
|
|
198
|
+
/**
|
|
199
|
+
* {@link MachineTrustMode}. Absent ⇒ `"expanded"`. `"account-scoped"`
|
|
200
|
+
* REQUIRES a governance `accountTier` and an `accountId` — anything else
|
|
201
|
+
* throws at synth rather than falling back to the generic literal (the
|
|
202
|
+
* expand-mode fail-safe inverts under contract: a silent generic fallback
|
|
203
|
+
* would re-widen the exact trust Step 3 exists to remove).
|
|
204
|
+
*/
|
|
205
|
+
machineTrustMode?: MachineTrustMode;
|
|
158
206
|
}
|
|
159
207
|
/**
|
|
160
208
|
* G4 narrowed trust for `FjallDeploy{orgId}` — replaces the single bare
|
|
@@ -170,16 +218,20 @@ export interface NarrowedDeployTrustParams extends OidcTrustParams {
|
|
|
170
218
|
* scoped dev-tier roles AccessDeny, so it runs under the admin role like
|
|
171
219
|
* `org-setup` (design "Deploy-role boundary" VERDICT-2).
|
|
172
220
|
*
|
|
173
|
-
* §4.4a
|
|
174
|
-
* (`organisation`/`platform`) AND `accountId` is present, the machine-subject
|
|
221
|
+
* §4.4a/§4.4b expand: when `accountId` is present the machine-subject
|
|
175
222
|
* statement additionally accepts the account-scoped literal
|
|
176
223
|
* `org:{orgId}:acct:{accountId}` ({@link deployAccountSubject}) — a SUPERSET of
|
|
177
224
|
* the prior trust (the generic `org:{orgId}:*` is retained), so this step never
|
|
178
225
|
* narrows on its own. Issuance flips to the account-scoped subject only after
|
|
179
|
-
* this expand is LIVE (design §4.2 invariant)
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* 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).
|
|
230
|
+
*
|
|
231
|
+
* §4.4a Step-3 contract: `machineTrustMode: "account-scoped"` renders the
|
|
232
|
+
* account-scoped literal ONLY (no generic member). Opt-in per deployment —
|
|
233
|
+
* see {@link MachineTrustMode} for why the shared default stays `"expanded"`
|
|
234
|
+
* and why misuse throws instead of falling back.
|
|
183
235
|
*/
|
|
184
236
|
export declare function buildNarrowedDeployTrustStatements(params: NarrowedDeployTrustParams): OidcTrustStatement[];
|
|
185
237
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var g=Object.defineProperty;var a=(e,t)=>g(e,"name",{value:t,configurable:!0});import{isGovernanceTier as f}from"@fjall/util";const w="fjall.io",i="sts.amazonaws.com",E="0000000000000000000000000000000000000000";function p(e){return`FjallDevDeploy${e}`}a(p,"devDeployRoleName");function y(e){return`FjallDevProvisioner${e}`}a(y,"devProvisionerRoleName");function b(e){return`FjallDevSyncWriter${e}`}a(b,"devSyncWriterRoleName");const P="FjallDevDeployPolicy",F="FjallDevProvisionerPolicy",T="FjallDevSyncWriterPolicy",v="FjallDevBoundary";function S(e){return`arn:aws:iam::${e}:policy/${v}`}a(S,"devBoundaryPolicyArn");function A(e){return`org:${e}:dev-provisioner`}a(A,"devProvisionerSubject");function D(e){return`org:${e}:dev-sync`}a(D,"devSyncSubject");function m(e,t){return`org:${e}:acct:${t}`}a(m,"deployAccountSubject");function $(e){const{fjallOrgId:t,providerArn:o,issuerDomain:r,accountTier:l,accountId:n}=e,s={[`${r}:aud`]:i},c=`org:${t}:*`,d=l!==void 0&&f(l)&&n!==void 0?[c,m(t,n)]:c;return[{Sid:"FjallMachineSubject",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...s,[`${r}:sub`]:d}}},{Sid:"FjallUserSubjects",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:s,StringLike:{[`${r}:sub`]:`org:${t}:user:*`}}},{Sid:"FjallServiceSubjects",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{...s,[`${r}:sub`]:[`org:${t}:discovery`,`org:${t}:connection`,`org:${t}:org-setup`,`org:${t}:dev-substrate-setup`]}}}]}a($,"buildNarrowedDeployTrustStatements");function C(e){const{fjallOrgId:t,providerArn:o,issuerDomain:r,accountId:l}=e;return[{Sid:"FjallDevSubjectsThisAccount",Effect:"Allow",Principal:{Federated:o},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${r}:aud`]:i},StringLike:{[`${r}:sub`]:`org:${t}:dev:${l}:*`}}}]}a(C,"buildDevDeployTrustStatements");function u(e){const{providerArn:t,issuerDomain:o,sid:r,subject:l}=e;return[{Sid:r,Effect:"Allow",Principal:{Federated:t},Action:"sts:AssumeRoleWithWebIdentity",Condition:{StringEquals:{[`${o}:aud`]:i,[`${o}:sub`]:l}}}]}a(u,"buildServiceSubjectTrustStatements");function L(e){return u({...e,sid:"FjallDevProvisionerSubject",subject:A(e.fjallOrgId)})}a(L,"buildDevProvisionerTrustStatements");function k(e){return u({...e,sid:"FjallDevSyncSubject",subject:D(e.fjallOrgId)})}a(k,"buildDevSyncWriterTrustStatements");function G({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/*`}]}a(G,"buildDevDeployPolicyStatements");function x({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":S(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"}}}]}a(x,"buildDevProvisionerPolicyStatements");function O({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}}}]}a(O,"buildDevSyncWriterPolicyStatements");function h({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}-*`}]}a(h,"buildDevBoundaryStatements");export{v as DEV_BOUNDARY_POLICY_NAME,P as DEV_DEPLOY_POLICY_NAME,F as DEV_PROVISIONER_POLICY_NAME,T as DEV_SYNC_WRITER_POLICY_NAME,i as FJALL_OIDC_AUDIENCE,w as FJALL_OIDC_ISSUER_DOMAIN,E as FJALL_OIDC_PLACEHOLDER_THUMBPRINT,h as buildDevBoundaryStatements,G as buildDevDeployPolicyStatements,C as buildDevDeployTrustStatements,x as buildDevProvisionerPolicyStatements,L as buildDevProvisionerTrustStatements,O as buildDevSyncWriterPolicyStatements,k as buildDevSyncWriterTrustStatements,$ as buildNarrowedDeployTrustStatements,m as deployAccountSubject,S as devBoundaryPolicyArn,p as devDeployRoleName,y as devProvisionerRoleName,A as devProvisionerSubject,D as devSyncSubject,b as devSyncWriterRoleName};
|
|
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
|
|
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};
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const GENERATOR_VERSION = "
|
|
1
|
+
export declare const GENERATOR_VERSION = "5.0.0";
|
package/dist/src/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const E="
|
|
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": "
|
|
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": "^
|
|
51
|
+
"@fjall/util": "^5.0.0",
|
|
52
52
|
"ast-types": "^0.16.1",
|
|
53
|
-
"recast": "^0.23.
|
|
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.
|
|
61
|
-
"@vitest/coverage-v8": "^4.1.
|
|
62
|
-
"eslint": "^10.
|
|
63
|
-
"fast-check": "^4.
|
|
64
|
-
"typescript-eslint": "^8.
|
|
65
|
-
"vitest": "^4.1.
|
|
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": "
|
|
67
|
+
"gitHead": "78dded6f582368076e8b5f351399219e5a954659"
|
|
68
68
|
}
|