Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
{"version":3,"file":"b6fe2bb5-7355.bc9b2c3113b7782e0d9e.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/indices/Types.ts","webpack://graylog-web-interface/./src/components/streams/StreamForm.jsx","webpack://graylog-web-interface/./src/components/streams/CreateStreamButton.jsx","webpack://graylog-web-interface/./src/components/streamrules/CollapsibleStreamRuleList.jsx","webpack://graylog-web-interface/./src/components/streams/StreamThroughput.jsx","webpack://graylog-web-interface/./src/components/streams/StreamMetaData.jsx","webpack://graylog-web-interface/./src/components/streams/StreamControls.jsx","webpack://graylog-web-interface/./src/components/streams/StreamStateBadge.jsx","webpack://graylog-web-interface/./src/components/streams/Stream.jsx","webpack://graylog-web-interface/./src/components/streams/StreamList.jsx","webpack://graylog-web-interface/./src/components/streams/StreamComponent.jsx","webpack://graylog-web-interface/./src/pages/StreamsPage.jsx","webpack://graylog-web-interface/./src/stores/indices/IndexSetsStore.ts"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\n\nexport type IndicesConfigurationActionsType = {\n loadRotationStrategies: () => Promise,\n loadRetentionStrategies: () => Promise,\n};\nexport type IndicesConfigurationStoreState = {\n activeRotationConfig: any,\n rotationStrategies: any,\n activeRetentionConfig: any,\n retentionStrategies: any,\n retentionStrategiesContext: RetentionStrategyContext,\n}\nexport type SizeBasedRotationStrategyConfig = {\n type: string,\n max_size: number,\n}\nexport type MessageCountRotationStrategyConfig = {\n type: string,\n max_docs_per_index: number,\n}\nexport type TimeBasedRotationStrategyConfig = {\n type: string,\n rotation_period: string,\n max_rotation_period: string,\n rotate_empty_index_set: boolean,\n}\nexport type RotationStrategyConfig = SizeBasedRotationStrategyConfig | MessageCountRotationStrategyConfig | TimeBasedRotationStrategyConfig;\nexport type RetentionStrategyConfig = {\n type: string,\n max_number_of_indices?: number,\n index_action?: string,\n}\nexport interface JsonSchemaStringPropertyType {\n type: string,\n}\nexport interface JsonSchemaIndexActionPropertyType {\n type: string,\n enum: Array,\n}\nexport interface JsonSchemaBooleanPropertyType {\n type: string;\n}\nexport interface RotationProperties {\n rotation_period?: JsonSchemaStringPropertyType,\n max_rotation_period?: JsonSchemaStringPropertyType,\n type: JsonSchemaStringPropertyType,\n max_size?: JsonSchemaStringPropertyType,\n rotate_empty_index_set: JsonSchemaBooleanPropertyType,\n}\nexport interface RotationJsonSchema {\n type: string,\n id: string,\n properties: RotationProperties,\n}\nexport interface RetentionProperties {\n max_number_of_indices: JsonSchemaStringPropertyType,\n type: JsonSchemaStringPropertyType,\n index_action?: JsonSchemaIndexActionPropertyType,\n}\nexport interface RetentionJsonSchema {\n type: string,\n id: string,\n properties: RetentionProperties,\n}\nexport interface RotationStrategy {\n type: string,\n default_config: RotationStrategyConfig,\n json_schema: RotationJsonSchema,\n}\nexport interface RetentionStrategy {\n type: string,\n default_config: RetentionStrategyConfig,\n json_schema: RetentionJsonSchema,\n}\nexport interface RetentionStrategyContext {\n max_index_retention_period?: string,\n}\nexport interface RotationStrategyResponse {\n total: number,\n strategies: Array,\n}\nexport interface RetentionStrategyResponse {\n total: number,\n strategies: Array,\n context: RetentionStrategyContext,\n}\nexport const RetentionStrategiesContextPropType = PropTypes.shape({\n max_index_retention_period: PropTypes.string,\n});\nexport const SizeBasedRotationStrategyConfigPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n max_size: PropTypes.number.isRequired,\n});\nexport const MessageCountRotationStrategyConfigPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n max_docs_per_index: PropTypes.number.isRequired,\n});\nexport const TimeBasedRotationStrategyConfigPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n rotation_period: PropTypes.string.isRequired,\n max_rotation_period: PropTypes.string,\n rotate_empty_index_set: PropTypes.bool,\n});\n\nexport const RotationStrategyConfigPropType = PropTypes.oneOfType([\n SizeBasedRotationStrategyConfigPropType,\n MessageCountRotationStrategyConfigPropType,\n TimeBasedRotationStrategyConfigPropType,\n]);\n\nexport const IndexActionPropType = PropTypes.string;\nexport const RetentionStrategyConfigPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n max_number_of_indices: PropTypes.number,\n index_action: PropTypes.string,\n});\n\nexport const JsonSchemaStringPropertyTypePropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n});\nexport const JsonSchemaIndexActionPropertyTypePropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n enum: PropTypes.arrayOf(PropTypes.string).isRequired,\n});\nexport const RotationPropertiesPropType = PropTypes.exact({\n rotation_period: JsonSchemaStringPropertyTypePropType,\n max_rotation_period: JsonSchemaStringPropertyTypePropType,\n type: JsonSchemaStringPropertyTypePropType.isRequired,\n max_size: JsonSchemaStringPropertyTypePropType,\n max_docs_per_index: JsonSchemaStringPropertyTypePropType,\n rotate_empty_index_set: JsonSchemaStringPropertyTypePropType,\n});\nexport const RotationJsonSchemaPropType = PropTypes.exact({\n type: PropTypes.string,\n id: PropTypes.string,\n properties: RotationPropertiesPropType.isRequired,\n});\nexport const RetentionPropertiesPropType = PropTypes.exact({\n max_number_of_indices: JsonSchemaStringPropertyTypePropType.isRequired,\n type: JsonSchemaStringPropertyTypePropType.isRequired,\n index_action: JsonSchemaIndexActionPropertyTypePropType,\n});\nexport const RetentionJsonSchemaPropType = PropTypes.exact({\n type: PropTypes.string,\n id: PropTypes.string,\n properties: RetentionPropertiesPropType,\n});\nexport const RotationStrategyPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n default_config: RotationStrategyConfigPropType.isRequired,\n json_schema: RotationJsonSchemaPropType.isRequired,\n});\nexport const RetentionStrategyPropType = PropTypes.exact({\n type: PropTypes.string.isRequired,\n default_config: RetentionStrategyConfigPropType.isRequired,\n json_schema: RetentionJsonSchemaPropType.isRequired,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport BootstrapModalForm from 'components/bootstrap/BootstrapModalForm';\nimport { Input } from 'components/bootstrap';\nimport { Select, Spinner } from 'components/common';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { IndexSetsActions } from 'stores/indices/IndexSetsStore';\n\nconst _getValuesFromProps = (props) => {\n let defaultIndexSetId = props.stream.index_set_id;\n\n if (!defaultIndexSetId && props.indexSets && props.indexSets.length > 0) {\n const defaultIndexSet = props.indexSets.find((indexSet) => indexSet.default);\n\n if (defaultIndexSet) {\n defaultIndexSetId = defaultIndexSet.id;\n }\n }\n\n return {\n title: props.stream.title,\n description: props.stream.description,\n removeMatchesFromDefaultStream: props.stream.remove_matches_from_default_stream,\n indexSetId: defaultIndexSetId,\n };\n};\n\nclass StreamForm extends React.Component {\n static propTypes = {\n onSubmit: PropTypes.func.isRequired,\n stream: PropTypes.object,\n title: PropTypes.string.isRequired,\n indexSets: PropTypes.array.isRequired,\n };\n\n static defaultProps = {\n stream: {\n title: '',\n description: '',\n remove_matches_from_default_stream: false,\n },\n };\n\n constructor(props) {\n super(props);\n\n this.state = _getValuesFromProps(props);\n this.modal = undefined;\n }\n\n _resetValues = () => {\n this.setState(_getValuesFromProps(this.props));\n };\n\n _onSubmit = () => {\n const { title, description, removeMatchesFromDefaultStream, indexSetId } = this.state;\n const { onSubmit, stream } = this.props;\n\n onSubmit(stream.id,\n {\n title,\n description,\n remove_matches_from_default_stream: removeMatchesFromDefaultStream,\n index_set_id: indexSetId,\n });\n\n this.modal.close();\n };\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n open = () => {\n this._resetValues();\n IndexSetsActions.list(false);\n this.modal.open();\n };\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n close = () => {\n this.modal.close();\n };\n\n _formatSelectOptions = () => {\n const { indexSets } = this.props;\n\n return indexSets.filter((indexSet) => indexSet.can_be_default).map((indexSet) => {\n return { value: indexSet.id, label: indexSet.title };\n });\n };\n\n _onIndexSetSelect = (selection) => {\n this.setState({ indexSetId: selection });\n };\n\n handleChange = (event) => {\n const change = {};\n\n change[event.target.name] = FormsUtils.getValueFromInput(event.target);\n this.setState(change);\n };\n\n _indexSetSelect = () => {\n const { indexSetId } = this.state;\n const { indexSets } = this.props;\n\n if (indexSets) {\n return (\n \n \n \n );\n }\n\n return Loading index sets...;\n };\n\n render() {\n const { title, description, removeMatchesFromDefaultStream } = this.state;\n const { title: propTitle } = this.props;\n\n return (\n { this.modal = c; }}\n title={propTitle}\n onSubmitForm={this._onSubmit}\n submitButtonText=\"Save\">\n \n \n {this._indexSetSelect()}\n Remove messages that match this stream from the ‘All messages’ stream which is assigned to every message by default.} />\n \n );\n }\n}\n\nexport default StreamForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Button } from 'components/bootstrap';\nimport StreamForm from 'components/streams/StreamForm';\n\nclass CreateStreamButton extends React.Component {\n static propTypes = {\n buttonText: PropTypes.string,\n bsStyle: PropTypes.string,\n bsSize: PropTypes.string,\n className: PropTypes.string,\n onSave: PropTypes.func.isRequired,\n indexSets: PropTypes.array.isRequired,\n };\n\n static defaultProps = {\n buttonText: 'Create Stream',\n bsSize: undefined,\n bsStyle: undefined,\n className: undefined,\n };\n\n onClick = () => {\n this.streamForm.open();\n };\n\n render() {\n const { bsSize, bsStyle, buttonText, className, indexSets, onSave } = this.props;\n\n return (\n \n \n { this.streamForm = streamForm; }}\n title=\"Creating Stream\"\n indexSets={indexSets}\n onSubmit={onSave} />\n \n );\n }\n}\n\nexport default CreateStreamButton;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { Collapse } from 'components/bootstrap';\nimport StreamRuleList from 'components/streamrules/StreamRuleList';\n\nconst RuleWrapper = styled.div`\n margin: 12px 0 0;\n`;\n\nconst CollapsibleStreamRuleList = ({ expanded, permissions, stream, streamRuleTypes }) => {\n return (\n \n \n \n \n \n );\n};\n\nCollapsibleStreamRuleList.propTypes = {\n expanded: PropTypes.bool,\n permissions: PropTypes.array.isRequired,\n stream: PropTypes.object.isRequired,\n streamRuleTypes: PropTypes.array.isRequired,\n};\n\nCollapsibleStreamRuleList.defaultProps = {\n expanded: false,\n};\n\nexport default CollapsibleStreamRuleList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Spinner } from 'components/common';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst StreamThroughput = createReactClass({\n displayName: 'StreamThroughput',\n\n propTypes: {\n streamId: PropTypes.string.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n UNSAFE_componentWillMount() {\n MetricsActions.addGlobal(this._metricName());\n },\n\n componentWillUnmount() {\n MetricsActions.removeGlobal(this._metricName());\n },\n\n _metricName() {\n return `org.graylog2.plugin.streams.Stream.${this.props.streamId}.incomingMessages.1-sec-rate`;\n },\n\n _calculateThroughput() {\n return Object.keys(this.state.metrics)\n .map((nodeId) => {\n const metricDefinition = this.state.metrics[nodeId][this._metricName()];\n\n return metricDefinition !== undefined ? metricDefinition.metric.value : 0;\n })\n .reduce((throughput1, throughput2) => throughput1 + throughput2, 0);\n },\n\n render() {\n if (!this.state.metrics) {\n return ;\n }\n\n return (\n {this._calculateThroughput()} messages/second\n );\n },\n});\n\nexport default StreamThroughput;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport CollapsibleStreamRuleList from 'components/streamrules/CollapsibleStreamRuleList';\nimport { Pluralize } from 'components/common';\nimport { Button } from 'components/bootstrap';\n\nimport StreamThroughput from './StreamThroughput';\n\nconst StreamMetaDataWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst StreamMetaData = ({ isDefaultStream, stream, streamRuleTypes, permissions }) => {\n let verbalMatchingType;\n const [expanded, setExpanded] = useState(false);\n const toggleText = expanded ? 'Hide' : 'Show';\n\n if (stream.is_default) {\n return 'The default stream contains all messages.';\n }\n\n if (stream.rules.length === 0) {\n return 'No configured rules.';\n }\n\n switch (stream.matching_type) {\n case 'OR': verbalMatchingType = 'at least one'; break;\n default:\n case 'AND': verbalMatchingType = 'all'; break;\n }\n\n const _onHandleToggle = () => {\n setExpanded(!expanded);\n };\n\n return (\n <>\n \n .\n\n \n Must match {verbalMatchingType} of the {stream.rules.length} configured stream \n .\n \n\n {!isDefaultStream && (\n \n )}\n \n\n {!isDefaultStream && (\n \n )}\n >\n );\n};\n\nStreamMetaData.propTypes = {\n isDefaultStream: PropTypes.bool,\n stream: PropTypes.shape({\n id: PropTypes.string,\n is_default: PropTypes.bool,\n rules: PropTypes.array,\n matching_type: PropTypes.string,\n }).isRequired,\n streamRuleTypes: PropTypes.arrayOf(PropTypes.object).isRequired,\n permissions: PropTypes.array.isRequired,\n};\n\nStreamMetaData.defaultProps = {\n isDefaultStream: false,\n};\n\nexport default StreamMetaData;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\n\nimport Routes from 'routing/Routes';\nimport { DropdownButton, MenuItem } from 'components/bootstrap';\nimport { IfPermitted } from 'components/common';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\nimport { StartpageStore } from 'stores/users/StartpageStore';\n\nimport StreamForm from './StreamForm';\n\nconst StreamControls = createReactClass({\n displayName: 'StreamControls',\n\n propTypes: {\n stream: PropTypes.object.isRequired,\n user: PropTypes.object.isRequired,\n indexSets: PropTypes.array.isRequired,\n onDelete: PropTypes.func.isRequired,\n onClone: PropTypes.func.isRequired,\n onQuickAdd: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired,\n isDefaultStream: PropTypes.bool,\n disabled: PropTypes.bool,\n },\n\n mixins: [PermissionsMixin],\n\n getDefaultProps() {\n return {\n disabled: false,\n isDefaultStream: false,\n };\n },\n\n _onDelete() {\n const { onDelete, stream } = this.props;\n onDelete(stream);\n },\n\n _onEdit() {\n this.streamForm.open();\n },\n\n _onClone() {\n this.cloneForm.open();\n },\n\n _onCloneSubmit(_, stream) {\n const { onClone, stream: propsStream } = this.props;\n onClone(propsStream.id, stream);\n },\n\n _onQuickAdd() {\n const { onQuickAdd, stream } = this.props;\n onQuickAdd(stream.id);\n },\n\n _setStartpage() {\n const { user, stream } = this.props;\n StartpageStore.set(user.id, 'stream', stream.id);\n },\n\n render() {\n const { stream, disabled, isDefaultStream, user, onUpdate, indexSets } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n { this.streamForm = streamForm; }} title=\"Editing Stream\" onSubmit={onUpdate} stream={stream} indexSets={indexSets} />\n { this.cloneForm = cloneForm; }} title=\"Cloning Stream\" onSubmit={this._onCloneSubmit} indexSets={indexSets} />\n \n );\n },\n});\n\nexport default StreamControls;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Label } from 'components/bootstrap';\n\nclass StreamStateBadge extends React.Component {\n static propTypes = {\n stream: PropTypes.object.isRequired,\n };\n\n render() {\n if (this.props.stream.is_default) {\n return ;\n }\n\n if (!this.props.stream.disabled) {\n return null;\n }\n\n return ;\n }\n}\n\nexport default StreamStateBadge;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport EntityShareModal from 'components/permissions/EntityShareModal';\nimport { Link, LinkContainer } from 'components/common/router';\nimport { Button, Tooltip } from 'components/bootstrap';\nimport { Icon, OverlayElement, ShareButton } from 'components/common';\nimport StreamRuleForm from 'components/streamrules/StreamRuleForm';\nimport { isAnyPermitted, isPermitted } from 'util/PermissionsMixin';\nimport UserNotification from 'util/UserNotification';\nimport Routes from 'routing/Routes';\nimport StreamsStore from 'stores/streams/StreamsStore';\nimport { StreamRulesStore } from 'stores/streams/StreamRulesStore';\n\nimport StreamMetaData from './StreamMetaData';\nimport StreamControls from './StreamControls';\nimport StreamStateBadge from './StreamStateBadge';\n\nconst StreamListItem = styled.li(({ theme }) => css`\n display: block;\n padding: 15px 0;\n\n &:not(:last-child) {\n border-bottom: 1px solid ${theme.colors.variant.light.info};\n }\n\n .stream-data {\n margin-top: 8px;\n\n .stream-actions {\n position: relative;\n float: right;\n right: 0;\n bottom: 20px;\n\n form.action-form {\n display: inline-block;\n }\n\n .btn-delete {\n margin-left: 15px;\n margin-right: 15px;\n\n &.last {\n margin-right: 0;\n }\n }\n }\n }\n\n .stream-description {\n margin-bottom: 3px;\n\n .fa-cube {\n margin-right: 5px;\n }\n }\n`);\n\nconst ToggleButton = styled(Button)`\n min-width: 8.8em;\n`;\n\nclass Stream extends React.Component {\n static propTypes = {\n stream: PropTypes.object.isRequired,\n permissions: PropTypes.arrayOf(PropTypes.string).isRequired,\n streamRuleTypes: PropTypes.array.isRequired,\n user: PropTypes.object.isRequired,\n indexSets: PropTypes.array.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n showStreamRuleForm: false,\n showEntityShareModal: false,\n };\n }\n\n _closeStreamRuleForm = () => {\n this.setState({ showStreamRuleForm: false });\n };\n\n _openStreamRuleForm = () => {\n this.setState({ showStreamRuleForm: true });\n };\n\n _closeEntityShareModal = () => {\n this.setState({ showEntityShareModal: false });\n };\n\n _openEntityShareModal = () => {\n this.setState({ showEntityShareModal: true });\n };\n\n _onDelete = (stream) => {\n // eslint-disable-next-line no-alert\n if (window.confirm('Do you really want to remove this stream?')) {\n StreamsStore.remove(stream.id, (response) => {\n UserNotification.success(`Stream '${stream.title}' was deleted successfully.`, 'Success');\n\n return response;\n });\n }\n };\n\n _onResume = () => {\n const { stream } = this.props;\n\n this.setState({ loading: true });\n\n StreamsStore.resume(stream.id, (response) => response)\n .finally(() => this.setState({ loading: false }));\n };\n\n _onUpdate = (streamId, stream) => {\n StreamsStore.update(streamId, stream, (response) => {\n UserNotification.success(`Stream '${stream.title}' was updated successfully.`, 'Success');\n\n return response;\n });\n };\n\n _onClone = (streamId, stream) => {\n StreamsStore.cloneStream(streamId, stream, (response) => {\n UserNotification.success(`Stream was successfully cloned as '${stream.title}'.`, 'Success');\n\n return response;\n });\n };\n\n _onPause = () => {\n const { stream } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Do you really want to pause stream '${stream.title}'?`)) {\n this.setState({ loading: true });\n\n StreamsStore.pause(stream.id, (response) => response)\n .finally(() => this.setState({ loading: false }));\n }\n };\n\n _onSaveStreamRule = (streamRuleId, streamRule) => {\n const { stream } = this.props;\n\n StreamRulesStore.create(stream.id, streamRule, () => UserNotification.success('Stream rule was created successfully.', 'Success'));\n };\n\n render() {\n const { indexSets, stream, permissions, streamRuleTypes, user } = this.props;\n const { loading, showStreamRuleForm, showEntityShareModal } = this.state;\n\n const isDefaultStream = stream.is_default;\n const isNotEditable = !stream.is_editable;\n const defaultStreamTooltip = isDefaultStream\n ? Action not available for the default stream : null;\n\n let editRulesLink;\n let manageAlertsLink;\n\n if (isPermitted(permissions, [`streams:edit:${stream.id}`])) {\n editRulesLink = (\n \n \n \n \n \n );\n\n manageAlertsLink = (\n \n \n \n );\n }\n\n let toggleStreamLink;\n\n if (isAnyPermitted(permissions, [`streams:changestate:${stream.id}`, `streams:edit:${stream.id}`])) {\n if (stream.disabled) {\n toggleStreamLink = (\n \n \n {loading ? 'Starting...' : 'Start Stream'}\n \n \n );\n } else {\n toggleStreamLink = (\n \n \n {loading ? 'Pausing...' : 'Pause Stream'}\n \n \n );\n }\n }\n\n const createdFromContentPack = (stream.content_pack\n ? : null);\n\n const streamControls = (\n \n \n \n );\n\n const indexSet = indexSets.find((is) => is.id === stream.index_set_id) || indexSets.find((is) => is.is_default);\n const indexSetDetails = isPermitted(permissions, ['indexsets:read']) && indexSet ? index set {indexSet.title} : null;\n\n return (\n \n
\n {showStreamRuleForm && (\n \n )}\n {showEntityShareModal && (\n \n )}\n \n );\n }\n}\n\nexport default Stream;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport PermissionsMixin from 'util/PermissionsMixin';\n\nimport Stream from './Stream';\n\nconst StreamsList = styled.ul`\n padding: 0;\n margin: 0;\n`;\n\nconst StreamList = createReactClass({\n displayName: 'StreamList',\n\n propTypes: {\n streams: PropTypes.array.isRequired,\n streamRuleTypes: PropTypes.array.isRequired,\n indexSets: PropTypes.array.isRequired,\n user: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n },\n\n mixins: [PermissionsMixin],\n\n getInitialState() {\n return {};\n },\n\n _formatStream(stream) {\n return (\n \n );\n },\n\n render() {\n if (this.props.streams.length > 0) {\n const streamList = this.props.streams.map(this._formatStream);\n\n return (\n \n {streamList}\n \n );\n }\n\n return (\n \n No streams match your search filter.\n \n );\n },\n});\n\nexport default StreamList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\nimport { Icon, IfPermitted, PaginatedList, SearchForm } from 'components/common';\nimport Spinner from 'components/common/Spinner';\nimport QueryHelper from 'components/common/QueryHelper';\nimport StreamsStore from 'stores/streams/StreamsStore';\nimport { StreamRulesStore } from 'stores/streams/StreamRulesStore';\n\nimport StreamList from './StreamList';\nimport CreateStreamButton from './CreateStreamButton';\n\nclass StreamComponent extends React.Component {\n static propTypes = {\n currentUser: PropTypes.object.isRequired,\n onStreamSave: PropTypes.func.isRequired,\n indexSets: PropTypes.array.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n pagination: {\n page: 1,\n perPage: 10,\n count: 0,\n total: 0,\n query: '',\n },\n };\n }\n\n componentDidMount() {\n this.loadData();\n\n StreamRulesStore.types().then((types) => {\n this.setState({ streamRuleTypes: types });\n });\n\n StreamsStore.onChange(this.loadData);\n StreamRulesStore.onChange(this.loadData);\n }\n\n componentWillUnmount() {\n StreamsStore.unregister(this.loadData);\n StreamRulesStore.unregister(this.loadData);\n }\n\n loadData = (callback) => {\n const { state } = this;\n const { page, perPage, query } = state.pagination;\n\n StreamsStore.searchPaginated(page, perPage, query)\n .then(({ streams, pagination }) => {\n this.setState({\n streams: streams,\n pagination: pagination,\n });\n })\n .then(() => {\n if (callback) {\n callback();\n }\n });\n };\n\n _isLoading = () => {\n const { state } = this;\n\n return !(state.streams && state.streamRuleTypes);\n };\n\n _onPageChange = (newPage, newPerPage) => {\n const { pagination } = this.state;\n const newPagination = Object.assign(pagination, {\n page: newPage,\n perPage: newPerPage,\n });\n\n this.setState({ pagination: newPagination }, this.loadData);\n };\n\n _onSearch = (query, resetLoadingCallback) => {\n const { pagination } = this.state;\n const newPagination = { ...pagination, query: query, page: 1 };\n\n this.setState({ pagination: newPagination }, () => this.loadData(resetLoadingCallback));\n };\n\n _onReset = () => {\n const { pagination } = this.state;\n const newPagination = { ...pagination, query: '', page: 1 };\n\n this.setState({ pagination: newPagination }, this.loadData);\n };\n\n render() {\n const { streams, pagination, streamRuleTypes } = this.state;\n const { currentUser, onStreamSave, indexSets } = this.props;\n\n if (this._isLoading()) {\n return (\n
\n );\n }\n}\n\nexport default StreamComponent;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Row, Col } from 'components/bootstrap';\nimport CreateStreamButton from 'components/streams/CreateStreamButton';\nimport StreamComponent from 'components/streams/StreamComponent';\nimport DocumentationLink from 'components/support/DocumentationLink';\nimport PageHeader from 'components/common/PageHeader';\nimport { DocumentTitle, IfPermitted, Spinner } from 'components/common';\nimport DocsHelper from 'util/DocsHelper';\nimport UserNotification from 'util/UserNotification';\nimport StreamsStore from 'stores/streams/StreamsStore';\nimport { CurrentUserStore } from 'stores/users/CurrentUserStore';\nimport { IndexSetsActions, IndexSetsStore } from 'stores/indices/IndexSetsStore';\n\nconst StreamsPage = createReactClass({\n displayName: 'StreamsPage',\n mixins: [Reflux.connect(CurrentUserStore), Reflux.connect(IndexSetsStore)],\n\n getInitialState() {\n return {\n indexSets: undefined,\n };\n },\n\n componentDidMount() {\n IndexSetsActions.list(false);\n },\n\n _isLoading() {\n return !this.state.currentUser || !this.state.indexSets;\n },\n\n _onSave(_, stream) {\n StreamsStore.save(stream, () => {\n UserNotification.success('Stream has been successfully created.', 'Success');\n });\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n return (\n \n
\n \n \n You can route incoming messages into streams by applying rules against them. Messages matching\n the rules of a stream are routed into it. A message can also be routed into multiple streams.\n \n\n \n Read more about streams in the .\n \n\n \n \n \n \n\n \n
\n \n \n \n
\n \n );\n },\n});\n\nexport default StreamsPage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport PropTypes from 'prop-types';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport type { RetentionStrategyConfig, RotationStrategyConfig } from 'components/indices/Types';\nimport { RetentionStrategyConfigPropType, RotationStrategyConfigPropType } from 'components/indices/Types';\n\nexport const IndexSetPropType = PropTypes.shape({\n can_be_default: PropTypes.bool,\n id: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string.isRequired,\n index_prefix: PropTypes.string.isRequired,\n shards: PropTypes.number.isRequired,\n replicas: PropTypes.number.isRequired,\n rotation_strategy_class: PropTypes.string.isRequired,\n rotation_strategy: RotationStrategyConfigPropType.isRequired,\n retention_strategy_class: PropTypes.string.isRequired,\n retention_strategy: RetentionStrategyConfigPropType.isRequired,\n creation_date: PropTypes.string,\n index_analyzer: PropTypes.string.isRequired,\n index_optimization_max_num_segments: PropTypes.number.isRequired,\n index_optimization_disabled: PropTypes.bool.isRequired,\n field_type_refresh_interval: PropTypes.number.isRequired,\n index_template_type: PropTypes.string,\n writable: PropTypes.bool.isRequired,\n default: PropTypes.bool.isRequired,\n});\nexport type IndexSet = {\n can_be_default?: boolean,\n id?: string,\n title: string,\n description: string,\n index_prefix: string,\n shards: number,\n replicas: number,\n rotation_strategy_class: string,\n rotation_strategy: RotationStrategyConfig,\n retention_strategy_class: string,\n retention_strategy: RetentionStrategyConfig\n creation_date?: string,\n index_analyzer: string,\n index_optimization_max_num_segments: number,\n index_optimization_disabled: boolean,\n field_type_refresh_interval: number,\n index_template_type?: string,\n writable: boolean,\n default?: boolean,\n};\n\ntype IndexSetStats = {\n [key: string]: {\n documents: number,\n indices: number,\n size: number,\n },\n}\ntype IndexSetsResponseType = {\n total: number,\n index_sets: Array,\n stats: IndexSetStats,\n};\ntype IndexSetsStoreState = {\n indexSetsCount: number,\n indexSets: Array,\n indexSetStats: IndexSetStats,\n indexSet: IndexSet,\n}\ntype IndexSetsActionsType = {\n list: () => Promise,\n listPaginated: () => Promise,\n get: (indexSetId: string) => Promise,\n update: (indexSet: IndexSet) => Promise,\n create: (indexSet: IndexSet) => Promise,\n delete: () => Promise,\n setDefault: () => Promise,\n stats: () => Promise,\n};\nexport const IndexSetsActions = singletonActions(\n 'core.IndexSets',\n () => Reflux.createActions({\n list: { asyncResult: true },\n listPaginated: { asyncResult: true },\n get: { asyncResult: true },\n update: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n setDefault: { asyncResult: true },\n stats: { asyncResult: true },\n }),\n);\n\nexport const IndexSetsStore = singletonStore(\n 'core.IndexSets',\n () => Reflux.createStore({\n listenables: [IndexSetsActions],\n indexSetsCount: undefined,\n indexSets: undefined,\n indexSetStats: undefined,\n indexSet: undefined,\n\n getInitialState() {\n return {\n indexSetsCount: this.indexSetsCount,\n indexSets: this.indexSets,\n indexSetStats: this.indexSetStats,\n };\n },\n list(stats: boolean) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.list(stats).url);\n const promise = fetch('GET', url);\n\n promise\n .then(\n (response: IndexSetsResponseType) => this.trigger({\n indexSetsCount: response.total,\n indexSets: response.index_sets,\n indexSetStats: response.stats,\n }),\n (error) => {\n UserNotification.error(`Fetching index sets list failed: ${error.message}`,\n 'Could not retrieve index sets.');\n },\n );\n\n IndexSetsActions.list.promise(promise);\n },\n\n listPaginated(skip: number, limit: number, stats: boolean) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.listPaginated(skip, limit, stats).url);\n const promise = fetch('GET', url);\n\n promise\n .then(\n (response: IndexSetsResponseType) => this.trigger({\n indexSetsCount: response.total,\n indexSets: response.index_sets,\n indexSetStats: response.stats,\n }),\n (error) => {\n UserNotification.error(`Fetching index sets list failed: ${this._errorMessage(error)}`,\n 'Could not retrieve index sets.');\n },\n );\n\n IndexSetsActions.listPaginated.promise(promise);\n },\n\n get(indexSetId: string) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSetId).url);\n const promise = fetch('GET', url);\n\n promise.then(\n (response: IndexSet) => {\n this.trigger({ indexSet: response });\n\n return response;\n },\n (error) => {\n UserNotification.error(`Fetching index set '${indexSetId}' failed with status: ${this._errorMessage(error)}`, 'Could not retrieve index set.');\n },\n );\n\n IndexSetsActions.get.promise(promise);\n },\n\n update(indexSet: IndexSet) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSet.id).url);\n const promise = fetch('PUT', url, indexSet);\n\n promise.then(\n (response: IndexSet) => {\n UserNotification.success(`Successfully updated index set '${indexSet.title}'`, 'Success');\n this.trigger({ indexSet: response });\n\n return response;\n },\n (error) => {\n UserNotification.error(`Updating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not update index set.');\n },\n );\n\n IndexSetsActions.update.promise(promise);\n },\n\n create(indexSet: IndexSet) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.create().url);\n const promise = fetch('POST', url, indexSet);\n\n promise.then(\n (response: IndexSet) => {\n UserNotification.success(`Successfully created index set '${indexSet.title}'`, 'Success');\n this.trigger({ indexSet: response });\n\n return response;\n },\n (error) => {\n UserNotification.error(`Creating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not create index set.');\n },\n );\n\n IndexSetsActions.create.promise(promise);\n },\n\n delete(indexSet: IndexSet, deleteIndices: boolean) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.delete(indexSet.id, deleteIndices).url);\n const promise = fetch('DELETE', url);\n\n promise.then(\n () => {\n UserNotification.success(`Successfully deleted index set '${indexSet.title}'`, 'Success');\n },\n (error) => {\n UserNotification.error(`Deleting index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not delete index set.');\n },\n );\n\n IndexSetsActions.delete.promise(promise);\n },\n\n setDefault(indexSet: IndexSet) {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.setDefault(indexSet.id).url);\n const promise = fetch('PUT', url);\n\n promise.then(\n () => {\n UserNotification.success(`Successfully set index set '${indexSet.title}' as default`, 'Success');\n },\n (error) => {\n UserNotification.error(`Setting index set '${indexSet.title}' as default failed with status: ${this._errorMessage(error)}`, 'Could not set default index set.');\n },\n );\n\n IndexSetsActions.setDefault.promise(promise);\n },\n\n stats() {\n const url = qualifyUrl(ApiRoutes.IndexSetsApiController.stats().url);\n const promise = fetch('GET', url);\n\n promise\n .then(\n (response) => this.trigger({\n globalIndexSetStats: {\n indices: response.indices,\n documents: response.documents,\n size: response.size,\n },\n }),\n (error) => {\n UserNotification.error(`Fetching global index stats failed: ${error.message}`,\n 'Could not retrieve global index stats.');\n },\n );\n\n IndexSetsActions.stats.promise(promise);\n },\n\n _errorMessage(error) {\n try {\n return error.additional.body.message;\n } catch (e) {\n return error.message;\n }\n },\n }),\n);\n"],"names":["SizeBasedRotationStrategyConfigPropType","PropTypes","max_index_retention_period","type","max_size","MessageCountRotationStrategyConfigPropType","max_docs_per_index","TimeBasedRotationStrategyConfigPropType","rotation_period","max_rotation_period","rotate_empty_index_set","RotationStrategyConfigPropType","RetentionStrategyConfigPropType","max_number_of_indices","index_action","JsonSchemaStringPropertyTypePropType","JsonSchemaIndexActionPropertyTypePropType","enum","isRequired","RotationPropertiesPropType","RotationJsonSchemaPropType","id","properties","RetentionPropertiesPropType","RetentionJsonSchemaPropType","RotationStrategyPropType","default_config","json_schema","RetentionStrategyPropType","_getValuesFromProps","props","defaultIndexSetId","stream","index_set_id","indexSets","length","defaultIndexSet","find","indexSet","title","description","removeMatchesFromDefaultStream","remove_matches_from_default_stream","indexSetId","StreamForm","setState","state","onSubmit","modal","close","_resetValues","IndexSetsActions","open","filter","can_be_default","map","value","label","selection","event","change","target","name","FormsUtils","help","inputId","placeholder","options","_formatSelectOptions","matchProp","onChange","_onIndexSetSelect","undefined","this","propTitle","BootstrapModalForm","ref","c","onSubmitForm","_onSubmit","submitButtonText","required","handleChange","autoFocus","_indexSetSelect","checked","React","CreateStreamButton","streamForm","bsSize","bsStyle","buttonText","className","onSave","onClick","RuleWrapper","styled","CollapsibleStreamRuleList","expanded","permissions","streamRuleTypes","in","timeout","StreamRuleList","propTypes","defaultProps","createReactClass","displayName","streamId","mixins","Reflux","MetricsStore","UNSAFE_componentWillMount","MetricsActions","_metricName","componentWillUnmount","_calculateThroughput","Object","keys","metrics","nodeId","metricDefinition","metric","reduce","throughput1","throughput2","render","StreamMetaDataWrapper","StreamMetaData","verbalMatchingType","isDefaultStream","useState","setExpanded","toggleText","is_default","rules","matching_type","plural","singular","key","user","onDelete","onClone","onQuickAdd","onUpdate","disabled","PermissionsMixin","getDefaultProps","_onDelete","_onEdit","_onClone","cloneForm","_onCloneSubmit","_","_onQuickAdd","_setStartpage","StartpageStore","pullRight","onSelect","HideOnCloud","href","Routes","read_only","divider","StreamStateBadge","StreamListItem","theme","css","colors","variant","light","info","ToggleButton","Button","Stream","showStreamRuleForm","showEntityShareModal","window","confirm","StreamsStore","response","UserNotification","loading","streamRuleId","streamRule","StreamRulesStore","editRulesLink","manageAlertsLink","toggleStreamLink","isNotEditable","is_editable","defaultStreamTooltip","isPermitted","overlay","placement","useOverlay","to","isAnyPermitted","_onResume","_onPause","createdFromContentPack","content_pack","streamControls","_onUpdate","_openStreamRuleForm","is","indexSetDetails","entityId","entityType","_openEntityShareModal","StreamRuleForm","onClose","_closeStreamRuleForm","_onSaveStreamRule","EntityShareModal","entityTitle","_closeEntityShareModal","StreamsList","streams","getInitialState","_formatStream","streamList","StreamComponent","callback","pagination","page","perPage","query","then","newPage","newPerPage","newPagination","assign","loadData","resetLoadingCallback","count","total","types","currentUser","onStreamSave","_isLoading","style","marginLeft","Spinner","createStreamButton","noStreams","streamsList","streamListComp","_onPageChange","activePage","totalItems","marginBottom","onSearch","_onSearch","onReset","_onReset","queryHelpComponent","QueryHelper","entityName","useLoadingState","CurrentUserStore","IndexSetsStore","componentDidMount","_onSave","PageHeader","DocumentationLink","DocsHelper","text","md","IndexSetPropType","index_prefix","shards","replicas","rotation_strategy_class","rotation_strategy","retention_strategy_class","retention_strategy","creation_date","index_analyzer","index_optimization_max_num_segments","index_optimization_disabled","field_type_refresh_interval","index_template_type","writable","default","singletonActions","list","asyncResult","listPaginated","get","update","create","delete","setDefault","stats","singletonStore","listenables","indexSetsCount","indexSetStats","url","qualifyUrl","ApiRoutes","promise","fetch","trigger","index_sets","error","message","skip","limit","_errorMessage","deleteIndices","globalIndexSetStats","indices","documents","size","additional","body","e"],"sourceRoot":""}