@cloud-copilot/iam-simulate 0.1.148 → 0.1.149
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/cjs/condition/condition.d.ts.map +1 -1
- package/dist/cjs/condition/condition.js +213 -19
- package/dist/cjs/condition/condition.js.map +1 -1
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.js +153 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.js.map +1 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts +4 -4
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/simulation_engine/simulationEngine.js +5 -5
- package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -1
- package/dist/cjs/simulation_engine/simulationOptions.d.ts +16 -1
- package/dist/cjs/simulation_engine/simulationOptions.d.ts.map +1 -1
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +2 -2
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -1
- package/dist/esm/condition/condition.d.ts.map +1 -1
- package/dist/esm/condition/condition.js +213 -19
- package/dist/esm/condition/condition.js.map +1 -1
- package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.js +149 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.js.map +1 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts +4 -4
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -1
- package/dist/esm/core_engine/CoreSimulatorEngine.js +1 -1
- package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/simulation_engine/simulationEngine.js +5 -5
- package/dist/esm/simulation_engine/simulationEngine.js.map +1 -1
- package/dist/esm/simulation_engine/simulationOptions.d.ts +16 -1
- package/dist/esm/simulation_engine/simulationOptions.d.ts.map +1 -1
- package/dist/esm/simulation_engine/simulationOptions.js +1 -0
- package/dist/esm/simulation_engine/simulationOptions.js.map +1 -1
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js +2 -2
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/context_keys/strictContextKeys.d.ts +0 -30
- package/dist/cjs/context_keys/strictContextKeys.d.ts.map +0 -1
- package/dist/cjs/context_keys/strictContextKeys.js +0 -62
- package/dist/cjs/context_keys/strictContextKeys.js.map +0 -1
- package/dist/esm/context_keys/strictContextKeys.d.ts +0 -30
- package/dist/esm/context_keys/strictContextKeys.d.ts.map +0 -1
- package/dist/esm/context_keys/strictContextKeys.js +0 -57
- package/dist/esm/context_keys/strictContextKeys.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/condition/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AA8BvD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/condition/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AA8BvD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,CAAA;AA8FtD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,OAAO,GAAG,MAAM,EAC/B,oBAAoB,EAAE,oBAAoB,GACzC;IACD,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAA;CAChC,CA2DA;AAsBD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,oBAAoB,GACzC,gBAAgB,CAElB"}
|
|
@@ -69,37 +69,47 @@ for (const operator of allOperators) {
|
|
|
69
69
|
* @returns Match if all conditions match, NoMatch if any do not. Also returns all the details of the evaluation
|
|
70
70
|
*/
|
|
71
71
|
function requestMatchesConditions(request, conditions, statementType, simulationParameters) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
const normalizedStatementType = statementType.toLowerCase();
|
|
73
|
+
const results = conditions.map((condition) => {
|
|
74
|
+
const evaluation = evaluateSingleCondition(request, condition, simulationParameters);
|
|
75
|
+
return {
|
|
76
|
+
condition,
|
|
77
|
+
explain: evaluation.explain,
|
|
78
|
+
knowledge: evaluation.knowledge
|
|
79
|
+
};
|
|
80
|
+
});
|
|
76
81
|
const isIgnored = (c) => {
|
|
77
82
|
if (simulationParameters.simulationMode !== 'Discovery') {
|
|
78
83
|
return false;
|
|
79
84
|
}
|
|
80
|
-
if (
|
|
85
|
+
if (c.knowledge.conditionResult !== 'known') {
|
|
86
|
+
if (normalizedStatementType === 'allow') {
|
|
87
|
+
return !c.explain.matches;
|
|
88
|
+
}
|
|
89
|
+
if (normalizedStatementType === 'deny') {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const constraint = simulationParameters.discoveryContextKeyConstraints.constraintFor(c.condition.conditionKey());
|
|
94
|
+
if (constraint.explicitlyConfigured) {
|
|
81
95
|
return false;
|
|
82
96
|
}
|
|
83
97
|
// In Allows we ignore conditions that do not match
|
|
84
|
-
if (
|
|
98
|
+
if (normalizedStatementType === 'allow') {
|
|
85
99
|
return !c.explain.matches;
|
|
86
100
|
}
|
|
87
101
|
// In Denies we ignore conditions that do match
|
|
88
|
-
if (
|
|
102
|
+
if (normalizedStatementType === 'deny') {
|
|
89
103
|
return c.explain.matches;
|
|
90
104
|
}
|
|
91
105
|
throw new Error(`Unexpected condition explain result in discovery mode, statementType: ${statementType}`);
|
|
92
106
|
};
|
|
107
|
+
const ignored = results.filter((r) => isIgnored(r));
|
|
93
108
|
const nonMatch = results.filter((r) => !isIgnored(r)).some((result) => !result.explain.matches);
|
|
94
|
-
const
|
|
95
|
-
.
|
|
96
|
-
.some((result) => result.explain.matches);
|
|
109
|
+
const ignoredPossibleDeny = normalizedStatementType === 'deny' &&
|
|
110
|
+
ignored.some((result) => result.knowledge.conditionResult !== 'known' || result.explain.matches);
|
|
97
111
|
return {
|
|
98
|
-
|
|
99
|
-
//If there are matches that are ignored, it is also a NoMatch,
|
|
100
|
-
// for instance in a Deny statement it may match a condition that is ignored,
|
|
101
|
-
// but we still want a no match so we can show under what conditions it would be allowed
|
|
102
|
-
matches: nonMatch || ignoredMatches ? 'NoMatch' : 'Match',
|
|
112
|
+
matches: nonMatch || ignoredPossibleDeny ? 'NoMatch' : 'Match',
|
|
103
113
|
details: {
|
|
104
114
|
conditions: results.length == 0 ? undefined : results.map((r) => r.explain)
|
|
105
115
|
},
|
|
@@ -130,27 +140,211 @@ function ignoredConditions(conditions, isIgnored) {
|
|
|
130
140
|
* @returns the result of evaluating the condition
|
|
131
141
|
*/
|
|
132
142
|
function singleConditionMatchesRequest(request, condition, simulationParameters) {
|
|
143
|
+
return evaluateSingleCondition(request, condition, simulationParameters).explain;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Evaluates a single condition and records internal Discovery knowledge.
|
|
147
|
+
*
|
|
148
|
+
* @param request the request to test
|
|
149
|
+
* @param condition the condition to evaluate
|
|
150
|
+
* @param simulationParameters the simulation mode and Discovery constraints
|
|
151
|
+
* @returns the condition explain output plus internal Discovery knowledge
|
|
152
|
+
*/
|
|
153
|
+
function evaluateSingleCondition(request, condition, simulationParameters) {
|
|
133
154
|
const key = condition.conditionKey();
|
|
134
155
|
const baseOperation = baseOperations[condition.operation().baseOperator().toLowerCase()];
|
|
135
156
|
const keyExists = request.contextKeyExists(key);
|
|
136
157
|
const keyValue = keyExists ? request.getContextKeyValue(key) : undefined;
|
|
158
|
+
const contextKeyKnowledge = discoveryKnowledgeForConditionKey(simulationParameters, condition.conditionKey(), keyExists);
|
|
137
159
|
if (condition.operation().value().toLowerCase() == 'null' ||
|
|
138
160
|
condition.operation().baseOperator()?.toLowerCase() == 'null') {
|
|
139
|
-
return
|
|
161
|
+
return {
|
|
162
|
+
explain: testNull(condition, keyExists),
|
|
163
|
+
knowledge: conditionKnowledgeForPresenceOnly(contextKeyKnowledge)
|
|
164
|
+
};
|
|
140
165
|
}
|
|
141
166
|
if (condition.operation().setOperator()) {
|
|
142
167
|
const setOperator = condition.operation().setOperator();
|
|
143
168
|
if (setOperator === 'ForAnyValue') {
|
|
144
|
-
return
|
|
169
|
+
return {
|
|
170
|
+
explain: forAnyValueMatch(request, condition, keyValue, baseOperation),
|
|
171
|
+
knowledge: conditionKnowledgeForValueEvaluation(request, condition, simulationParameters, contextKeyKnowledge)
|
|
172
|
+
};
|
|
145
173
|
}
|
|
146
174
|
else if (setOperator === 'ForAllValues') {
|
|
147
|
-
return
|
|
175
|
+
return {
|
|
176
|
+
explain: forAllValuesMatch(request, condition, keyValue, baseOperation),
|
|
177
|
+
knowledge: conditionKnowledgeForValueEvaluation(request, condition, simulationParameters, contextKeyKnowledge)
|
|
178
|
+
};
|
|
148
179
|
}
|
|
149
180
|
else {
|
|
150
181
|
throw new Error(`Unknown set operator: ${setOperator}`);
|
|
151
182
|
}
|
|
152
183
|
}
|
|
153
|
-
return
|
|
184
|
+
return {
|
|
185
|
+
explain: singleValueMatch(request, condition, baseOperation, keyValue),
|
|
186
|
+
knowledge: conditionKnowledgeForValueEvaluation(request, condition, simulationParameters, contextKeyKnowledge)
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Determines what request context-key facts are known for a condition key.
|
|
191
|
+
*
|
|
192
|
+
* This function intentionally does not know about operators such as `Null`,
|
|
193
|
+
* `IfExists`, `ForAnyValue`, or `ForAllValues`. It only answers whether the
|
|
194
|
+
* request context definitively establishes key presence and value. Operator
|
|
195
|
+
* evaluators decide how those facts affect the condition result.
|
|
196
|
+
*
|
|
197
|
+
* @param simulationParameters the simulation mode and Discovery constraints
|
|
198
|
+
* @param key the condition context key to classify
|
|
199
|
+
* @param keyExists whether the condition key exists in the request context
|
|
200
|
+
* @returns Discovery knowledge about the condition's context key
|
|
201
|
+
*/
|
|
202
|
+
function discoveryKnowledgeForConditionKey(simulationParameters, key, keyExists) {
|
|
203
|
+
if (simulationParameters.simulationMode !== 'Discovery') {
|
|
204
|
+
return requestContextKeyKnowledge(keyExists);
|
|
205
|
+
}
|
|
206
|
+
const constraint = simulationParameters.discoveryContextKeyConstraints.constraintFor(key);
|
|
207
|
+
if (!constraint.explicitlyConfigured) {
|
|
208
|
+
return requestContextKeyKnowledge(keyExists);
|
|
209
|
+
}
|
|
210
|
+
const contextKeyPresence = constraint.presenceIsKnown
|
|
211
|
+
? 'known'
|
|
212
|
+
: 'unknown';
|
|
213
|
+
return {
|
|
214
|
+
contextKeyPresence,
|
|
215
|
+
contextKeyValue: contextValueKnowledge(keyExists, contextKeyPresence, constraint.valueIsKnown)
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Derives condition-result knowledge for operators that only depend on key presence.
|
|
220
|
+
*
|
|
221
|
+
* `Null` conditions are evaluated by `testNull`; this helper only records that
|
|
222
|
+
* their result is known exactly when key presence is known.
|
|
223
|
+
*
|
|
224
|
+
* @param contextKeyKnowledge known facts about the condition context key
|
|
225
|
+
* @returns condition knowledge for a presence-only operator
|
|
226
|
+
*/
|
|
227
|
+
function conditionKnowledgeForPresenceOnly(contextKeyKnowledge) {
|
|
228
|
+
return {
|
|
229
|
+
conditionResult: contextKeyKnowledge.contextKeyPresence,
|
|
230
|
+
...contextKeyKnowledge
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Derives condition-result knowledge for operators whose result may depend on value.
|
|
235
|
+
*
|
|
236
|
+
* Single-value, `IfExists`, `ForAnyValue`, and `ForAllValues` evaluators handle
|
|
237
|
+
* their own missing-key semantics. Once those evaluators run, the result is
|
|
238
|
+
* known when key presence is known and any required concrete values or policy
|
|
239
|
+
* variable references are known.
|
|
240
|
+
*
|
|
241
|
+
* @param request the request being evaluated
|
|
242
|
+
* @param condition the condition whose policy values may contain variables
|
|
243
|
+
* @param simulationParameters the simulation mode and Discovery constraints
|
|
244
|
+
* @param contextKeyKnowledge known facts about the condition context key
|
|
245
|
+
* @returns condition knowledge for a value-capable operator
|
|
246
|
+
*/
|
|
247
|
+
function conditionKnowledgeForValueEvaluation(request, condition, simulationParameters, contextKeyKnowledge) {
|
|
248
|
+
if (contextKeyKnowledge.contextKeyPresence === 'unknown') {
|
|
249
|
+
return { conditionResult: 'unknown', ...contextKeyKnowledge };
|
|
250
|
+
}
|
|
251
|
+
if (contextKeyKnowledge.contextKeyValue === 'unknown') {
|
|
252
|
+
return { conditionResult: 'unknown', ...contextKeyKnowledge };
|
|
253
|
+
}
|
|
254
|
+
if (conditionValuesReferenceUnknownValue(request, condition, simulationParameters)) {
|
|
255
|
+
return { conditionResult: 'unknown', ...contextKeyKnowledge };
|
|
256
|
+
}
|
|
257
|
+
return { conditionResult: 'known', ...contextKeyKnowledge };
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Builds context-key knowledge for normal request-context semantics.
|
|
261
|
+
*
|
|
262
|
+
* Outside explicitly configured Discovery constraints, the request context is
|
|
263
|
+
* authoritative: key presence is known, and the value is known when present.
|
|
264
|
+
*
|
|
265
|
+
* @param keyExists whether the condition key exists in the request context
|
|
266
|
+
* @returns context-key knowledge for ordinary request-context evaluation
|
|
267
|
+
*/
|
|
268
|
+
function requestContextKeyKnowledge(keyExists) {
|
|
269
|
+
return {
|
|
270
|
+
contextKeyPresence: 'known',
|
|
271
|
+
contextKeyValue: keyExists ? 'known' : 'not-applicable'
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Determines the value-knowledge dimension for a condition key.
|
|
276
|
+
*
|
|
277
|
+
* If presence is unknown, the value is also unknown because the key might not be
|
|
278
|
+
* present. If presence is known and the key is absent, the value is not
|
|
279
|
+
* applicable rather than unknown.
|
|
280
|
+
*
|
|
281
|
+
* @param keyExists whether the condition key exists in the request context
|
|
282
|
+
* @param contextKeyPresence whether the condition key's presence is known
|
|
283
|
+
* @param configuredValueIsKnown whether constraints say a present value is authoritative
|
|
284
|
+
* @returns the value-knowledge dimension for the condition key
|
|
285
|
+
*/
|
|
286
|
+
function contextValueKnowledge(keyExists, contextKeyPresence, configuredValueIsKnown) {
|
|
287
|
+
// If the presence is unknown, the value must be unknown by definition
|
|
288
|
+
if (contextKeyPresence === 'unknown') {
|
|
289
|
+
return 'unknown';
|
|
290
|
+
}
|
|
291
|
+
// If the presence is known but the key does not exist, the value doesn't matter
|
|
292
|
+
if (!keyExists) {
|
|
293
|
+
return 'not-applicable';
|
|
294
|
+
}
|
|
295
|
+
// If the presence is known and the key exists, use discovery constraint
|
|
296
|
+
return configuredValueIsKnown ? 'known' : 'unknown';
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Checks whether any policy condition value references an unknown context value.
|
|
300
|
+
*
|
|
301
|
+
* For example, a known `s3:prefix` condition can still be unknown if the policy
|
|
302
|
+
* value is `${aws:SourceAccount}` and `aws:SourceAccount` has unknown value in
|
|
303
|
+
* Discovery mode.
|
|
304
|
+
*
|
|
305
|
+
* @param request the request being evaluated
|
|
306
|
+
* @param condition the condition whose policy values may contain variables
|
|
307
|
+
* @param simulationParameters the simulation mode and Discovery constraints
|
|
308
|
+
* @returns true if any referenced context variable has unknown presence or value
|
|
309
|
+
*/
|
|
310
|
+
function conditionValuesReferenceUnknownValue(request, condition, simulationParameters) {
|
|
311
|
+
for (const value of condition.conditionValues()) {
|
|
312
|
+
for (const variable of contextVariablesInString(value)) {
|
|
313
|
+
const constraint = simulationParameters.discoveryContextKeyConstraints.constraintFor(variable);
|
|
314
|
+
if (!constraint.explicitlyConfigured) {
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (!request.contextKeyExists(variable)) {
|
|
318
|
+
if (!constraint.presenceIsKnown) {
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (!constraint.valueIsKnown) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return false;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Extracts context variable names referenced by `${...}` policy variables.
|
|
332
|
+
*
|
|
333
|
+
* Special IAM escapes such as `${*}`, `${?}`, and `${$}` are ignored because
|
|
334
|
+
* they are literal substitutions rather than request context variables.
|
|
335
|
+
*
|
|
336
|
+
* @param value the raw policy value to inspect
|
|
337
|
+
* @returns context variable names referenced by the policy value
|
|
338
|
+
*/
|
|
339
|
+
function contextVariablesInString(value) {
|
|
340
|
+
const variables = [];
|
|
341
|
+
for (const match of value.matchAll(/\$\{(.*?)\}/g)) {
|
|
342
|
+
const variable = match[1]?.split(', ')[0]?.trim();
|
|
343
|
+
if (variable && variable !== '*' && variable !== '?' && variable !== '$') {
|
|
344
|
+
variables.push(variable);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return variables;
|
|
154
348
|
}
|
|
155
349
|
/**
|
|
156
350
|
* Tests a condition with a null operator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/condition/condition.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/condition/condition.ts"],"names":[],"mappings":";;AA0IA,4DAoEC;AA6BD,sEAMC;AAzOD,4DAAsE;AACtE,qDAA8C;AAC9C,iDAA0C;AAC1C,2DAAoD;AACpD,uDAAgD;AAEhD,8DAAuD;AACvD,+CAAwC;AACxC,wDAAiD;AACjD,kEAA2D;AAC3D,8EAAuE;AACvE,4DAAqD;AACrD,wEAAiE;AACjE,8DAAuD;AACvD,2DAAoD;AACpD,iEAA0D;AAC1D,iEAA0D;AAC1D,2EAAoE;AACpE,uFAAgF;AAChF,qEAA8D;AAC9D,iFAA0E;AAC1E,uEAAgE;AAChE,8DAAuD;AACvD,kFAA2E;AAC3E,0DAAmD;AACnD,oEAA6D;AAC7D,wFAAiF;AACjF,gEAAyD;AAIzD,MAAM,YAAY,GAAG;IACnB,8BAAY;IACZ,oCAAe;IACf,kDAAsB;IACtB,wDAAyB;IACzB,0BAAU;IACV,gCAAa;IACb,gCAAa;IACb,sCAAgB;IAChB,oCAAe;IACf,gDAAqB;IACrB,0CAAkB;IAClB,sDAAwB;IACxB,0BAAU;IACV,gCAAa;IACb,8BAAY;IACZ,0CAAkB;IAClB,oCAAe;IACf,gDAAqB;IACrB,cAAI;IACJ,8BAAY;IACZ,wBAAS;IACT,8BAAY;IACZ,oBAAO;IACP,wBAAS;IACT,0BAAU;IACV,8BAAY;CACb,CAAA;AAED,MAAM,cAAc,GAA6C,EAAE,CAAA;AACnE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;IACpC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAA;AACxD,CAAC;AA4DD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,OAAmB,EACnB,UAAuB,EACvB,aAA+B,EAC/B,oBAA0C;IAM1C,MAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,EAAsB,CAAA;IAE/E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAA;QACpF,OAAO;YACL,SAAS;YACT,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,CAAC,CAAsB,EAAW,EAAE;QACpD,IAAI,oBAAoB,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YACxD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;YAC5C,IAAI,uBAAuB,KAAK,OAAO,EAAE,CAAC;gBACxC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;YAC3B,CAAC;YACD,IAAI,uBAAuB,KAAK,MAAM,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,aAAa,CAClF,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,CAC3B,CAAA;QACD,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACpC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,mDAAmD;QACnD,IAAI,uBAAuB,KAAK,OAAO,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAC3B,CAAC;QACD,+CAA+C;QAC/C,IAAI,uBAAuB,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAC1B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yEAAyE,aAAa,EAAE,CACzF,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/F,MAAM,mBAAmB,GACvB,uBAAuB,KAAK,MAAM;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAElG,OAAO;QACL,OAAO,EAAE,QAAQ,IAAI,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,OAAgC;QACxF,OAAO,EAAE;YACP,UAAU,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC5E;QACD,oEAAoE;QACpE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;KAChF,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CACxB,UAAiC,EACjC,SAA8C;IAE9C,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACtD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAC3C,OAAmB,EACnB,SAAoB,EACpB,oBAA0C;IAE1C,OAAO,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAA;AAClF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAC9B,OAAmB,EACnB,SAAoB,EACpB,oBAA0C;IAE1C,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA;IACpC,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxE,MAAM,mBAAmB,GAAG,iCAAiC,CAC3D,oBAAoB,EACpB,SAAS,CAAC,YAAY,EAAE,EACxB,SAAS,CACV,CAAA;IAED,IACE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM;QACrD,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,MAAM,EAC7D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;YACvC,SAAS,EAAE,iCAAiC,CAAC,mBAAmB,CAAC;SAClE,CAAA;IACH,CAAC;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAA;QACvD,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;gBACtE,SAAS,EAAE,oCAAoC,CAC7C,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,mBAAmB,CACpB;aACF,CAAA;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;gBACvE,SAAS,EAAE,oCAAoC,CAC7C,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,mBAAmB,CACpB;aACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC;QACtE,SAAS,EAAE,oCAAoC,CAC7C,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,mBAAmB,CACpB;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,iCAAiC,CACxC,oBAA0C,EAC1C,GAAW,EACX,SAAkB;IAElB,IAAI,oBAAoB,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;QACxD,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACzF,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,kBAAkB,GAA4B,UAAU,CAAC,eAAe;QAC5E,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO;QACL,kBAAkB;QAClB,eAAe,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,UAAU,CAAC,YAAY,CAAC;KAC/F,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iCAAiC,CACxC,mBAAiD;IAEjD,OAAO;QACL,eAAe,EAAE,mBAAmB,CAAC,kBAAkB;QACvD,GAAG,mBAAmB;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,oCAAoC,CAC3C,OAAmB,EACnB,SAAoB,EACpB,oBAA0C,EAC1C,mBAAiD;IAEjD,IAAI,mBAAmB,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAC/D,CAAC;IAED,IAAI,mBAAmB,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAC/D,CAAC;IAED,IAAI,oCAAoC,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAC/D,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAA;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAAC,SAAkB;IACpD,OAAO;QACL,kBAAkB,EAAE,OAAO;QAC3B,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;KACxD,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,qBAAqB,CAC5B,SAAkB,EAClB,kBAA2C,EAC3C,sBAA+B;IAE/B,sEAAsE;IACtE,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,gFAAgF;IAChF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,wEAAwE;IACxE,OAAO,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oCAAoC,CAC3C,OAAmB,EACnB,SAAoB,EACpB,oBAA0C;IAE1C,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;QAChD,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC9F,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBACrC,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,wBAAwB,CAAC,KAAa;IAC7C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;QACjD,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACzE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,SAAoB,EAAE,SAAkB;IACxD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9C,MAAM,eAAe,GAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzF,OAAO;YACL,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;SAC3C,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;QAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KACxD,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAmB,EACnB,SAAoB,EACpB,aAAoC,EACpC,QAAgC;IAEhC,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxF,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,aAAa,EAAE,CAAC;QACxD,+CAA+C;QAC/C,sFAAsF;QACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,aAAa,GAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACzF,KAAK;gBACL,OAAO,EAAE,IAAI;aACd,CAAC,CAAC,CAAA;YACH,OAAO;gBACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;gBACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;gBAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACnE,OAAO,EAAE,IAAI;gBACb,qBAAqB,EAAE,IAAI;gBAC3B,yBAAyB,EAAE,QAAQ;aACpC,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3C,gDAAgD;QAChD,2CAA2C;QAC3C,MAAM,aAAa,GAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzF,KAAK;YACL,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CAAA;QACH,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,KAAK;YACd,oBAAoB,EAAE,CAAC,QAAQ;YAC/B,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE;SAC7C,CAAA;IACH,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,aAAa,GAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzF,KAAK;YACL,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,IAAI;SACtB,CAAA;IACH,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,OAAO,CACjD,OAAO,EACP,QAAQ,CAAC,KAAK,EACd,SAAS,CAAC,eAAe,EAAE,CAC5B,CAAA;IAED,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;QAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzD,yBAAyB,EAAE,QAAQ,CAAC,KAAK;KAC1C,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CACxB,OAAmB,EACnB,SAAoB,EACpB,QAAgC,EAChC,aAAoC;IAEpC,MAAM,qBAAqB,GAA4B,SAAS;SAC7D,eAAe,EAAE;SACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,KAAK;QACL,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAAA;IACL,MAAM,wBAAwB,GAA4B,SAAS;SAChE,eAAe,EAAE;SACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,KAAK;QACL,OAAO,EAAE,KAAK;KACf,CAAC,CAAC,CAAA;IAEL,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,IAAI;YACb,qBAAqB,EAAE,IAAI;SAC5B,CAAA;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;QAC7B,QAAQ,GAAG,IAAI,kCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,IAAI;SACtB,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAAA;QAChG,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,OAAO;YACP,QAAQ;SACT,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACjF,MAAM,YAAY,GAAG,CAAC,aAAa,CAAA;IACnC,MAAM,eAAe,GAAa,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAA0C,EAAE,CAAA;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvD,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;aAAM,IAAI,aAAa,CAAC,UAAU,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5D,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;oBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,YAAY;iBACtB,CAAA;gBACD,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBACjD,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,EAAE,CAAA;gBAC3D,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;YAC3D,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;gBACxD,UAAU,CAAC,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAA;gBAC3E,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,YAAY;QACrB,eAAe;KAChB,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CACvB,OAAmB,EACnB,SAAoB,EACpB,QAAgC,EAChC,aAAoC;IAEpC,MAAM,mBAAmB,GAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAClF,CAAC,KAAK,EAAE,EAAE,CACR,CAAC;QACC,KAAK;QACL,OAAO,EAAE,KAAK;KACf,CAA0B,CAC9B,CAAA;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE,KAAK;YACd,oBAAoB,EAAE,IAAI;SAC3B,CAAA;QACD,mBAAmB;IACrB,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;QAC7B,QAAQ,GAAG,IAAI,kCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;YACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;YAC3C,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,IAAI;SACtB,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAAA;QAChG,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,OAAO;YACP,QAAQ;SACT,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC/E,MAAM,eAAe,GAAa,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAA0C,EAAE,CAAA;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvD,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;aAAM,IAAI,aAAa,CAAC,UAAU,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5D,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;oBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,YAAY;iBACtB,CAAA;gBACD,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,EAAE,CAAA;gBAC3D,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QACvC,iBAAiB,EAAE,SAAS,CAAC,YAAY,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,YAAY;QACrB,eAAe;KAChB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/** Shared key or pattern field for Discovery context-key constraints. */
|
|
2
|
+
interface DiscoveryContextKeyConstraintKey {
|
|
3
|
+
/**
|
|
4
|
+
* Context key name or slash-delimited regular expression pattern.
|
|
5
|
+
*
|
|
6
|
+
* Literal names are matched case-insensitively. Regex-style names such as
|
|
7
|
+
* a ResourceTag-prefix pattern are also matched case-insensitively.
|
|
8
|
+
*/
|
|
9
|
+
keyName: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Discovery knowledge for a key whose presence and concrete value are both known.
|
|
13
|
+
*/
|
|
14
|
+
interface KnownPresenceKnownValueConstraint {
|
|
15
|
+
/** Presence/absence in the request context is authoritative. */
|
|
16
|
+
presenceIsKnown: true;
|
|
17
|
+
/** The concrete value in the request context is authoritative when the key is present. */
|
|
18
|
+
valueIsKnown: true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Discovery knowledge for a key whose presence is known but concrete value is not.
|
|
22
|
+
*/
|
|
23
|
+
interface KnownPresenceUnknownValueConstraint {
|
|
24
|
+
/** Presence/absence in the request context is authoritative. */
|
|
25
|
+
presenceIsKnown: true;
|
|
26
|
+
/** The concrete value in the request context is not authoritative. */
|
|
27
|
+
valueIsKnown: false;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Discovery knowledge for a key whose presence is unknown.
|
|
31
|
+
*
|
|
32
|
+
* Value knowledge must also be unknown because a value cannot be authoritative
|
|
33
|
+
* when the key might not exist.
|
|
34
|
+
*/
|
|
35
|
+
interface UnknownPresenceConstraint {
|
|
36
|
+
/** Presence/absence in the request context is not authoritative. */
|
|
37
|
+
presenceIsKnown: false;
|
|
38
|
+
/** Must be false because value knowledge requires known presence. */
|
|
39
|
+
valueIsKnown: false;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Caller-provided Discovery-mode knowledge about a single context key or key pattern.
|
|
43
|
+
*
|
|
44
|
+
* These constraints do not add context keys to the request. The request context
|
|
45
|
+
* still determines whether a key is actually present. A constraint only tells
|
|
46
|
+
* Discovery mode whether it can trust that presence and/or the concrete value.
|
|
47
|
+
*
|
|
48
|
+
* The discriminated union intentionally makes `{ presenceIsKnown: false,
|
|
49
|
+
* valueIsKnown: true }` unrepresentable in TypeScript.
|
|
50
|
+
*/
|
|
51
|
+
export type DiscoveryContextKeyConstraint = DiscoveryContextKeyConstraintKey & (KnownPresenceKnownValueConstraint | KnownPresenceUnknownValueConstraint | UnknownPresenceConstraint);
|
|
52
|
+
/**
|
|
53
|
+
* Resolved Discovery-mode knowledge for a specific context key lookup.
|
|
54
|
+
*
|
|
55
|
+
* This is the effective result after merging all matching literal, prefix, and
|
|
56
|
+
* regex constraints. If no constraint matches, both booleans are false and
|
|
57
|
+
* `explicitlyConfigured` is false, which tells condition evaluation to preserve
|
|
58
|
+
* the current unconstrained Discovery behavior for that key.
|
|
59
|
+
*
|
|
60
|
+
* The discriminated union intentionally makes `{ presenceIsKnown: false,
|
|
61
|
+
* valueIsKnown: true }` unrepresentable in TypeScript.
|
|
62
|
+
*/
|
|
63
|
+
export type EffectiveDiscoveryContextKeyConstraint = (KnownPresenceKnownValueConstraint | KnownPresenceUnknownValueConstraint | UnknownPresenceConstraint) & {
|
|
64
|
+
/** Whether at least one caller-provided constraint matched the looked-up key. */
|
|
65
|
+
explicitlyConfigured: boolean;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Discovery-only context key knowledge constraints.
|
|
69
|
+
*
|
|
70
|
+
* The request context still determines whether a key is present. These constraints
|
|
71
|
+
* describe whether Discovery mode can trust that presence and/or concrete value.
|
|
72
|
+
*/
|
|
73
|
+
export declare class DiscoveryContextKeyConstraints {
|
|
74
|
+
private literalConstraints;
|
|
75
|
+
private prefixConstraintsByService;
|
|
76
|
+
private regexConstraints;
|
|
77
|
+
private resolvedCache;
|
|
78
|
+
/**
|
|
79
|
+
* Create Discovery context key constraints.
|
|
80
|
+
*
|
|
81
|
+
* @param constraints the constraint definitions to index
|
|
82
|
+
*/
|
|
83
|
+
constructor(constraints?: DiscoveryContextKeyConstraint[]);
|
|
84
|
+
/**
|
|
85
|
+
* Get the effective Discovery constraint for a context key.
|
|
86
|
+
*
|
|
87
|
+
* @param key the context key to look up
|
|
88
|
+
* @returns the merged matching constraint, or an unconstrained result
|
|
89
|
+
*/
|
|
90
|
+
constraintFor(key: string): EffectiveDiscoveryContextKeyConstraint;
|
|
91
|
+
/**
|
|
92
|
+
* Adds a caller-provided constraint to the appropriate lookup index.
|
|
93
|
+
*
|
|
94
|
+
* Literal keys are stored in a case-insensitive map. Simple prefix-like regex
|
|
95
|
+
* patterns are stored in prefix buckets, and complex regex patterns fall back
|
|
96
|
+
* to the regex list.
|
|
97
|
+
*
|
|
98
|
+
* @param constraint the caller-provided constraint to index
|
|
99
|
+
*/
|
|
100
|
+
private addConstraint;
|
|
101
|
+
}
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=discoveryContextKeyConstraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoveryContextKeyConstraints.d.ts","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,iCAAiC;IACzC,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,0FAA0F;IAC1F,YAAY,EAAE,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,mCAAmC;IAC3C,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,sEAAsE;IACtE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,oEAAoE;IACpE,eAAe,EAAE,KAAK,CAAA;IAEtB,qEAAqE;IACrE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GAAG,gCAAgC,GAC1E,CACI,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,CAAA;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACjD,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,GAAG;IACF,iFAAiF;IACjF,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAuCD;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAiE;IAEtF;;;;OAIG;gBACS,WAAW,GAAE,6BAA6B,EAAO;IAgB7D;;;;;OAKG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sCAAsC;IAuCzE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiscoveryContextKeyConstraints = void 0;
|
|
4
|
+
const unconstrained = {
|
|
5
|
+
presenceIsKnown: false,
|
|
6
|
+
valueIsKnown: false,
|
|
7
|
+
explicitlyConfigured: false
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Discovery-only context key knowledge constraints.
|
|
11
|
+
*
|
|
12
|
+
* The request context still determines whether a key is present. These constraints
|
|
13
|
+
* describe whether Discovery mode can trust that presence and/or concrete value.
|
|
14
|
+
*/
|
|
15
|
+
class DiscoveryContextKeyConstraints {
|
|
16
|
+
literalConstraints = new Map();
|
|
17
|
+
prefixConstraintsByService = new Map();
|
|
18
|
+
regexConstraints = [];
|
|
19
|
+
resolvedCache = new Map();
|
|
20
|
+
/**
|
|
21
|
+
* Create Discovery context key constraints.
|
|
22
|
+
*
|
|
23
|
+
* @param constraints the constraint definitions to index
|
|
24
|
+
*/
|
|
25
|
+
constructor(constraints = []) {
|
|
26
|
+
for (const constraint of constraints) {
|
|
27
|
+
const runtimeConstraint = constraint;
|
|
28
|
+
if (!runtimeConstraint.presenceIsKnown && runtimeConstraint.valueIsKnown) {
|
|
29
|
+
throw new Error(`Invalid discovery context key constraint for ${runtimeConstraint.keyName}: valueIsKnown requires presenceIsKnown`);
|
|
30
|
+
}
|
|
31
|
+
this.addConstraint(constraint);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the effective Discovery constraint for a context key.
|
|
36
|
+
*
|
|
37
|
+
* @param key the context key to look up
|
|
38
|
+
* @returns the merged matching constraint, or an unconstrained result
|
|
39
|
+
*/
|
|
40
|
+
constraintFor(key) {
|
|
41
|
+
const lowerKey = key.toLowerCase();
|
|
42
|
+
const cached = this.resolvedCache.get(lowerKey);
|
|
43
|
+
if (cached) {
|
|
44
|
+
return cached;
|
|
45
|
+
}
|
|
46
|
+
let result = { ...unconstrained };
|
|
47
|
+
const merge = (constraint) => {
|
|
48
|
+
result = effectiveConstraint(result.presenceIsKnown || constraint.presenceIsKnown, result.valueIsKnown || constraint.valueIsKnown, true);
|
|
49
|
+
};
|
|
50
|
+
const literal = this.literalConstraints.get(lowerKey);
|
|
51
|
+
if (literal) {
|
|
52
|
+
merge(literal);
|
|
53
|
+
}
|
|
54
|
+
const service = lowerKey.split(':')[0];
|
|
55
|
+
const prefixConstraints = this.prefixConstraintsByService.get(service) ?? [];
|
|
56
|
+
for (const constraint of prefixConstraints) {
|
|
57
|
+
if (lowerKey.startsWith(constraint.prefixLower)) {
|
|
58
|
+
merge(constraint);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const constraint of this.regexConstraints) {
|
|
62
|
+
if (constraint.pattern.test(key)) {
|
|
63
|
+
merge(constraint);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.resolvedCache.set(lowerKey, result);
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Adds a caller-provided constraint to the appropriate lookup index.
|
|
71
|
+
*
|
|
72
|
+
* Literal keys are stored in a case-insensitive map. Simple prefix-like regex
|
|
73
|
+
* patterns are stored in prefix buckets, and complex regex patterns fall back
|
|
74
|
+
* to the regex list.
|
|
75
|
+
*
|
|
76
|
+
* @param constraint the caller-provided constraint to index
|
|
77
|
+
*/
|
|
78
|
+
addConstraint(constraint) {
|
|
79
|
+
const stored = storedConstraint(constraint.presenceIsKnown, constraint.valueIsKnown);
|
|
80
|
+
if (constraint.keyName.startsWith('/') && constraint.keyName.endsWith('/')) {
|
|
81
|
+
const patternText = constraint.keyName.slice(1, -1);
|
|
82
|
+
const prefix = regexPrefix(patternText);
|
|
83
|
+
if (prefix) {
|
|
84
|
+
const service = prefix.split(':')[0];
|
|
85
|
+
const constraints = this.prefixConstraintsByService.get(service) ?? [];
|
|
86
|
+
constraints.push({ ...stored, prefixLower: prefix });
|
|
87
|
+
this.prefixConstraintsByService.set(service, constraints);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.regexConstraints.push({ ...stored, pattern: new RegExp(patternText, 'i') });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const key = constraint.keyName.toLowerCase();
|
|
95
|
+
const existing = this.literalConstraints.get(key);
|
|
96
|
+
this.literalConstraints.set(key, existing ? mergeStored(existing, stored) : stored);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.DiscoveryContextKeyConstraints = DiscoveryContextKeyConstraints;
|
|
101
|
+
/**
|
|
102
|
+
* Merges two stored constraints with true-winning OR semantics.
|
|
103
|
+
*
|
|
104
|
+
* @param a the first stored constraint
|
|
105
|
+
* @param b the second stored constraint
|
|
106
|
+
* @returns the merged constraint
|
|
107
|
+
*/
|
|
108
|
+
function mergeStored(a, b) {
|
|
109
|
+
return storedConstraint(a.presenceIsKnown || b.presenceIsKnown, a.valueIsKnown || b.valueIsKnown);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Builds a stored constraint while preserving the valid-state union.
|
|
113
|
+
*
|
|
114
|
+
* @param presenceIsKnown whether presence/absence is authoritative
|
|
115
|
+
* @param valueIsKnown whether the concrete value is authoritative
|
|
116
|
+
* @returns a stored constraint in one of the valid knowledge states
|
|
117
|
+
*/
|
|
118
|
+
function storedConstraint(presenceIsKnown, valueIsKnown) {
|
|
119
|
+
if (valueIsKnown) {
|
|
120
|
+
return { presenceIsKnown: true, valueIsKnown: true };
|
|
121
|
+
}
|
|
122
|
+
return presenceIsKnown
|
|
123
|
+
? { presenceIsKnown: true, valueIsKnown: false }
|
|
124
|
+
: { presenceIsKnown: false, valueIsKnown: false };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Builds an effective constraint while preserving the valid-state union.
|
|
128
|
+
*
|
|
129
|
+
* @param presenceIsKnown whether presence/absence is authoritative
|
|
130
|
+
* @param valueIsKnown whether the concrete value is authoritative
|
|
131
|
+
* @param explicitlyConfigured whether any configured constraint matched
|
|
132
|
+
* @returns an effective constraint in one of the valid knowledge states
|
|
133
|
+
*/
|
|
134
|
+
function effectiveConstraint(presenceIsKnown, valueIsKnown, explicitlyConfigured) {
|
|
135
|
+
return { ...storedConstraint(presenceIsKnown, valueIsKnown), explicitlyConfigured };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Extracts a lower-case literal prefix from simple anchored regex patterns.
|
|
139
|
+
*
|
|
140
|
+
* Only simple patterns such as `^aws:ResourceTag/.*` are converted. More
|
|
141
|
+
* complex patterns return undefined and are evaluated with RegExp directly.
|
|
142
|
+
*
|
|
143
|
+
* @param patternText the regex source without surrounding slashes
|
|
144
|
+
* @returns a lower-case prefix if the pattern is reducible to startsWith
|
|
145
|
+
*/
|
|
146
|
+
function regexPrefix(patternText) {
|
|
147
|
+
const match = patternText.match(/^\^([A-Za-z0-9:_/-]+)(?:\.\*|\.\*\?)?\/?$/);
|
|
148
|
+
if (!match) {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
return match[1].toLowerCase();
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=discoveryContextKeyConstraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Policy } from '@cloud-copilot/iam-policy';
|
|
2
|
-
import {
|
|
2
|
+
import { DiscoveryContextKeyConstraints } from '../context_keys/discoveryContextKeyConstraints.js';
|
|
3
3
|
import { type IdentityAnalysis, type RcpAnalysis, type RequestAnalysis, type ResourceAnalysis, type ScpAnalysis } from '../evaluate.js';
|
|
4
4
|
import { type PolicyType } from '../policyType.js';
|
|
5
5
|
import { type AwsRequest } from '../request/request.js';
|
|
@@ -23,10 +23,10 @@ export interface SimulationParameters {
|
|
|
23
23
|
*/
|
|
24
24
|
simulationMode: SimulationMode;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* Discovery-only knowledge constraints for context keys. In Strict mode,
|
|
27
|
+
* all condition keys are evaluated against the concrete request context.
|
|
28
28
|
*/
|
|
29
|
-
|
|
29
|
+
discoveryContextKeyConstraints: DiscoveryContextKeyConstraints;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* A set of service or resource control policies for each level of an organization tree
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreSimulatorEngine.d.ts","sourceRoot":"","sources":["../../../src/core_engine/CoreSimulatorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,2BAA2B,CAAA;AAGvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CoreSimulatorEngine.d.ts","sourceRoot":"","sources":["../../../src/core_engine/CoreSimulatorEngine.ts"],"names":[],"mappings":"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"}
|