@actsecurity/iam-simulate 0.1.173
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/LICENSE.txt +661 -0
- package/README.md +257 -0
- package/dist/cjs/StatementAnalysis.d.ts +63 -0
- package/dist/cjs/StatementAnalysis.d.ts.map +1 -0
- package/dist/cjs/StatementAnalysis.js +48 -0
- package/dist/cjs/StatementAnalysis.js.map +1 -0
- package/dist/cjs/action/action.d.ts +37 -0
- package/dist/cjs/action/action.d.ts.map +1 -0
- package/dist/cjs/action/action.js +102 -0
- package/dist/cjs/action/action.js.map +1 -0
- package/dist/cjs/analysis/allowedConditions.d.ts +61 -0
- package/dist/cjs/analysis/allowedConditions.d.ts.map +1 -0
- package/dist/cjs/analysis/allowedConditions.js +395 -0
- package/dist/cjs/analysis/allowedConditions.js.map +1 -0
- package/dist/cjs/analysis/analyzeResults.d.ts +99 -0
- package/dist/cjs/analysis/analyzeResults.d.ts.map +1 -0
- package/dist/cjs/analysis/analyzeResults.js +187 -0
- package/dist/cjs/analysis/analyzeResults.js.map +1 -0
- package/dist/cjs/condition/BaseConditionOperator.d.ts +13 -0
- package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -0
- package/dist/cjs/condition/BaseConditionOperator.js +3 -0
- package/dist/cjs/condition/BaseConditionOperator.js.map +1 -0
- package/dist/cjs/condition/arn/ArnEquals.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnEquals.js +12 -0
- package/dist/cjs/condition/arn/ArnEquals.js.map +1 -0
- package/dist/cjs/condition/arn/ArnLike.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnLike.js +18 -0
- package/dist/cjs/condition/arn/ArnLike.js.map +1 -0
- package/dist/cjs/condition/arn/ArnNotEquals.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnNotEquals.js +12 -0
- package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -0
- package/dist/cjs/condition/arn/ArnNotLike.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnNotLike.js +18 -0
- package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -0
- package/dist/cjs/condition/arn/arn.d.ts +12 -0
- package/dist/cjs/condition/arn/arn.d.ts.map +1 -0
- package/dist/cjs/condition/arn/arn.js +71 -0
- package/dist/cjs/condition/arn/arn.js.map +1 -0
- package/dist/cjs/condition/binary/BinaryEquals.d.ts +7 -0
- package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -0
- package/dist/cjs/condition/binary/BinaryEquals.js +28 -0
- package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -0
- package/dist/cjs/condition/boolean/Bool.d.ts +3 -0
- package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -0
- package/dist/cjs/condition/boolean/Bool.js +54 -0
- package/dist/cjs/condition/boolean/Bool.js.map +1 -0
- package/dist/cjs/condition/condition.d.ts +26 -0
- package/dist/cjs/condition/condition.d.ts.map +1 -0
- package/dist/cjs/condition/condition.js +665 -0
- package/dist/cjs/condition/condition.js.map +1 -0
- package/dist/cjs/condition/conditionUtil.d.ts +10 -0
- package/dist/cjs/condition/conditionUtil.d.ts.map +1 -0
- package/dist/cjs/condition/conditionUtil.js +19 -0
- package/dist/cjs/condition/conditionUtil.js.map +1 -0
- package/dist/cjs/condition/date/DateEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateEquals.js +22 -0
- package/dist/cjs/condition/date/DateEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThan.d.ts +3 -0
- package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThan.js +22 -0
- package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.js +22 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateLessThan.d.ts +3 -0
- package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateLessThan.js +22 -0
- package/dist/cjs/condition/date/DateLessThan.js.map +1 -0
- package/dist/cjs/condition/date/DateLessThanEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateLessThanEquals.js +22 -0
- package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateNotEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateNotEquals.js +22 -0
- package/dist/cjs/condition/date/DateNotEquals.js.map +1 -0
- package/dist/cjs/condition/date/date.d.ts +18 -0
- package/dist/cjs/condition/date/date.d.ts.map +1 -0
- package/dist/cjs/condition/date/date.js +57 -0
- package/dist/cjs/condition/date/date.js.map +1 -0
- package/dist/cjs/condition/ipaddress/IpAddress.d.ts +3 -0
- package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/IpAddress.js +20 -0
- package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts +3 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.js +20 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ip.d.ts +11 -0
- package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ip.js +70 -0
- package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv4.d.ts +24 -0
- package/dist/cjs/condition/ipaddress/ipv4.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv4.js +59 -0
- package/dist/cjs/condition/ipaddress/ipv4.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv6.d.ts +24 -0
- package/dist/cjs/condition/ipaddress/ipv6.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv6.js +111 -0
- package/dist/cjs/condition/ipaddress/ipv6.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.js +22 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThan.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThan.js +22 -0
- package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/numeric.d.ts +18 -0
- package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/numeric.js +56 -0
- package/dist/cjs/condition/numeric/numeric.js.map +1 -0
- package/dist/cjs/condition/string/StringEquals.d.ts +3 -0
- package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringEquals.js +35 -0
- package/dist/cjs/condition/string/StringEquals.js.map +1 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +35 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -0
- package/dist/cjs/condition/string/StringLike.d.ts +3 -0
- package/dist/cjs/condition/string/StringLike.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringLike.js +35 -0
- package/dist/cjs/condition/string/StringLike.js.map +1 -0
- package/dist/cjs/condition/string/StringNotEquals.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotEquals.js +35 -0
- package/dist/cjs/condition/string/StringNotEquals.js.map +1 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +35 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
- package/dist/cjs/condition/string/StringNotLike.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotLike.js +35 -0
- package/dist/cjs/condition/string/StringNotLike.js.map +1 -0
- package/dist/cjs/context_keys/contextKeyTypes.d.ts +19 -0
- package/dist/cjs/context_keys/contextKeyTypes.d.ts.map +1 -0
- package/dist/cjs/context_keys/contextKeyTypes.js +27 -0
- package/dist/cjs/context_keys/contextKeyTypes.js.map +1 -0
- package/dist/cjs/context_keys/contextKeys.d.ts +24 -0
- package/dist/cjs/context_keys/contextKeys.d.ts.map +1 -0
- package/dist/cjs/context_keys/contextKeys.js +121 -0
- package/dist/cjs/context_keys/contextKeys.js.map +1 -0
- 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/context_keys/findContextKeys.d.ts +19 -0
- package/dist/cjs/context_keys/findContextKeys.d.ts.map +1 -0
- package/dist/cjs/context_keys/findContextKeys.js +58 -0
- package/dist/cjs/context_keys/findContextKeys.js.map +1 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts +134 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.js +444 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.js.map +1 -0
- package/dist/cjs/evaluate.d.ts +199 -0
- package/dist/cjs/evaluate.d.ts.map +1 -0
- package/dist/cjs/evaluate.js +3 -0
- package/dist/cjs/evaluate.js.map +1 -0
- package/dist/cjs/explain/displayExplainCli.d.ts +3 -0
- package/dist/cjs/explain/displayExplainCli.d.ts.map +1 -0
- package/dist/cjs/explain/displayExplainCli.js +260 -0
- package/dist/cjs/explain/displayExplainCli.js.map +1 -0
- package/dist/cjs/explain/statementExplain.d.ts +161 -0
- package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
- package/dist/cjs/explain/statementExplain.js +33 -0
- package/dist/cjs/explain/statementExplain.js.map +1 -0
- package/dist/cjs/global_conditions/globalConditionKeys.d.ts +3 -0
- package/dist/cjs/global_conditions/globalConditionKeys.d.ts.map +1 -0
- package/dist/cjs/global_conditions/globalConditionKeys.js +12 -0
- package/dist/cjs/global_conditions/globalConditionKeys.js.map +1 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/policyType.d.ts +13 -0
- package/dist/cjs/policyType.d.ts.map +1 -0
- package/dist/cjs/policyType.js +3 -0
- package/dist/cjs/policyType.js.map +1 -0
- package/dist/cjs/principal/principal.d.ts +61 -0
- package/dist/cjs/principal/principal.d.ts.map +1 -0
- package/dist/cjs/principal/principal.js +357 -0
- package/dist/cjs/principal/principal.js.map +1 -0
- package/dist/cjs/request/request.d.ts +66 -0
- package/dist/cjs/request/request.d.ts.map +1 -0
- package/dist/cjs/request/request.js +42 -0
- package/dist/cjs/request/request.js.map +1 -0
- package/dist/cjs/request/requestAction.d.ts +27 -0
- package/dist/cjs/request/requestAction.d.ts.map +1 -0
- package/dist/cjs/request/requestAction.js +20 -0
- package/dist/cjs/request/requestAction.js.map +1 -0
- package/dist/cjs/request/requestPrincipal.d.ts +92 -0
- package/dist/cjs/request/requestPrincipal.d.ts.map +1 -0
- package/dist/cjs/request/requestPrincipal.js +88 -0
- package/dist/cjs/request/requestPrincipal.js.map +1 -0
- package/dist/cjs/request/requestResource.d.ts +55 -0
- package/dist/cjs/request/requestResource.d.ts.map +1 -0
- package/dist/cjs/request/requestResource.js +40 -0
- package/dist/cjs/request/requestResource.js.map +1 -0
- package/dist/cjs/requestContext.d.ts +63 -0
- package/dist/cjs/requestContext.d.ts.map +1 -0
- package/dist/cjs/requestContext.js +46 -0
- package/dist/cjs/requestContext.js.map +1 -0
- package/dist/cjs/resource/resource.d.ts +54 -0
- package/dist/cjs/resource/resource.d.ts.map +1 -0
- package/dist/cjs/resource/resource.js +585 -0
- package/dist/cjs/resource/resource.js.map +1 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +182 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.js +625 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/IamServiceAuthorizer.d.ts +10 -0
- package/dist/cjs/services/IamServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/IamServiceAuthorizer.js +65 -0
- package/dist/cjs/services/IamServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/KmsServiceAuthorizer.d.ts +29 -0
- package/dist/cjs/services/KmsServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/KmsServiceAuthorizer.js +83 -0
- package/dist/cjs/services/KmsServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/ServiceAuthorizer.d.ts +27 -0
- package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/ServiceAuthorizer.js +3 -0
- package/dist/cjs/services/ServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/StsServiceAuthorizer.d.ts +19 -0
- package/dist/cjs/services/StsServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/StsServiceAuthorizer.js +45 -0
- package/dist/cjs/services/StsServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts +24 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.js +79 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts +50 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.js +301 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.js.map +1 -0
- package/dist/cjs/simulation_engine/contextKeys.d.ts +13 -0
- package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/contextKeys.js +58 -0
- package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
- package/dist/cjs/simulation_engine/overallResult.d.ts +13 -0
- package/dist/cjs/simulation_engine/overallResult.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/overallResult.js +35 -0
- package/dist/cjs/simulation_engine/overallResult.js.map +1 -0
- package/dist/cjs/simulation_engine/policyResources.d.ts +44 -0
- package/dist/cjs/simulation_engine/policyResources.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/policyResources.js +120 -0
- package/dist/cjs/simulation_engine/policyResources.js.map +1 -0
- package/dist/cjs/simulation_engine/resourceTypes.d.ts +11 -0
- package/dist/cjs/simulation_engine/resourceTypes.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/resourceTypes.js +26 -0
- package/dist/cjs/simulation_engine/resourceTypes.js.map +1 -0
- package/dist/cjs/simulation_engine/simulation.d.ts +114 -0
- package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulation.js +35 -0
- package/dist/cjs/simulation_engine/simulation.js.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts +128 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.js +432 -0
- package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/cjs/simulation_engine/simulationOptions.d.ts +21 -0
- package/dist/cjs/simulation_engine/simulationOptions.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulationOptions.js +3 -0
- package/dist/cjs/simulation_engine/simulationOptions.js.map +1 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +62 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -0
- package/dist/cjs/util/resourceStrings.d.ts +19 -0
- package/dist/cjs/util/resourceStrings.d.ts.map +1 -0
- package/dist/cjs/util/resourceStrings.js +107 -0
- package/dist/cjs/util/resourceStrings.js.map +1 -0
- package/dist/cjs/util.d.ts +90 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +350 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/esm/StatementAnalysis.d.ts +63 -0
- package/dist/esm/StatementAnalysis.d.ts.map +1 -0
- package/dist/esm/StatementAnalysis.js +46 -0
- package/dist/esm/StatementAnalysis.js.map +1 -0
- package/dist/esm/action/action.d.ts +37 -0
- package/dist/esm/action/action.d.ts.map +1 -0
- package/dist/esm/action/action.js +100 -0
- package/dist/esm/action/action.js.map +1 -0
- package/dist/esm/analysis/allowedConditions.d.ts +61 -0
- package/dist/esm/analysis/allowedConditions.d.ts.map +1 -0
- package/dist/esm/analysis/allowedConditions.js +382 -0
- package/dist/esm/analysis/allowedConditions.js.map +1 -0
- package/dist/esm/analysis/analyzeResults.d.ts +99 -0
- package/dist/esm/analysis/analyzeResults.d.ts.map +1 -0
- package/dist/esm/analysis/analyzeResults.js +183 -0
- package/dist/esm/analysis/analyzeResults.js.map +1 -0
- package/dist/esm/condition/BaseConditionOperator.d.ts +13 -0
- package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -0
- package/dist/esm/condition/BaseConditionOperator.js +3 -0
- package/dist/esm/condition/BaseConditionOperator.js.map +1 -0
- package/dist/esm/condition/arn/ArnEquals.d.ts +3 -0
- package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnEquals.js +10 -0
- package/dist/esm/condition/arn/ArnEquals.js.map +1 -0
- package/dist/esm/condition/arn/ArnLike.d.ts +3 -0
- package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnLike.js +16 -0
- package/dist/esm/condition/arn/ArnLike.js.map +1 -0
- package/dist/esm/condition/arn/ArnNotEquals.d.ts +3 -0
- package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnNotEquals.js +10 -0
- package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -0
- package/dist/esm/condition/arn/ArnNotLike.d.ts +3 -0
- package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnNotLike.js +16 -0
- package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
- package/dist/esm/condition/arn/arn.d.ts +12 -0
- package/dist/esm/condition/arn/arn.d.ts.map +1 -0
- package/dist/esm/condition/arn/arn.js +70 -0
- package/dist/esm/condition/arn/arn.js.map +1 -0
- package/dist/esm/condition/binary/BinaryEquals.d.ts +7 -0
- package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -0
- package/dist/esm/condition/binary/BinaryEquals.js +27 -0
- package/dist/esm/condition/binary/BinaryEquals.js.map +1 -0
- package/dist/esm/condition/boolean/Bool.d.ts +3 -0
- package/dist/esm/condition/boolean/Bool.d.ts.map +1 -0
- package/dist/esm/condition/boolean/Bool.js +53 -0
- package/dist/esm/condition/boolean/Bool.js.map +1 -0
- package/dist/esm/condition/condition.d.ts +26 -0
- package/dist/esm/condition/condition.d.ts.map +1 -0
- package/dist/esm/condition/condition.js +666 -0
- package/dist/esm/condition/condition.js.map +1 -0
- package/dist/esm/condition/conditionUtil.d.ts +10 -0
- package/dist/esm/condition/conditionUtil.d.ts.map +1 -0
- package/dist/esm/condition/conditionUtil.js +17 -0
- package/dist/esm/condition/conditionUtil.js.map +1 -0
- package/dist/esm/condition/date/DateEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateEquals.js +20 -0
- package/dist/esm/condition/date/DateEquals.js.map +1 -0
- package/dist/esm/condition/date/DateGreaterThan.d.ts +3 -0
- package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -0
- package/dist/esm/condition/date/DateGreaterThan.js +20 -0
- package/dist/esm/condition/date/DateGreaterThan.js.map +1 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.js +20 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -0
- package/dist/esm/condition/date/DateLessThan.d.ts +3 -0
- package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -0
- package/dist/esm/condition/date/DateLessThan.js +20 -0
- package/dist/esm/condition/date/DateLessThan.js.map +1 -0
- package/dist/esm/condition/date/DateLessThanEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateLessThanEquals.js +20 -0
- package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -0
- package/dist/esm/condition/date/DateNotEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateNotEquals.js +20 -0
- package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
- package/dist/esm/condition/date/date.d.ts +18 -0
- package/dist/esm/condition/date/date.d.ts.map +1 -0
- package/dist/esm/condition/date/date.js +54 -0
- package/dist/esm/condition/date/date.js.map +1 -0
- package/dist/esm/condition/ipaddress/IpAddress.d.ts +3 -0
- package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/IpAddress.js +18 -0
- package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.d.ts +3 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.js +18 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
- package/dist/esm/condition/ipaddress/ip.d.ts +11 -0
- package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ip.js +68 -0
- package/dist/esm/condition/ipaddress/ip.js.map +1 -0
- package/dist/esm/condition/ipaddress/ipv4.d.ts +24 -0
- package/dist/esm/condition/ipaddress/ipv4.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ipv4.js +54 -0
- package/dist/esm/condition/ipaddress/ipv4.js.map +1 -0
- package/dist/esm/condition/ipaddress/ipv6.d.ts +24 -0
- package/dist/esm/condition/ipaddress/ipv6.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ipv6.js +106 -0
- package/dist/esm/condition/ipaddress/ipv6.js.map +1 -0
- package/dist/esm/condition/numeric/NumericEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericEquals.js +20 -0
- package/dist/esm/condition/numeric/NumericEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.js +20 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +20 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThan.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThan.js +20 -0
- package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.js +20 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericNotEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericNotEquals.js +20 -0
- package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
- package/dist/esm/condition/numeric/numeric.d.ts +18 -0
- package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
- package/dist/esm/condition/numeric/numeric.js +53 -0
- package/dist/esm/condition/numeric/numeric.js.map +1 -0
- package/dist/esm/condition/string/StringEquals.d.ts +3 -0
- package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
- package/dist/esm/condition/string/StringEquals.js +34 -0
- package/dist/esm/condition/string/StringEquals.js.map +1 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js +34 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -0
- package/dist/esm/condition/string/StringLike.d.ts +3 -0
- package/dist/esm/condition/string/StringLike.d.ts.map +1 -0
- package/dist/esm/condition/string/StringLike.js +34 -0
- package/dist/esm/condition/string/StringLike.js.map +1 -0
- package/dist/esm/condition/string/StringNotEquals.d.ts +3 -0
- package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotEquals.js +34 -0
- package/dist/esm/condition/string/StringNotEquals.js.map +1 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +34 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
- package/dist/esm/condition/string/StringNotLike.d.ts +3 -0
- package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotLike.js +34 -0
- package/dist/esm/condition/string/StringNotLike.js.map +1 -0
- package/dist/esm/context_keys/contextKeyTypes.d.ts +19 -0
- package/dist/esm/context_keys/contextKeyTypes.d.ts.map +1 -0
- package/dist/esm/context_keys/contextKeyTypes.js +23 -0
- package/dist/esm/context_keys/contextKeyTypes.js.map +1 -0
- package/dist/esm/context_keys/contextKeys.d.ts +24 -0
- package/dist/esm/context_keys/contextKeys.d.ts.map +1 -0
- package/dist/esm/context_keys/contextKeys.js +117 -0
- package/dist/esm/context_keys/contextKeys.js.map +1 -0
- 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/context_keys/findContextKeys.d.ts +19 -0
- package/dist/esm/context_keys/findContextKeys.d.ts.map +1 -0
- package/dist/esm/context_keys/findContextKeys.js +55 -0
- package/dist/esm/context_keys/findContextKeys.js.map +1 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts +134 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.js +441 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -0
- package/dist/esm/evaluate.d.ts +199 -0
- package/dist/esm/evaluate.d.ts.map +1 -0
- package/dist/esm/evaluate.js +2 -0
- package/dist/esm/evaluate.js.map +1 -0
- package/dist/esm/explain/displayExplainCli.d.ts +3 -0
- package/dist/esm/explain/displayExplainCli.d.ts.map +1 -0
- package/dist/esm/explain/displayExplainCli.js +258 -0
- package/dist/esm/explain/displayExplainCli.js.map +1 -0
- package/dist/esm/explain/statementExplain.d.ts +161 -0
- package/dist/esm/explain/statementExplain.d.ts.map +1 -0
- package/dist/esm/explain/statementExplain.js +30 -0
- package/dist/esm/explain/statementExplain.js.map +1 -0
- package/dist/esm/global_conditions/globalConditionKeys.d.ts +3 -0
- package/dist/esm/global_conditions/globalConditionKeys.d.ts.map +1 -0
- package/dist/esm/global_conditions/globalConditionKeys.js +9 -0
- package/dist/esm/global_conditions/globalConditionKeys.js.map +1 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/policyType.d.ts +13 -0
- package/dist/esm/policyType.d.ts.map +1 -0
- package/dist/esm/policyType.js +2 -0
- package/dist/esm/policyType.js.map +1 -0
- package/dist/esm/principal/principal.d.ts +61 -0
- package/dist/esm/principal/principal.d.ts.map +1 -0
- package/dist/esm/principal/principal.js +354 -0
- package/dist/esm/principal/principal.js.map +1 -0
- package/dist/esm/request/request.d.ts +66 -0
- package/dist/esm/request/request.d.ts.map +1 -0
- package/dist/esm/request/request.js +34 -0
- package/dist/esm/request/request.js.map +1 -0
- package/dist/esm/request/requestAction.d.ts +27 -0
- package/dist/esm/request/requestAction.d.ts.map +1 -0
- package/dist/esm/request/requestAction.js +15 -0
- package/dist/esm/request/requestAction.js.map +1 -0
- package/dist/esm/request/requestPrincipal.d.ts +92 -0
- package/dist/esm/request/requestPrincipal.d.ts.map +1 -0
- package/dist/esm/request/requestPrincipal.js +80 -0
- package/dist/esm/request/requestPrincipal.js.map +1 -0
- package/dist/esm/request/requestResource.d.ts +55 -0
- package/dist/esm/request/requestResource.d.ts.map +1 -0
- package/dist/esm/request/requestResource.js +34 -0
- package/dist/esm/request/requestResource.js.map +1 -0
- package/dist/esm/requestContext.d.ts +63 -0
- package/dist/esm/requestContext.d.ts.map +1 -0
- package/dist/esm/requestContext.js +39 -0
- package/dist/esm/requestContext.js.map +1 -0
- package/dist/esm/resource/resource.d.ts +54 -0
- package/dist/esm/resource/resource.d.ts.map +1 -0
- package/dist/esm/resource/resource.js +582 -0
- package/dist/esm/resource/resource.js.map +1 -0
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts +182 -0
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js +623 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/IamServiceAuthorizer.d.ts +10 -0
- package/dist/esm/services/IamServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/IamServiceAuthorizer.js +63 -0
- package/dist/esm/services/IamServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/KmsServiceAuthorizer.d.ts +29 -0
- package/dist/esm/services/KmsServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/KmsServiceAuthorizer.js +82 -0
- package/dist/esm/services/KmsServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts +27 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.js +5 -0
- package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/StsServiceAuthorizer.d.ts +19 -0
- package/dist/esm/services/StsServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/StsServiceAuthorizer.js +44 -0
- package/dist/esm/services/StsServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts +24 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.js +76 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.d.ts +50 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.js +299 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.js.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts +13 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.js +55 -0
- package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
- package/dist/esm/simulation_engine/overallResult.d.ts +13 -0
- package/dist/esm/simulation_engine/overallResult.d.ts.map +1 -0
- package/dist/esm/simulation_engine/overallResult.js +32 -0
- package/dist/esm/simulation_engine/overallResult.js.map +1 -0
- package/dist/esm/simulation_engine/policyResources.d.ts +44 -0
- package/dist/esm/simulation_engine/policyResources.d.ts.map +1 -0
- package/dist/esm/simulation_engine/policyResources.js +117 -0
- package/dist/esm/simulation_engine/policyResources.js.map +1 -0
- package/dist/esm/simulation_engine/resourceTypes.d.ts +11 -0
- package/dist/esm/simulation_engine/resourceTypes.d.ts.map +1 -0
- package/dist/esm/simulation_engine/resourceTypes.js +23 -0
- package/dist/esm/simulation_engine/resourceTypes.js.map +1 -0
- package/dist/esm/simulation_engine/simulation.d.ts +114 -0
- package/dist/esm/simulation_engine/simulation.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulation.js +30 -0
- package/dist/esm/simulation_engine/simulation.js.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts +128 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.js +430 -0
- package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/esm/simulation_engine/simulationOptions.d.ts +21 -0
- package/dist/esm/simulation_engine/simulationOptions.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulationOptions.js +3 -0
- package/dist/esm/simulation_engine/simulationOptions.js.map +1 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js +62 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -0
- package/dist/esm/util/resourceStrings.d.ts +19 -0
- package/dist/esm/util/resourceStrings.d.ts.map +1 -0
- package/dist/esm/util/resourceStrings.js +103 -0
- package/dist/esm/util/resourceStrings.js.map +1 -0
- package/dist/esm/util.d.ts +90 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +341 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringNotEqualsIgnoreCase.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/StringNotEqualsIgnoreCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGxE,eAAO,MAAM,yBAAyB,EAAE,qBA8BvC,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {} from '../../explain/statementExplain.js';
|
|
2
|
+
import { convertIamString } from '../../util.js';
|
|
3
|
+
import {} from '../BaseConditionOperator.js';
|
|
4
|
+
import { resolvedValue } from '../conditionUtil.js';
|
|
5
|
+
export const StringNotEqualsIgnoreCase = {
|
|
6
|
+
name: 'StringNotEqualsIgnoreCase',
|
|
7
|
+
matches: (request, keyValue, policyValues) => {
|
|
8
|
+
const explains = policyValues.map((value) => {
|
|
9
|
+
const { pattern, errors } = convertIamString(value, request, { replaceWildcards: false });
|
|
10
|
+
if (errors && errors.length > 0) {
|
|
11
|
+
return {
|
|
12
|
+
value,
|
|
13
|
+
matches: false,
|
|
14
|
+
errors
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const matches = !new RegExp(pattern, 'i').test(keyValue);
|
|
18
|
+
return {
|
|
19
|
+
value,
|
|
20
|
+
matches,
|
|
21
|
+
resolvedValue: resolvedValue(value, request)
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
const overallMatch = !explains.some((explain) => !explain.matches);
|
|
25
|
+
return {
|
|
26
|
+
matches: overallMatch,
|
|
27
|
+
explains
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
allowsVariables: true,
|
|
31
|
+
allowsWildcards: false,
|
|
32
|
+
isNegative: true
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=StringNotEqualsIgnoreCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringNotEqualsIgnoreCase.js","sourceRoot":"","sources":["../../../../src/condition/string/StringNotEqualsIgnoreCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAA8B,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GAA0B;IAC9D,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAA4B,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAA;YACzF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO;oBACL,KAAK;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM;iBACP,CAAA;YACH,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACxD,OAAO;gBACL,KAAK;gBACL,OAAO;gBACP,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;aAC7C,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,QAAQ;SACT,CAAA;IACH,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,IAAI;CACjB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringNotLike.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/StringNotLike.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGxE,eAAO,MAAM,aAAa,EAAE,qBA8B3B,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {} from '../../explain/statementExplain.js';
|
|
2
|
+
import { convertIamString } from '../../util.js';
|
|
3
|
+
import {} from '../BaseConditionOperator.js';
|
|
4
|
+
import { resolvedValue } from '../conditionUtil.js';
|
|
5
|
+
export const StringNotLike = {
|
|
6
|
+
name: 'StringNotLike',
|
|
7
|
+
matches: (request, keyValue, policyValues) => {
|
|
8
|
+
const explains = policyValues.map((value) => {
|
|
9
|
+
const { pattern, errors } = convertIamString(value, request, { replaceWildcards: true });
|
|
10
|
+
if (errors && errors.length > 0) {
|
|
11
|
+
return {
|
|
12
|
+
value,
|
|
13
|
+
matches: false,
|
|
14
|
+
errors
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const matches = !pattern.test(keyValue);
|
|
18
|
+
return {
|
|
19
|
+
value,
|
|
20
|
+
matches,
|
|
21
|
+
resolvedValue: resolvedValue(value, request)
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
const overallMatch = !explains.some((explain) => !explain.matches);
|
|
25
|
+
return {
|
|
26
|
+
matches: overallMatch,
|
|
27
|
+
explains
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
allowsVariables: true,
|
|
31
|
+
allowsWildcards: true,
|
|
32
|
+
isNegative: true
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=StringNotLike.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringNotLike.js","sourceRoot":"","sources":["../../../../src/condition/string/StringNotLike.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAA8B,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAA4B,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;YACxF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO;oBACL,KAAK;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM;iBACP,CAAA;YACH,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,OAAO;gBACL,KAAK;gBACL,OAAO;gBACP,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;aAC7C,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,QAAQ;SACT,CAAA;IACH,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;CACjB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type BaseConditionKeyType = 'String' | 'ARN' | 'Numeric' | 'Bool' | 'Date' | 'IPAddress' | 'Binary';
|
|
2
|
+
export type ArrayConditionKeyType = `ArrayOf${BaseConditionKeyType}`;
|
|
3
|
+
export type ConditionKeyType = BaseConditionKeyType | ArrayConditionKeyType;
|
|
4
|
+
/**
|
|
5
|
+
* Check if a condition key is an array types
|
|
6
|
+
*
|
|
7
|
+
* @param key the condition key type to check
|
|
8
|
+
* @returns true if the key is an array type, otherwise false
|
|
9
|
+
*/
|
|
10
|
+
export declare function isConditionKeyArray(key: ConditionKeyType): key is ArrayConditionKeyType;
|
|
11
|
+
/**
|
|
12
|
+
* Get the BaseConditionKeyType from an ArrayConditionKeyType
|
|
13
|
+
*
|
|
14
|
+
* @param key the ArrayConditionKeyType to get the base type from
|
|
15
|
+
* @returns the base type of the array key
|
|
16
|
+
* @throws if the key is not an array type
|
|
17
|
+
*/
|
|
18
|
+
export declare function getBaseConditionKeyType(key: ArrayConditionKeyType): BaseConditionKeyType;
|
|
19
|
+
//# sourceMappingURL=contextKeyTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeyTypes.d.ts","sourceRoot":"","sources":["../../../src/context_keys/contextKeyTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC9B,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AACzE,MAAM,MAAM,qBAAqB,GAAG,UAAU,oBAAoB,EAAE,CAAA;AACpE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,CAAA;AAE3E;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,qBAAqB,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,qBAAqB,GAAG,oBAAoB,CAKxF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a condition key is an array types
|
|
3
|
+
*
|
|
4
|
+
* @param key the condition key type to check
|
|
5
|
+
* @returns true if the key is an array type, otherwise false
|
|
6
|
+
*/
|
|
7
|
+
export function isConditionKeyArray(key) {
|
|
8
|
+
return key.startsWith('ArrayOf');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get the BaseConditionKeyType from an ArrayConditionKeyType
|
|
12
|
+
*
|
|
13
|
+
* @param key the ArrayConditionKeyType to get the base type from
|
|
14
|
+
* @returns the base type of the array key
|
|
15
|
+
* @throws if the key is not an array type
|
|
16
|
+
*/
|
|
17
|
+
export function getBaseConditionKeyType(key) {
|
|
18
|
+
if (!isConditionKeyArray(key)) {
|
|
19
|
+
throw new Error(`Expected ArrayConditionType, got ${key}`);
|
|
20
|
+
}
|
|
21
|
+
return key.slice(7);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=contextKeyTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeyTypes.js","sourceRoot":"","sources":["../../../src/context_keys/contextKeyTypes.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAqB;IACvD,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAA0B;IAChE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAyB,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ConditionKeyType } from './contextKeyTypes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if a context key actually exists
|
|
4
|
+
*
|
|
5
|
+
* @param key The context key to check
|
|
6
|
+
* @returns true if the context key is valid, false otherwise
|
|
7
|
+
*/
|
|
8
|
+
export declare function isActualContextKey(key: string): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Check the capitalization of a context key and return the correct capitalization
|
|
11
|
+
*
|
|
12
|
+
* @param contextKey the condition key to check
|
|
13
|
+
* @returns if the condition key is an array type
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeContextKeyCase(contextKey: string): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Get the type of a context key
|
|
18
|
+
*
|
|
19
|
+
* @param contextKey - The string condition key to get the type for
|
|
20
|
+
* @returns The type of the condition key
|
|
21
|
+
* @throws an error if the condition key is not found
|
|
22
|
+
*/
|
|
23
|
+
export declare function typeForContextKey(contextKey: string): Promise<ConditionKeyType>;
|
|
24
|
+
//# sourceMappingURL=contextKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeys.d.ts","sourceRoot":"","sources":["../../../src/context_keys/contextKeys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AA0B5D;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOtE;AAYD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBjF;AAmBD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYrF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { findConditionKey } from '@actsecurity/iam-data';
|
|
2
|
+
import { getGlobalConditionKeyWithOrWithoutPrefix } from '../global_conditions/globalConditionKeys.js';
|
|
3
|
+
import {} from './contextKeyTypes.js';
|
|
4
|
+
const oidcKeys = new Set([
|
|
5
|
+
'amr',
|
|
6
|
+
'aud',
|
|
7
|
+
'email',
|
|
8
|
+
'oaud',
|
|
9
|
+
'sub',
|
|
10
|
+
'actor',
|
|
11
|
+
'actor_id',
|
|
12
|
+
'job_workflow_ref',
|
|
13
|
+
'repository',
|
|
14
|
+
'repository_id',
|
|
15
|
+
'workflow',
|
|
16
|
+
'ref',
|
|
17
|
+
'environment',
|
|
18
|
+
'enterprise_id',
|
|
19
|
+
'app_id',
|
|
20
|
+
'user_id',
|
|
21
|
+
'id',
|
|
22
|
+
'project_id',
|
|
23
|
+
'rpst_id',
|
|
24
|
+
'google/organization_number'
|
|
25
|
+
]);
|
|
26
|
+
const oidcProviderPattern = /^[0-9a-zA-Z\._\-]+$/;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a context key actually exists
|
|
29
|
+
*
|
|
30
|
+
* @param key The context key to check
|
|
31
|
+
* @returns true if the context key is valid, false otherwise
|
|
32
|
+
*/
|
|
33
|
+
export async function isActualContextKey(key) {
|
|
34
|
+
if (isOidcConditionKey(key)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
const dataKey = await findConditionKey(key);
|
|
38
|
+
return !!dataKey;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Takes context key and returns the details for it, accounting for any variables in the key
|
|
42
|
+
*
|
|
43
|
+
* @param contextKey The context key to get the details for
|
|
44
|
+
* @returns The details for the context key if it exists. if the key has variables in it it will return the details for the variable key
|
|
45
|
+
*/
|
|
46
|
+
async function serviceContextKeyDetails(contextKey) {
|
|
47
|
+
return findConditionKey(contextKey);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check the capitalization of a context key and return the correct capitalization
|
|
51
|
+
*
|
|
52
|
+
* @param contextKey the condition key to check
|
|
53
|
+
* @returns if the condition key is an array type
|
|
54
|
+
*/
|
|
55
|
+
export async function normalizeContextKeyCase(contextKey) {
|
|
56
|
+
const serviceKey = await serviceContextKeyDetails(contextKey);
|
|
57
|
+
if (serviceKey) {
|
|
58
|
+
return replaceVariableInContextKey(serviceKey.key, contextKey);
|
|
59
|
+
}
|
|
60
|
+
const globalConditionKey = getGlobalConditionKeyWithOrWithoutPrefix(contextKey);
|
|
61
|
+
if (globalConditionKey) {
|
|
62
|
+
return replaceVariableInContextKey(globalConditionKey.key, contextKey);
|
|
63
|
+
}
|
|
64
|
+
if (isOidcConditionKey(contextKey)) {
|
|
65
|
+
return contextKey;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`Context key ${contextKey} not found`);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Replaces a variable in a context key with the actual value from a policy
|
|
71
|
+
*
|
|
72
|
+
* @param specKey the string value of the condition key spec
|
|
73
|
+
* @param actualKey the string value of the condition key in the policy
|
|
74
|
+
* @returns the spec condition key with the variable portion replaced with the actual value
|
|
75
|
+
*/
|
|
76
|
+
function replaceVariableInContextKey(specKey, actualKey) {
|
|
77
|
+
const slashIndex = specKey.indexOf('/');
|
|
78
|
+
if (slashIndex === -1) {
|
|
79
|
+
return specKey;
|
|
80
|
+
}
|
|
81
|
+
const prefix = specKey.slice(0, slashIndex);
|
|
82
|
+
const suffix = actualKey.slice(slashIndex);
|
|
83
|
+
return prefix + suffix;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get the type of a context key
|
|
87
|
+
*
|
|
88
|
+
* @param contextKey - The string condition key to get the type for
|
|
89
|
+
* @returns The type of the condition key
|
|
90
|
+
* @throws an error if the condition key is not found
|
|
91
|
+
*/
|
|
92
|
+
export async function typeForContextKey(contextKey) {
|
|
93
|
+
const globalConditionKey = getGlobalConditionKeyWithOrWithoutPrefix(contextKey);
|
|
94
|
+
if (globalConditionKey) {
|
|
95
|
+
return globalConditionKey.type;
|
|
96
|
+
}
|
|
97
|
+
const keyDetails = await serviceContextKeyDetails(contextKey);
|
|
98
|
+
if (keyDetails) {
|
|
99
|
+
return keyDetails.type;
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`Condition key ${contextKey} not found`);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Checks if a string is a valid OIDC condition key
|
|
105
|
+
*
|
|
106
|
+
* @param key the key to check
|
|
107
|
+
* @returns true if the key is a valid OIDC condition key
|
|
108
|
+
*/
|
|
109
|
+
function isOidcConditionKey(key) {
|
|
110
|
+
const parts = key.split(':');
|
|
111
|
+
if (parts.length !== 2) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const [service, action] = parts;
|
|
115
|
+
return oidcKeys.has(action) && oidcProviderPattern.test(service);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=contextKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/context_keys/contextKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,149 @@
|
|
|
1
|
+
const unconstrained = {
|
|
2
|
+
presenceIsKnown: false,
|
|
3
|
+
valueIsKnown: false,
|
|
4
|
+
explicitlyConfigured: false
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Discovery-only context key knowledge constraints.
|
|
8
|
+
*
|
|
9
|
+
* The request context still determines whether a key is present. These constraints
|
|
10
|
+
* describe whether Discovery mode can trust that presence and/or concrete value.
|
|
11
|
+
*/
|
|
12
|
+
export class DiscoveryContextKeyConstraints {
|
|
13
|
+
/**
|
|
14
|
+
* Create Discovery context key constraints.
|
|
15
|
+
*
|
|
16
|
+
* @param constraints the constraint definitions to index
|
|
17
|
+
*/
|
|
18
|
+
constructor(constraints = []) {
|
|
19
|
+
this.literalConstraints = new Map();
|
|
20
|
+
this.prefixConstraintsByService = new Map();
|
|
21
|
+
this.regexConstraints = [];
|
|
22
|
+
this.resolvedCache = new Map();
|
|
23
|
+
for (const constraint of constraints) {
|
|
24
|
+
const runtimeConstraint = constraint;
|
|
25
|
+
if (!runtimeConstraint.presenceIsKnown && runtimeConstraint.valueIsKnown) {
|
|
26
|
+
throw new Error(`Invalid discovery context key constraint for ${runtimeConstraint.keyName}: valueIsKnown requires presenceIsKnown`);
|
|
27
|
+
}
|
|
28
|
+
this.addConstraint(constraint);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the effective Discovery constraint for a context key.
|
|
33
|
+
*
|
|
34
|
+
* @param key the context key to look up
|
|
35
|
+
* @returns the merged matching constraint, or an unconstrained result
|
|
36
|
+
*/
|
|
37
|
+
constraintFor(key) {
|
|
38
|
+
const lowerKey = key.toLowerCase();
|
|
39
|
+
const cached = this.resolvedCache.get(lowerKey);
|
|
40
|
+
if (cached) {
|
|
41
|
+
return cached;
|
|
42
|
+
}
|
|
43
|
+
let result = { ...unconstrained };
|
|
44
|
+
const merge = (constraint) => {
|
|
45
|
+
result = effectiveConstraint(result.presenceIsKnown || constraint.presenceIsKnown, result.valueIsKnown || constraint.valueIsKnown, true);
|
|
46
|
+
};
|
|
47
|
+
const literal = this.literalConstraints.get(lowerKey);
|
|
48
|
+
if (literal) {
|
|
49
|
+
merge(literal);
|
|
50
|
+
}
|
|
51
|
+
const service = lowerKey.split(':')[0];
|
|
52
|
+
const prefixConstraints = this.prefixConstraintsByService.get(service) ?? [];
|
|
53
|
+
for (const constraint of prefixConstraints) {
|
|
54
|
+
if (lowerKey.startsWith(constraint.prefixLower)) {
|
|
55
|
+
merge(constraint);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const constraint of this.regexConstraints) {
|
|
59
|
+
if (constraint.pattern.test(key)) {
|
|
60
|
+
merge(constraint);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this.resolvedCache.set(lowerKey, result);
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Adds a caller-provided constraint to the appropriate lookup index.
|
|
68
|
+
*
|
|
69
|
+
* Literal keys are stored in a case-insensitive map. Simple prefix-like regex
|
|
70
|
+
* patterns are stored in prefix buckets, and complex regex patterns fall back
|
|
71
|
+
* to the regex list.
|
|
72
|
+
*
|
|
73
|
+
* @param constraint the caller-provided constraint to index
|
|
74
|
+
*/
|
|
75
|
+
addConstraint(constraint) {
|
|
76
|
+
const stored = storedConstraint(constraint.presenceIsKnown, constraint.valueIsKnown);
|
|
77
|
+
if (constraint.keyName.startsWith('/') && constraint.keyName.endsWith('/')) {
|
|
78
|
+
const patternText = constraint.keyName.slice(1, -1);
|
|
79
|
+
const prefix = regexPrefix(patternText);
|
|
80
|
+
if (prefix) {
|
|
81
|
+
const service = prefix.split(':')[0];
|
|
82
|
+
const constraints = this.prefixConstraintsByService.get(service) ?? [];
|
|
83
|
+
constraints.push({ ...stored, prefixLower: prefix });
|
|
84
|
+
this.prefixConstraintsByService.set(service, constraints);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.regexConstraints.push({ ...stored, pattern: new RegExp(patternText, 'i') });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const key = constraint.keyName.toLowerCase();
|
|
92
|
+
const existing = this.literalConstraints.get(key);
|
|
93
|
+
this.literalConstraints.set(key, existing ? mergeStored(existing, stored) : stored);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Merges two stored constraints with true-winning OR semantics.
|
|
99
|
+
*
|
|
100
|
+
* @param a the first stored constraint
|
|
101
|
+
* @param b the second stored constraint
|
|
102
|
+
* @returns the merged constraint
|
|
103
|
+
*/
|
|
104
|
+
function mergeStored(a, b) {
|
|
105
|
+
return storedConstraint(a.presenceIsKnown || b.presenceIsKnown, a.valueIsKnown || b.valueIsKnown);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Builds a stored constraint while preserving the valid-state union.
|
|
109
|
+
*
|
|
110
|
+
* @param presenceIsKnown whether presence/absence is authoritative
|
|
111
|
+
* @param valueIsKnown whether the concrete value is authoritative
|
|
112
|
+
* @returns a stored constraint in one of the valid knowledge states
|
|
113
|
+
*/
|
|
114
|
+
function storedConstraint(presenceIsKnown, valueIsKnown) {
|
|
115
|
+
if (valueIsKnown) {
|
|
116
|
+
return { presenceIsKnown: true, valueIsKnown: true };
|
|
117
|
+
}
|
|
118
|
+
return presenceIsKnown
|
|
119
|
+
? { presenceIsKnown: true, valueIsKnown: false }
|
|
120
|
+
: { presenceIsKnown: false, valueIsKnown: false };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Builds an effective constraint while preserving the valid-state union.
|
|
124
|
+
*
|
|
125
|
+
* @param presenceIsKnown whether presence/absence is authoritative
|
|
126
|
+
* @param valueIsKnown whether the concrete value is authoritative
|
|
127
|
+
* @param explicitlyConfigured whether any configured constraint matched
|
|
128
|
+
* @returns an effective constraint in one of the valid knowledge states
|
|
129
|
+
*/
|
|
130
|
+
function effectiveConstraint(presenceIsKnown, valueIsKnown, explicitlyConfigured) {
|
|
131
|
+
return { ...storedConstraint(presenceIsKnown, valueIsKnown), explicitlyConfigured };
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Extracts a lower-case literal prefix from simple anchored regex patterns.
|
|
135
|
+
*
|
|
136
|
+
* Only simple patterns such as `^aws:ResourceTag/.*` are converted. More
|
|
137
|
+
* complex patterns return undefined and are evaluated with RegExp directly.
|
|
138
|
+
*
|
|
139
|
+
* @param patternText the regex source without surrounding slashes
|
|
140
|
+
* @returns a lower-case prefix if the pattern is reducible to startsWith
|
|
141
|
+
*/
|
|
142
|
+
function regexPrefix(patternText) {
|
|
143
|
+
const match = patternText.match(/^\^([A-Za-z0-9:_/-]+)(?:\.\*|\.\*\?)?\/?$/);
|
|
144
|
+
if (!match) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
return match[1].toLowerCase();
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=discoveryContextKeyConstraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAoFA,MAAM,aAAa,GAA2C;IAC5D,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,KAAK;IACnB,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAiCD;;;;;GAKG;AACH,MAAM,OAAO,8BAA8B;IAMzC;;;;OAIG;IACH,YAAY,cAA+C,EAAE;QAVrD,uBAAkB,GAAkC,IAAI,GAAG,EAAE,CAAA;QAC7D,+BAA0B,GAAoC,IAAI,GAAG,EAAE,CAAA;QACvE,qBAAgB,GAAsB,EAAE,CAAA;QACxC,kBAAa,GAAwD,IAAI,GAAG,EAAE,CAAA;QAQpF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,iBAAiB,GAAG,UAIzB,CAAA;YACD,IAAI,CAAC,iBAAiB,CAAC,eAAe,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CACb,gDAAgD,iBAAiB,CAAC,OAAO,yCAAyC,CACnH,CAAA;YACH,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,GAAW;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,MAAM,GAA2C,EAAE,GAAG,aAAa,EAAE,CAAA;QACzE,MAAM,KAAK,GAAG,CAAC,UAA4B,EAAE,EAAE;YAC7C,MAAM,GAAG,mBAAmB,CAC1B,MAAM,CAAC,eAAe,IAAI,UAAU,CAAC,eAAe,EACpD,MAAM,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,EAC9C,IAAI,CACL,CAAA;QACH,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,OAAO,CAAC,CAAA;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAC5E,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC3C,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChD,KAAK,CAAC,UAAU,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,UAAU,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACxC,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa,CAAC,UAAyC;QAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;QAEpF,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3E,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;YACvC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;gBACtE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;gBACpD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC3D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAClF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;CACF;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,CAAmB,EAAE,CAAmB;IAC3D,OAAO,gBAAgB,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,CAAA;AACnG,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,eAAwB,EAAE,YAAqB;IACvE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;IACtD,CAAC;IACD,OAAO,eAAe;QACpB,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE;QAChD,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAA;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,eAAwB,EACxB,YAAqB,EACrB,oBAA6B;IAE7B,OAAO,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,WAAmB;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AAC/B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Policy } from '@actsecurity/iam-policy';
|
|
2
|
+
/**
|
|
3
|
+
* Find all the context keys in a list of policies
|
|
4
|
+
*
|
|
5
|
+
* @param policies - The list of policies to search
|
|
6
|
+
* @returns The list of valid and invalid context keys found in the policies
|
|
7
|
+
*/
|
|
8
|
+
export declare function findContextKeys(policies: Policy[]): Promise<{
|
|
9
|
+
validKeys: string[];
|
|
10
|
+
invalidKeys: string[];
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Get the context variables used in a policy
|
|
14
|
+
*
|
|
15
|
+
* @param policy - The policy to extract variables from
|
|
16
|
+
* @returns The list of variables used in the policy
|
|
17
|
+
*/
|
|
18
|
+
export declare function getContextKeysFromPolicy(policy: Policy): string[];
|
|
19
|
+
//# sourceMappingURL=findContextKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findContextKeys.d.ts","sourceRoot":"","sources":["../../../src/context_keys/findContextKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIrD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqBzD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {} from '@actsecurity/iam-policy';
|
|
2
|
+
import { getVariablesFromString } from '../util.js';
|
|
3
|
+
import { isActualContextKey, normalizeContextKeyCase } from './contextKeys.js';
|
|
4
|
+
/**
|
|
5
|
+
* Find all the context keys in a list of policies
|
|
6
|
+
*
|
|
7
|
+
* @param policies - The list of policies to search
|
|
8
|
+
* @returns The list of valid and invalid context keys found in the policies
|
|
9
|
+
*/
|
|
10
|
+
export async function findContextKeys(policies) {
|
|
11
|
+
const rawKeys = new Set();
|
|
12
|
+
for (const policy of policies) {
|
|
13
|
+
getContextKeysFromPolicy(policy).forEach((v) => rawKeys.add(v));
|
|
14
|
+
}
|
|
15
|
+
const validKeys = new Set();
|
|
16
|
+
const invalidKeys = new Set();
|
|
17
|
+
for (const key of rawKeys) {
|
|
18
|
+
const valid = await isActualContextKey(key);
|
|
19
|
+
if (valid) {
|
|
20
|
+
const normalizedKey = await normalizeContextKeyCase(key);
|
|
21
|
+
validKeys.add(normalizedKey);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
invalidKeys.add(key);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
validKeys: Array.from(validKeys),
|
|
29
|
+
invalidKeys: Array.from(invalidKeys)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the context variables used in a policy
|
|
34
|
+
*
|
|
35
|
+
* @param policy - The policy to extract variables from
|
|
36
|
+
* @returns The list of variables used in the policy
|
|
37
|
+
*/
|
|
38
|
+
export function getContextKeysFromPolicy(policy) {
|
|
39
|
+
const variables = [];
|
|
40
|
+
for (const statement of policy.statements()) {
|
|
41
|
+
if (statement.isResourceStatement()) {
|
|
42
|
+
statement.resources().forEach((r) => {
|
|
43
|
+
variables.push(...getVariablesFromString(r.value()));
|
|
44
|
+
});
|
|
45
|
+
for (const condition of statement.conditions()) {
|
|
46
|
+
variables.push(condition.conditionKey());
|
|
47
|
+
condition.conditionValues().forEach((v) => {
|
|
48
|
+
variables.push(...getVariablesFromString(v));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return variables;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=findContextKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findContextKeys.js","sourceRoot":"","sources":["../../../src/context_keys/findContextKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,wBAAwB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAA;YACxD,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QAChC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;KACrC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpC,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,SAAS,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACtD,CAAC,CAAC,CAAA;YACF,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC/C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAA;gBACxC,SAAS,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxC,SAAS,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|