{"version":3,"sources":["webpack:////build/source/ee/app/assets/javascripts/api.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_execution/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/utils.js","webpack:///./vue_shared/security_reports/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/client/queries/shared_drawer_state.query.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/typedefs.graphql","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/utils.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/resolvers/resolvers.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/provider.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/constants.js"],"names":["Api","geoSitePath","geoSitesPath","geoSitesStatusPath","ldapGroupsPath","subscriptionPath","childEpicPath","codeReviewAnalyticsPath","groupActivityIssuesPath","groupActivityMergeRequestsPath","groupActivityNewMembersPath","countriesPath","countryStatesPath","paymentFormPath","filePath","validatePaymentMethodPath","vulnerabilityPath","vulnerabilityActionPath","vulnerabilityIssueLinksPath","descendantGroupsPath","projectDeploymentFrequencyAnalyticsPath","projectGroupsPath","issueMetricImagesPath","issueMetricSingleImagePath","environmentApprovalPath","protectedEnvironmentsPath","mrStatusCheckRetryPath","protectedEnvironmentPath","aiCompletionsPath","aiEmbeddingsPath","aiChatPath","tanukiBotAskPath","userSubscription","namespaceId","url","buildUrl","this","replace","encodeURIComponent","axios","get","ldapGroups","query","provider","callback","params","search","per_page","DEFAULT_PER_PAGE","active","then","data","createChildEpic","confidential","groupId","parentEpicId","title","post","parent_id","descendantGroups","codeReviewAnalytics","groupActivityMergeRequestsCount","groupPath","group_path","groupActivityIssuesCount","groupActivityNewMembersCount","fetchCountries","fetchStates","country","fetchPaymentFormParams","id","getFile","validatePaymentMethod","gitlabUserId","gitlab_user_id","changeVulnerabilityState","state","getGeoSites","getGeoSitesStatus","createGeoSite","site","updateGeoSite","put","removeGeoSite","delete","deploymentFrequencies","projectId","fetchIssueMetricImages","issueIid","metricImagesUrl","uploadIssueMetricImage","file","urlText","options","headers","contentTypeMultipartFormData","formData","FormData","append","updateIssueMetricImage","imageId","deleteMetricImage","individualMetricImageUrl","projectGroups","deploymentApproval","deploymentId","representedAs","approve","comment","status","represented_as","approveDeployment","rejectDeployment","protectedEnvironments","entityType","createProtectedEnvironment","protectedEnvironment","updateProtectedEnvironment","name","deleteProtectedEnvironment","requestAICompletions","model","prompt","rest","requestAIEmbeddings","input","requestAIChat","messages","requestTanukiBotResponse","q","DEFAULT_AGENT_NAME","AGENT_KEY","SCAN_EXECUTION_RULES_PIPELINE_KEY","SCAN_EXECUTION_RULES_SCHEDULE_KEY","SCAN_EXECUTION_RULES_LABELS","s__","ADD_CONDITION_LABEL","CONDITIONS_LABEL","SCAN_EXECUTION_PIPELINE_RULE","SCAN_EXECUTION_SCHEDULE_RULE","SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY","SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY","SCAN_EXECUTION_RULE_SCOPE_TYPE","SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY","SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY","SCAN_EXECUTION_RULE_PERIOD_TYPE","__","ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY","ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY","TAGS_MODE_SELECTED_ITEMS","text","value","DEFAULT_SCANNER","REPORT_TYPE_SECRET_DETECTION","SCANNER_HUMANIZED_TEMPLATE","SCANNER_HUMANIZED_TEMPLATE_ALT","POLICY_ACTION_BUILDER_TAGS_ERROR_KEY","POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY","RUNNER_TAGS_PARSING_ERROR","DAST_SCANNERS_PARSING_ERROR","ERROR_MESSAGE_MAP","isPolicyInherited","source","inherited","policyHasNamespace","Boolean","namespace","isDefaultMode","policyScope","complianceFrameworks","nodes","frameworks","excludingProjects","excluding","includingProjects","including","noScope","items","length","existingDefaultScope","_isEmpty","policyScopeHasExcludingProjects","filter","policyScopeHasIncludingProjects","policyScopeProjectsKey","INCLUDING","EXCLUDING","policyScopeHasGroups","includingGroups","policyScopeHasComplianceFrameworks","policyScopeGroups","_policyScope$includin","policyExcludingProjects","_policyScope$excludin","policyScopeComplianceFrameworks","_policyScope$complian","policyScopeProjects","pageInfo","projects","isProject","namespaceType","NAMESPACE_TYPES","PROJECT","isGroup","GROUP","isScanningReport","scanner","REPORT_TYPE_CONTAINER_SCANNING","REPORT_TYPE_DEPENDENCY_SCANNING","includes","extractPolicyContent","manifest","type","withType","defaultPayload","Object","values","POLICY_TYPE_COMPONENT_OPTIONS","map","urlParameter","isValidPolicyType","parsedYaml","safeLoad","json","extractedPolicy","policy","Array","isArray","fromYaml","approval","addIds","payload","updatedPolicy","_policy$actions","_policy$rules","actions","action","_uniqueId","rules","addIdsToPolicy","hasScheduledRule","_policyObject","policyObject","yaml","__typename","scanExecution","typeName","some","checkForPerformanceRisk","projectsCount","FEEDBACK_TYPE_ISSUE","FEEDBACK_TYPE_MERGE_REQUEST","REPORT_FILE_TYPES","ARCHIVE","TRACE","METADATA","REPORT_TYPE_SAST","REPORT_TYPE_SAST_IAC","REPORT_TYPE_DAST","REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY","REPORT_TYPE_CLUSTER_IMAGE_SCANNING","REPORT_TYPE_COVERAGE_FUZZING","REPORT_TYPE_API_FUZZING","reportTypeToSecurityReportTypeEnum","_invert","DEFAULT_ASSIGNED_POLICY_PROJECT","fullPath","branch","PAGE_SIZE","GROUP_TYPE","ROLE_TYPE","USER_TYPE","EMPTY_TYPE","MAX_SCAN_EXECUTION_ACTION_COUNT","doc","loc","definitionRefs","findOperation","i","definitions","element","forEach","def","refs","Set","collectFragmentReferences","node","kind","add","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","getPolicyType","field","_Object$values$find","find","component","removeUnnecessaryDashes","gqClient","defaultClient","mapToListboxItems","textMap","entries","Mutation","discardChanges","_","cache","updateQuery","getSharedStateQuery","sharedData","showDiscardChangesModal","formTouched","goFirstStep","profileType","mode","history","goForward","goBack","slice","resetHistory","toggleModal","setCachedPayload","cachedPayload","setFormTouched","setResetAndClose","resetAndClose","Vue","use","VueApollo","typePolicies","Query","fields","read","cachedData","createDefaultClient","resolvers","cacheConfig","typeDefs","PROJECTS_WITH_FRAMEWORK","ALL_PROJECTS_IN_GROUP","SPECIFIC_PROJECTS","ALL_PROJECTS_IN_LINKED_GROUPS","PROJECT_SCOPE_TYPE_TEXTS","PROJECT_SCOPE_TYPE_LISTBOX_ITEMS","WITHOUT_EXCEPTIONS","EXCEPT_PROJECTS","COMPLIANCE_FRAMEWORKS_KEY","PROJECTS_KEY","GROUPS_KEY","EXCEPTION_TYPE_TEXTS","GROUP_EXCEPTION_TYPE_TEXTS","EXCEPTION_TYPE_LISTBOX_ITEMS","GROUP_EXCEPTION_TYPE_LISTBOX_ITEMS","NEW_POLICY_BUTTON_TEXT","PIPELINE_EXECUTION_POLICY_TYPE_HEADER","VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER","legacyApproval","pipelineExecution","vulnerabilityManagement","POLICIES_LIST_CONTAINER_CLASS","DEFAULT_SKIP_SI_CONFIGURATION","allowed","allowlist","users"],"mappings":"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","file":"commons-mountGroupApprovalSettings-pages.groups.security.compliance_dashboards-pages.groups.security-2dfa282d.400fcdf4.chunk.js","sourcesContent":["import Api, { DEFAULT_PER_PAGE } from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { contentTypeMultipartFormData } from '~/lib/utils/headers';\n\nexport default {\n ...Api,\n geoSitePath: '/api/:version/geo_sites/:id',\n geoSitesPath: '/api/:version/geo_sites',\n geoSitesStatusPath: '/api/:version/geo_sites/status',\n ldapGroupsPath: '/api/:version/ldap/:provider/groups.json',\n subscriptionPath: '/api/:version/namespaces/:id/gitlab_subscription',\n childEpicPath: '/api/:version/groups/:id/epics',\n codeReviewAnalyticsPath: '/api/:version/analytics/code_review',\n groupActivityIssuesPath: '/api/:version/analytics/group_activity/issues_count',\n groupActivityMergeRequestsPath: '/api/:version/analytics/group_activity/merge_requests_count',\n groupActivityNewMembersPath: '/api/:version/analytics/group_activity/new_members_count',\n countriesPath: '/-/countries',\n countryStatesPath: '/-/country_states',\n paymentFormPath: '/-/subscriptions/payment_form',\n filePath: '/api/:version/projects/:id/repository/files/:file_path',\n validatePaymentMethodPath: '/-/subscriptions/validate_payment_method',\n vulnerabilityPath: '/api/:version/vulnerabilities/:id',\n vulnerabilityActionPath: '/api/:version/vulnerabilities/:id/:action',\n vulnerabilityIssueLinksPath: '/api/:version/vulnerabilities/:id/issue_links',\n descendantGroupsPath: '/api/:version/groups/:group_id/descendant_groups',\n projectDeploymentFrequencyAnalyticsPath:\n '/api/:version/projects/:id/analytics/deployment_frequency',\n projectGroupsPath: '/api/:version/projects/:id/groups.json',\n issueMetricImagesPath: '/api/:version/projects/:id/issues/:issue_iid/metric_images',\n issueMetricSingleImagePath:\n '/api/:version/projects/:id/issues/:issue_iid/metric_images/:image_id',\n environmentApprovalPath: '/api/:version/projects/:id/deployments/:deployment_id/approval',\n protectedEnvironmentsPath: '/api/:version/:entity_type/:id/protected_environments/',\n mrStatusCheckRetryPath:\n '/api/:version/projects/:id/merge_requests/:merge_request_iid/status_checks/:external_status_check_id/retry',\n protectedEnvironmentPath: '/api/:version/:entity_type/:id/protected_environments/:name',\n aiCompletionsPath: '/api/:version/ai/experimentation/openai/completions',\n aiEmbeddingsPath: '/api/:version/ai/experimentation/openai/embeddings',\n aiChatPath: '/api/:version/ai/experimentation/openai/chat/completions',\n tanukiBotAskPath: '/-/llm/tanuki_bot/ask',\n\n userSubscription(namespaceId) {\n const url = Api.buildUrl(this.subscriptionPath).replace(':id', encodeURIComponent(namespaceId));\n\n return axios.get(url);\n },\n\n ldapGroups(query, provider, callback) {\n const url = Api.buildUrl(this.ldapGroupsPath).replace(':provider', provider);\n return axios\n .get(url, {\n params: {\n search: query,\n per_page: DEFAULT_PER_PAGE,\n active: true,\n },\n })\n .then(({ data }) => {\n callback(data);\n\n return data;\n });\n },\n\n createChildEpic({ confidential, groupId, parentEpicId, title }) {\n const url = Api.buildUrl(this.childEpicPath).replace(':id', encodeURIComponent(groupId));\n\n return axios.post(url, {\n parent_id: parentEpicId,\n confidential,\n title,\n });\n },\n\n descendantGroups({ groupId, search }) {\n const url = Api.buildUrl(this.descendantGroupsPath).replace(':group_id', groupId);\n\n return axios.get(url, {\n params: {\n search,\n },\n });\n },\n\n codeReviewAnalytics(params = {}) {\n const url = Api.buildUrl(this.codeReviewAnalyticsPath);\n return axios.get(url, { params });\n },\n\n groupActivityMergeRequestsCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityMergeRequestsPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n groupActivityIssuesCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityIssuesPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n groupActivityNewMembersCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityNewMembersPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n fetchCountries() {\n const url = Api.buildUrl(this.countriesPath);\n return axios.get(url);\n },\n\n fetchStates(country) {\n const url = Api.buildUrl(this.countryStatesPath);\n return axios.get(url, { params: { country } });\n },\n\n fetchPaymentFormParams(id) {\n const url = Api.buildUrl(this.paymentFormPath);\n return axios.get(url, { params: { id } });\n },\n\n getFile(id, filePath, params = {}) {\n const url = Api.buildUrl(this.filePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':file_path', encodeURIComponent(filePath));\n\n return axios.get(url, { params });\n },\n\n validatePaymentMethod(id, gitlabUserId) {\n const url = Api.buildUrl(this.validatePaymentMethodPath);\n return axios.post(url, { id, gitlab_user_id: gitlabUserId });\n },\n\n changeVulnerabilityState(id, state) {\n const url = Api.buildUrl(this.vulnerabilityActionPath)\n .replace(':id', id)\n .replace(':action', state);\n\n return axios.post(url);\n },\n\n getGeoSites() {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.get(url);\n },\n\n getGeoSitesStatus() {\n const url = Api.buildUrl(this.geoSitesStatusPath);\n return axios.get(url);\n },\n\n createGeoSite(site) {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.post(url, site);\n },\n\n updateGeoSite(site) {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.put(`${url}/${site.id}`, site);\n },\n\n removeGeoSite(id) {\n const url = Api.buildUrl(this.geoSitePath).replace(':id', encodeURIComponent(id));\n return axios.delete(url);\n },\n\n deploymentFrequencies(projectId, params = {}) {\n const url = Api.buildUrl(this.projectDeploymentFrequencyAnalyticsPath).replace(\n ':id',\n encodeURIComponent(projectId),\n );\n\n return axios.get(url, { params });\n },\n\n fetchIssueMetricImages({ issueIid, id }) {\n const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid));\n\n return axios.get(metricImagesUrl);\n },\n\n uploadIssueMetricImage({ issueIid, id, file, url = null, urlText = null }) {\n const options = { headers: { ...contentTypeMultipartFormData } };\n const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid));\n\n // Construct multipart form data\n const formData = new FormData();\n formData.append('file', file);\n if (url) {\n formData.append('url', url);\n }\n if (urlText) {\n formData.append('url_text', urlText);\n }\n\n return axios.post(metricImagesUrl, formData, options);\n },\n\n updateIssueMetricImage({ issueIid, id, imageId, url = null, urlText = null }) {\n const metricImagesUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid))\n .replace(':image_id', encodeURIComponent(imageId));\n\n // Construct multipart form data\n const formData = new FormData();\n if (url != null) {\n formData.append('url', url);\n }\n if (urlText != null) {\n formData.append('url_text', urlText);\n }\n\n return axios.put(metricImagesUrl, formData);\n },\n\n deleteMetricImage({ issueIid, id, imageId }) {\n const individualMetricImageUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid))\n .replace(':image_id', encodeURIComponent(imageId));\n\n return axios.delete(individualMetricImageUrl);\n },\n\n projectGroups(id, options) {\n const url = Api.buildUrl(this.projectGroupsPath).replace(':id', encodeURIComponent(id));\n\n return axios\n .get(url, {\n params: {\n ...options,\n },\n })\n .then(({ data }) => {\n return data;\n });\n },\n\n deploymentApproval({ id, deploymentId, representedAs, approve, comment }) {\n const url = Api.buildUrl(this.environmentApprovalPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':deployment_id', encodeURIComponent(deploymentId));\n\n return axios.post(url, {\n status: approve ? 'approved' : 'rejected',\n represented_as: representedAs,\n comment,\n });\n },\n\n approveDeployment({ id, deploymentId, representedAs, comment }) {\n return this.deploymentApproval({ id, deploymentId, representedAs, approve: true, comment });\n },\n rejectDeployment({ id, deploymentId, representedAs, comment }) {\n return this.deploymentApproval({ id, deploymentId, approve: false, representedAs, comment });\n },\n\n protectedEnvironments(id, entityType, params = {}) {\n const url = Api.buildUrl(this.protectedEnvironmentsPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id));\n return axios.get(url, { params });\n },\n\n createProtectedEnvironment(id, entityType, protectedEnvironment) {\n const url = Api.buildUrl(this.protectedEnvironmentsPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id));\n return axios.post(url, protectedEnvironment);\n },\n\n updateProtectedEnvironment(id, entityType, protectedEnvironment) {\n const url = Api.buildUrl(this.protectedEnvironmentPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id))\n .replace(':name', encodeURIComponent(protectedEnvironment.name));\n\n return axios.put(url, protectedEnvironment);\n },\n\n deleteProtectedEnvironment(id, entityType, { name }) {\n const url = Api.buildUrl(this.protectedEnvironmentPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id))\n .replace(':name', encodeURIComponent(name));\n\n return axios.delete(url);\n },\n\n requestAICompletions({ model, prompt, ...rest }) {\n const url = Api.buildUrl(this.aiCompletionsPath);\n return axios.post(url, { model, prompt, rest });\n },\n\n requestAIEmbeddings({ model, input, ...rest }) {\n const url = Api.buildUrl(this.aiEmbeddingsPath);\n return axios.post(url, { model, input, rest });\n },\n\n requestAIChat({ model, messages, ...rest }) {\n const url = Api.buildUrl(this.aiChatPath);\n return axios.post(url, { model, messages, rest });\n },\n\n requestTanukiBotResponse(q) {\n const url = Api.buildUrl(this.tanukiBotAskPath);\n return axios.post(url, { q });\n },\n};\n","import { __, s__ } from '~/locale';\nimport { REPORT_TYPE_SECRET_DETECTION } from '~/vue_shared/security_reports/constants';\n\nexport const DEFAULT_AGENT_NAME = '';\nexport const AGENT_KEY = 'agents';\n\nexport const SCAN_EXECUTION_RULES_PIPELINE_KEY = 'pipeline';\nexport const SCAN_EXECUTION_RULES_SCHEDULE_KEY = 'schedule';\n\nexport const SCAN_EXECUTION_RULES_LABELS = {\n [SCAN_EXECUTION_RULES_PIPELINE_KEY]: s__('ScanExecutionPolicy|Triggers:'),\n [SCAN_EXECUTION_RULES_SCHEDULE_KEY]: s__('ScanExecutionPolicy|Schedules:'),\n};\n\nexport const ADD_CONDITION_LABEL = s__('ScanExecutionPolicy|Add new condition');\nexport const CONDITIONS_LABEL = s__('ScanExecutionPolicy|Conditions');\n\nexport const SCAN_EXECUTION_PIPELINE_RULE = 'pipeline';\nexport const SCAN_EXECUTION_SCHEDULE_RULE = 'schedule';\n\nexport const SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY = 'branch';\nexport const SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY = 'agent';\nexport const SCAN_EXECUTION_RULE_SCOPE_TYPE = {\n [SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY]: s__('ScanExecutionPolicy|branch'),\n [SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY]: s__('ScanExecutionPolicy|agent'),\n};\n\nexport const SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY = 'daily';\nexport const SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY = 'weekly';\nexport const SCAN_EXECUTION_RULE_PERIOD_TYPE = {\n [SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY]: __('daily'),\n [SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY]: __('weekly'),\n};\n\nexport const ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY = 'specific_tag';\nexport const ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY = 'selected_automatically';\n\nexport const TAGS_MODE_SELECTED_ITEMS = [\n {\n text: s__('ScanExecutionPolicy|has specific tag'),\n value: ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY,\n },\n {\n text: s__('ScanExecutionPolicy|selected automatically'),\n value: ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY,\n },\n];\n\nexport const DEFAULT_SCANNER = REPORT_TYPE_SECRET_DETECTION;\n\nexport const SCANNER_HUMANIZED_TEMPLATE = s__(\n 'ScanExecutionPolicy|Run a %{scan} scan with the following options:',\n);\n\nexport const SCANNER_HUMANIZED_TEMPLATE_ALT = s__(\n 'ScanExecutionPolicy|Run %{scan} with the following options:',\n);\n\nexport const POLICY_ACTION_BUILDER_TAGS_ERROR_KEY = 'tags';\nexport const POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY = 'profiles';\n\nexport const RUNNER_TAGS_PARSING_ERROR = s__(\n 'SecurityOrchestration|Non-existing tags have been detected in the policy yaml. As a result, rule mode has been disabled. To enable rule mode, remove those non-existing tags from the policy yaml.',\n);\n\nexport const DAST_SCANNERS_PARSING_ERROR = s__(\n 'SecurityOrchestration|Non-existing DAST profiles have been detected in the policy yaml. As a result, rule mode has been disabled. To enable rule mode, remove those non-existing profiles from the policy yaml.',\n);\n\nexport const ERROR_MESSAGE_MAP = {\n [POLICY_ACTION_BUILDER_TAGS_ERROR_KEY]: RUNNER_TAGS_PARSING_ERROR,\n [POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY]: DAST_SCANNERS_PARSING_ERROR,\n};\n","import { isEmpty, uniqueId } from 'lodash';\nimport { safeLoad } from 'js-yaml';\nimport {\n EXCLUDING,\n INCLUDING,\n} from 'ee/security_orchestration/components/policy_editor/scope/constants';\nimport { NAMESPACE_TYPES } from 'ee/security_orchestration/constants';\nimport {\n REPORT_TYPE_DEPENDENCY_SCANNING,\n REPORT_TYPE_CONTAINER_SCANNING,\n} from '~/vue_shared/security_reports/constants';\nimport { SCAN_EXECUTION_RULES_SCHEDULE_KEY } from 'ee/security_orchestration/components/policy_editor/scan_execution/constants';\nimport { POLICY_TYPE_COMPONENT_OPTIONS } from './constants';\n\nexport const isPolicyInherited = (source) => source?.inherited === true;\n\nexport const policyHasNamespace = (source) => Boolean(source?.namespace);\n\n/**\n * @param policyScope policy scope object on security policy\n * @returns {Boolean}\n */\nexport const isDefaultMode = (policyScope) => {\n const {\n complianceFrameworks: { nodes: frameworks } = {},\n excludingProjects: { nodes: excluding } = {},\n includingProjects: { nodes: including } = {},\n } = policyScope || {};\n\n const noScope = (items) => items?.length === 0;\n const existingDefaultScope = noScope(frameworks) && noScope(excluding) && noScope(including);\n\n return (\n policyScope === undefined ||\n policyScope === null ||\n isEmpty(policyScope) ||\n existingDefaultScope\n );\n};\n\n/**\n * Returns true if police scope has projects that are excluded from it\n * @param policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasExcludingProjects = (policyScope = {}) => {\n const { excludingProjects: { nodes: excluding = [] } = {} } = policyScope || {};\n return excluding?.filter(Boolean).length > 0;\n};\n\n/**\n * Returns true if policy scope applies to specific projects\n * @param policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasIncludingProjects = (policyScope = {}) => {\n const { includingProjects: { nodes: including = [] } = {} } = policyScope || {};\n return including?.filter(Boolean).length > 0;\n};\n\n/**\n * Based on existence excluding or including projects on policy scope\n * return appropriate key\n * @param policyScope policyScope policy scope object on security policy\n * @returns {string|INCLUDING|EXCLUDING}\n */\nexport const policyScopeProjectsKey = (policyScope = {}) => {\n return policyScopeHasIncludingProjects(policyScope) ? INCLUDING : EXCLUDING;\n};\n\n/**\n * Based on existence including groups on policy scope\n * return appropriate key\n * @param {Object} policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasGroups = (policyScope = {}) => {\n const { includingGroups: { nodes = [] } = {} } = policyScope || {};\n return nodes?.filter(Boolean).length > 0;\n};\n\n/**\n * Number of linked to policy scope projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Number}\n */\nexport const policyScopeProjectLength = (policyScope = {}) => {\n return (\n policyScope?.[`${policyScopeProjectsKey(policyScope)}Projects`]?.nodes?.filter(Boolean)\n .length || 0\n );\n};\n\n/**\n * Check if policy scope has compliance frameworks\n * @param policyScope policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasComplianceFrameworks = (policyScope = {}) => {\n const { complianceFrameworks: { nodes = [] } = {} } = policyScope || {};\n return nodes?.filter(Boolean).length > 0;\n};\n\n/**\n * Extract ids from including groups\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyScopeGroups = (policyScope = {}) => {\n return policyScope?.includingGroups?.nodes || [];\n};\n\n/**\n * Extract ids from excluding projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyExcludingProjects = (policyScope = {}) => {\n return policyScope?.excludingProjects?.nodes || [];\n};\n\n/**\n * Extract ids from compliance frameworks\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyScopeComplianceFrameworks = (policyScope = {}) => {\n return policyScope?.complianceFrameworks?.nodes || [];\n};\n\n/**\n * Extract ids from projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Object}\n */\nexport const policyScopeProjects = (policyScope = {}) => {\n const { nodes = [], pageInfo = {} } =\n policyScope?.[`${policyScopeProjectsKey(policyScope)}Projects`] || {};\n return {\n projects: nodes,\n pageInfo,\n };\n};\n\n/**\n * Check if namespace is a project type\n * @param namespaceType\n * @returns {boolean}\n */\nexport const isProject = (namespaceType) => namespaceType === NAMESPACE_TYPES.PROJECT;\n\n/**\n * Check if namespace is a group type\n * @param namespaceType\n * @returns {boolean}\n */\nexport const isGroup = (namespaceType) => namespaceType === NAMESPACE_TYPES.GROUP;\n\n/**\n * Returns if scanner has \"scanning\" in it\n * @param {string} scanner\n * @returns {boolean}\n */\nexport const isScanningReport = (scanner) =>\n [REPORT_TYPE_CONTAINER_SCANNING, REPORT_TYPE_DEPENDENCY_SCANNING].includes(scanner);\n\nconst isValidPolicyType = (type) => {\n const validTypes = Object.values(POLICY_TYPE_COMPONENT_OPTIONS).map(\n ({ urlParameter }) => urlParameter,\n );\n return validTypes.includes(type);\n};\n\n/**\n * Policy type, in this case, policy type is a wrapper\n * for a policy content. This method extracts policy content from\n * a wrapper\n * @param manifest policy in yaml format\n * @param type policy type\n * @param withType whether include or not include type property in a policy body\n * @returns {*|{policy: {}}}\n */\nexport const extractPolicyContent = ({ manifest, type, withType = false }) => {\n const defaultPayload = {};\n\n try {\n if (!isValidPolicyType(type)) {\n return defaultPayload;\n }\n\n const parsedYaml = safeLoad(manifest, { json: true });\n\n /**\n * Remove type property from yaml\n * Type now is a parent property\n */\n const hasLegacyTypeRootProperty = 'type' in parsedYaml;\n if (hasLegacyTypeRootProperty) {\n delete parsedYaml.type;\n }\n\n const hasNewTypeRootProperty = type in parsedYaml;\n const extractedPolicy = hasNewTypeRootProperty ? parsedYaml[type] : parsedYaml;\n\n const isArray = Array.isArray(extractedPolicy);\n const policy = isArray ? extractedPolicy[0] : extractedPolicy;\n\n if (withType) {\n policy.type = type;\n }\n\n return policy || {};\n } catch {\n return defaultPayload;\n }\n};\n\nexport const addIdsToPolicy = (policy) => {\n const updatedPolicy = { ...policy };\n\n if (updatedPolicy.actions) {\n updatedPolicy.actions = policy.actions?.map((action) => ({\n ...action,\n id: uniqueId('action_'),\n }));\n }\n\n if (updatedPolicy.rules) {\n updatedPolicy.rules = policy.rules?.map((action) => ({ ...action, id: uniqueId('rule_') }));\n }\n\n return updatedPolicy;\n};\n\n/**\n * Construct a policy object expected by the policy editor from a yaml manifest.\n * @param {Object} options\n * @param {String} options.manifest a security policy in yaml form\n * @returns {Object} security policy as JS object\n */\nexport const fromYaml = ({\n manifest,\n type = POLICY_TYPE_COMPONENT_OPTIONS.approval.urlParameter,\n addIds = true,\n}) => {\n try {\n const payload = extractPolicyContent({\n manifest,\n type,\n withType: true,\n });\n\n return addIds ? addIdsToPolicy(payload) : payload;\n } catch {\n /**\n * Catch parsing error of safeLoad\n */\n return {};\n }\n};\n\n/**\n * Check if the policy is a scan execution policy and has a scheduled rule\n * @param {Object} policy\n * @returns {Boolean}\n */\nexport const hasScheduledRule = (policy) => {\n let policyObject = policy;\n\n // Handle policy list policies\n if (\n policyObject.yaml &&\n // eslint-disable-next-line no-underscore-dangle\n policyObject.__typename === POLICY_TYPE_COMPONENT_OPTIONS.scanExecution.typeName\n ) {\n policyObject = fromYaml({ manifest: policyObject.yaml });\n }\n\n return policyObject?.rules?.some(({ type }) => type === SCAN_EXECUTION_RULES_SCHEDULE_KEY);\n};\n\nexport const checkForPerformanceRisk = ({ policy, namespaceType, projectsCount }) => {\n const PROJECTS_COUNT_PERFORMANCE_LIMIT = 1000;\n\n return (\n hasScheduledRule(policy) &&\n isGroup(namespaceType) &&\n projectsCount > PROJECTS_COUNT_PERFORMANCE_LIMIT\n );\n};\n","import { invert } from 'lodash';\n\nexport const FEEDBACK_TYPE_DISMISSAL = 'dismissal';\nexport const FEEDBACK_TYPE_ISSUE = 'issue';\nexport const FEEDBACK_TYPE_MERGE_REQUEST = 'merge_request';\n\n/**\n * Security artifact file types\n */\nexport const REPORT_FILE_TYPES = {\n ARCHIVE: 'ARCHIVE',\n TRACE: 'TRACE',\n METADATA: 'METADATA',\n};\n\n/**\n * Security scan report types, as provided by the backend.\n */\nexport const REPORT_TYPE_SAST = 'sast';\nexport const REPORT_TYPE_SAST_IAC = 'sast_iac';\nexport const REPORT_TYPE_DAST = 'dast';\nexport const REPORT_TYPE_DAST_PROFILES = 'dast_profiles';\nexport const REPORT_TYPE_SECRET_DETECTION = 'secret_detection';\nexport const REPORT_TYPE_DEPENDENCY_SCANNING = 'dependency_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING = 'container_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY = 'container_scanning_for_registry';\nexport const REPORT_TYPE_CLUSTER_IMAGE_SCANNING = 'cluster_image_scanning';\nexport const REPORT_TYPE_COVERAGE_FUZZING = 'coverage_fuzzing';\nexport const REPORT_TYPE_CORPUS_MANAGEMENT = 'corpus_management';\nexport const REPORT_TYPE_API_FUZZING = 'api_fuzzing';\n\n/**\n * SecurityReportTypeEnum values for use with GraphQL.\n *\n * These should correspond to the lowercase security scan report types.\n */\nexport const SECURITY_REPORT_TYPE_ENUM_SAST = 'SAST';\nexport const SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION = 'SECRET_DETECTION';\n\n/**\n * A mapping from security scan report types to SecurityReportTypeEnum values.\n */\nexport const reportTypeToSecurityReportTypeEnum = {\n [REPORT_TYPE_SAST]: SECURITY_REPORT_TYPE_ENUM_SAST,\n [REPORT_TYPE_SECRET_DETECTION]: SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION,\n};\n\n/**\n * A mapping from SecurityReportTypeEnum values to security scan report types.\n */\nexport const securityReportTypeEnumToReportType = invert(reportTypeToSecurityReportTypeEnum);\n","export const DEFAULT_ASSIGNED_POLICY_PROJECT = { fullPath: '', branch: '' };\n\nexport const PAGE_SIZE = 20;\n\nexport const NAMESPACE_TYPES = {\n PROJECT: 'project',\n GROUP: 'group',\n};\n\nexport const GROUP_TYPE = 'group';\n\nexport const ROLE_TYPE = 'role';\n\nexport const USER_TYPE = 'user';\n\nexport const EMPTY_TYPE = 'empty';\n\nexport const MAX_SCAN_EXECUTION_ACTION_COUNT = 10;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"},\"arguments\":[]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":214}};\n doc.loc.source = {\"body\":\"query sharedData {\\n sharedData @client {\\n showDiscardChangesModal\\n formTouched\\n history {\\n profileType\\n mode\\n }\\n cachedPayload {\\n profileType\\n mode\\n }\\n resetAndClose\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"sharedData\"] = oneQuery(doc, \"sharedData\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayloadInput\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SharedData\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"}}}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeExtension\",\"name\":{\"kind\":\"Name\",\"value\":\"Query\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SharedData\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeExtension\",\"name\":{\"kind\":\"Name\",\"value\":\"Mutation\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"discardChanges\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goBack\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goFirstStep\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goForward\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetHistory\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setCachedPayload\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayloadInput\"}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setFormTouched\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setResetAndClose\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"toggleModal\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]}]}],\"loc\":{\"start\":0,\"end\":815}};\n doc.loc.source = {\"body\":\"type CachedPayload {\\n profileType: String!\\n mode: String!\\n}\\n\\ninput CachedPayloadInput {\\n profileType: String!\\n mode: String!\\n}\\n\\ntype SharedData {\\n showDiscardChangesModal: Boolean\\n formTouched: Boolean\\n history: [CachedPayload!]!\\n cachedPayload: CachedPayload!\\n resetAndClose: Boolean\\n}\\n\\nextend type Query {\\n sharedData: SharedData\\n}\\n\\nextend type Mutation {\\n discardChanges: LocalErrors\\n goBack: LocalErrors\\n goFirstStep(profileType: String!, mode: String!): LocalErrors\\n goForward(profileType: String!, mode: String!): LocalErrors\\n resetHistory: LocalErrors\\n setCachedPayload(cachedPayload: CachedPayloadInput): LocalErrors\\n setFormTouched(formTouched: Boolean!): LocalErrors\\n setResetAndClose(resetAndClose: Boolean!): LocalErrors\\n toggleModal(showDiscardChangesModal: Boolean!): LocalErrors\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n module.exports = doc;\n \n","import { defaultClient } from 'ee/vue_shared/security_configuration/graphql/provider';\nimport { POLICY_TYPE_COMPONENT_OPTIONS } from './components/constants';\n\n/**\n * Get a property from a policy's typename\n * @param {String} typeName policy's typename from GraphQL\n * @param {String} field\n * @returns {String|null} policy property if available\n */\nexport const getPolicyType = (typeName = '', field = 'value') => {\n return Object.values(POLICY_TYPE_COMPONENT_OPTIONS).find(\n (component) => component.typeName === typeName,\n )?.[field];\n};\n\n/**\n * Removes initial line dashes from a policy YAML that is received from the API, which\n * is not required for the user.\n * @param {String} manifest the policy from the API request\n * @returns {String} the policy without the initial dashes or the initial string\n */\nexport const removeUnnecessaryDashes = (manifest) => {\n return manifest.replace('---\\n', '');\n};\n\n/**\n * Create GraphQL Client for security policies\n */\nexport const gqClient = defaultClient;\n\n/**\n * Transforms a key-value mapping into an array of objects suitable for use with\n * GlCollapsibleListbox component.\n *\n * @param {Object} textMap - An object where keys represent values and values represent display text.\n * @returns {Array} An array of objects, each containing 'value' and 'text' properties.\n *\n * @example\n * const mapping = { 'key1': 'Text 1', 'key2': 'Text 2' };\n * const listBoxItems = mapToListboxItems(mapping);\n * // returns: [{ value: 'key1', text: 'Text 1' }, { value: 'key2', text: 'Text 2' }]\n */\n\nexport const mapToListboxItems = (textMap) =>\n Object.entries(textMap).map(([value, text]) => ({\n value,\n text,\n }));\n","import getSharedStateQuery from '../client/queries/shared_drawer_state.query.graphql';\n\nexport default {\n Mutation: {\n discardChanges(_, __, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n showDiscardChangesModal: false,\n formTouched: false,\n },\n }));\n },\n goFirstStep(_, { profileType, mode }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n history: [{ profileType, mode }],\n },\n }));\n },\n goForward(_, { profileType, mode }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n history: [...sharedData.history, { profileType, mode }],\n },\n }));\n },\n goBack(_, __, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n history: sharedData.history.slice(0, -1),\n },\n }));\n },\n resetHistory(_, __, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n history: [],\n },\n }));\n },\n toggleModal(_, { showDiscardChangesModal }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n showDiscardChangesModal,\n },\n }));\n },\n setCachedPayload(_, { cachedPayload = { profileType: '', mode: '' } }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n cachedPayload,\n },\n }));\n },\n setFormTouched(_, { formTouched }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n formTouched,\n },\n }));\n },\n setResetAndClose(_, { resetAndClose }, { cache }) {\n cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n sharedData: {\n ...sharedData,\n resetAndClose,\n },\n }));\n },\n },\n};\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\nimport resolvers from './resolvers/resolvers';\nimport typeDefs from './typedefs.graphql';\n\nVue.use(VueApollo);\n\nexport const typePolicies = {\n Query: {\n fields: {\n sharedData: {\n read(cachedData) {\n return (\n cachedData || {\n showDiscardChangesModal: false,\n formTouched: false,\n history: [],\n cachedPayload: {\n __typename: 'CachedPayload',\n profileType: '',\n mode: '',\n },\n resetAndClose: false,\n __typename: 'SharedData',\n }\n );\n },\n },\n },\n },\n};\n\nexport const defaultClient = createDefaultClient(resolvers, {\n cacheConfig: { typePolicies },\n typeDefs,\n});\n\nexport default new VueApollo({\n defaultClient,\n});\n","import { s__ } from '~/locale';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const PROJECTS_WITH_FRAMEWORK = 'projects_with_framework';\nexport const ALL_PROJECTS_IN_GROUP = 'all_projects_in_group';\nexport const SPECIFIC_PROJECTS = 'specific_projects';\nexport const ALL_PROJECTS_IN_LINKED_GROUPS = 'all_projects_in_linked_groups';\n\nexport const PROJECT_SCOPE_TYPE_TEXTS = {\n [PROJECTS_WITH_FRAMEWORK]: s__('SecurityOrchestration|projects with compliance frameworks'),\n [ALL_PROJECTS_IN_GROUP]: s__('SecurityOrchestration|all projects in this group'),\n [SPECIFIC_PROJECTS]: s__('SecurityOrchestration|specific projects'),\n [ALL_PROJECTS_IN_LINKED_GROUPS]: s__('SecurityOrchestration|all projects in the linked groups'),\n};\n\nexport const PROJECT_SCOPE_TYPE_LISTBOX_ITEMS = mapToListboxItems(PROJECT_SCOPE_TYPE_TEXTS);\n\nexport const WITHOUT_EXCEPTIONS = 'without_exceptions';\nexport const EXCEPT_PROJECTS = 'except_projects';\nexport const EXCEPT_GROUPS = 'except_groups';\nexport const INCLUDING = 'including';\nexport const EXCLUDING = 'excluding';\nexport const COMPLIANCE_FRAMEWORKS_KEY = 'compliance_frameworks';\nexport const PROJECTS_KEY = 'projects';\nexport const GROUPS_KEY = 'groups';\n\nexport const EXCEPTION_TYPE_TEXTS = {\n [WITHOUT_EXCEPTIONS]: s__('SecurityOrchestration|without exceptions'),\n [EXCEPT_PROJECTS]: s__('SecurityOrchestration|except projects'),\n};\n\nexport const GROUP_EXCEPTION_TYPE_TEXTS = {\n [WITHOUT_EXCEPTIONS]: s__('SecurityOrchestration|without exceptions'),\n [EXCEPT_GROUPS]: s__('SecurityOrchestration|except groups'),\n};\n\nexport const EXCEPTION_TYPE_LISTBOX_ITEMS = mapToListboxItems(EXCEPTION_TYPE_TEXTS);\nexport const GROUP_EXCEPTION_TYPE_LISTBOX_ITEMS = mapToListboxItems(GROUP_EXCEPTION_TYPE_TEXTS);\n","import { s__ } from '~/locale';\n\nexport const NEW_POLICY_BUTTON_TEXT = s__('SecurityOrchestration|New policy');\nexport const PIPELINE_EXECUTION_POLICY_TYPE_HEADER = s__(\n 'SecurityOrchestration|Pipeline execution',\n);\nexport const VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER = s__(\n 'SecurityOrchestration|Vulnerability management',\n);\n\nexport const POLICY_TYPE_COMPONENT_OPTIONS = {\n scanExecution: {\n component: 'scan-execution-policy-editor',\n text: s__('SecurityOrchestration|Scan execution'),\n typeName: 'ScanExecutionPolicy',\n urlParameter: 'scan_execution_policy',\n value: 'scanExecution',\n },\n legacyApproval: {\n component: 'scan-result-policy-editor',\n text: s__('SecurityOrchestration|Merge request approval'),\n typeName: 'ScanResultPolicy',\n urlParameter: 'approval_policy',\n value: 'approval',\n },\n approval: {\n // used by Group.approvalPolicies\n component: 'scan-result-policy-editor',\n text: s__('SecurityOrchestration|Merge request approval'),\n typeName: 'ApprovalPolicy',\n urlParameter: 'approval_policy',\n value: 'approval',\n },\n pipelineExecution: {\n component: 'pipeline-execution-policy-editor',\n text: PIPELINE_EXECUTION_POLICY_TYPE_HEADER,\n typeName: 'PipelineExecutionPolicy',\n urlParameter: 'pipeline_execution_policy',\n value: 'pipeline',\n },\n vulnerabilityManagement: {\n component: 'vulnerability-management-policy-editor',\n text: VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER,\n typeName: 'VulnerabilityManagementPolicy',\n urlParameter: 'vulnerability_management_policy',\n value: 'vulnerabilityManagement',\n },\n};\n\nexport const POLICIES_LIST_CONTAINER_CLASS = '.js-security-policies-container-wrapper';\n\nexport const DEFAULT_SKIP_SI_CONFIGURATION = { allowed: true, allowlist: { users: [] } };\n"],"sourceRoot":""}