From 6736ea0817651a510f889d75b33cd05c06fd1890 Mon Sep 17 00:00:00 2001 From: Zosimer <315630932@qq.com> Date: Wed, 14 Sep 2022 23:11:38 +0800 Subject: [PATCH 1/7] dataassets dataWarehouse dataModel Linkis1.2.0+dss1.2.0[datamodel][dataassets][datawarehouse],Realize data model management, connect with Atlas, and realize blood relationship management --- assembly/bin/executeSQL.sh | 4 + assembly/bin/install.sh | 54 +- assembly/config/config.sh | 15 +- .../src/main/assembly/distribution.xml | 30 +- conf/atlas-application.properties | 67 + conf/dss-data-assets-server.properties | 88 + conf/dss-data-governance-server.properties | 53 - conf/dss-data-warehouse-server.properties | 51 + conf/dss-datamodel-center-server.properties | 107 + db/apps/datamodel.sql | 352 + db/apps/datawarehouse.sql | 224 + db/dss_ddl.sql | 24 +- db/dss_dml.sql | 65 +- ...orkflowToDolphinSchedulerSynchronizer.java | 4 +- .../dss/data/api/server/entity/ApiConfig.java | 2 +- .../server/restful/DSSDbApiAuthRestful.java | 4 +- .../server/restful/DSSDbApiConfigRestful.java | 2 +- .../restful/DSSDbApiDataSourceRestful.java | 4 +- .../restful/DSSDbApiManagerRestful.java | 2 +- .../restful/DSSDbApiMonitorRestful.java | 8 +- .../dss/data/api/server/util/CryptoUtils.java | 2 +- .../dss-data-asset-server/pom.xml | 223 - .../dss/data/asset/dao/MetaInfoMapper.java | 20 - .../asset/dao/impl/MetaInfoMapperImpl.java | 174 - .../asset/dao/impl/WorkspaceInfoMapper.xml | 24 - .../data/asset/entity/HiveStorageInfo.java | 10 - .../entity/HiveTblClassificationInfo.java | 11 - .../data/asset/entity/HiveTblDetailInfo.java | 39 - .../data/asset/entity/HiveTblLabelInfo.java | 10 - .../dss/data/asset/restful/AssetRestful.java | 91 - .../data/asset/restful/AssetTblRestful.java | 187 - .../dss/data/asset/service/AssetService.java | 59 - .../asset/service/WorkspaceInfoService.java | 13 - .../asset/service/impl/AssetServiceImpl.java | 518 - .../impl/WorkspaceInfoServiceImpl.java | 24 - .../dss-data-classification-server/pom.xml | 191 - .../restful/ClassificationRestful.java | 98 - .../service/ClassificationService.java | 26 - .../impl/ClassificationServiceImpl.java | 134 - .../common/atlas/AtlasClassificationV2.java | 54 - .../dss/data/common/atlas/AtlasClient.java | 274 - .../dss/data/common/atlas/AtlasService.java | 343 - .../dss/data/common/conf/AtlasConf.java | 32 - .../data/common/exception/DAOException.java | 17 - .../exception/DataGovernanceException.java | 8 - .../dss/data/common/utils/DataSourceUtil.java | 26 - .../src/main/assembly/distribution.xml | 46 - .../resources/atlas-application.properties | 0 .../dss-data-governance-server.properties | 53 - .../src/main/resources/dss.properties | 25 - .../src/main/resources/log4j2.xml | 51 - .../src/main/resources/token.properties | 19 - dss-apps/dss-data-governance/pom.xml | 22 - .../dss-data-assets-client/pom.xml | 59 + .../entity/ClassificationConstant.java | 77 + .../governance/entity/CreateLabelInfo.java | 10 + .../entity/CreateModelTypeInfo.java | 12 + .../governance/entity/HiveSimpleInfo.java | 23 + .../governance/entity/HiveTblStatsDTO.java | 18 + .../dss/data/governance/entity/PartInfo.java} | 7 +- .../dss/data/governance/entity/QueryType.java | 18 + .../governance/entity/SearchLabelInfo.java | 9 + .../governance/entity/UpdateLabelInfo.java | 10 + .../entity/UpdateModelTypeInfo.java | 11 + .../governance/AbstractRemoteClient.scala | 15 + .../governance/DataAssetsRemoteClient.scala | 47 + .../dss/data/governance/RemoteClient.scala | 11 + .../DataAssetsClientBuilderException.scala | 5 + .../impl/LinkisDataAssetsRemoteClient.scala | 51 + .../governance/request/BindLabelAction.scala | 77 + .../request/BindModelTypeAction.scala | 84 + .../request/CreateLabelAction.scala | 50 + .../request/CreateModelTypeAction.scala | 61 + .../governance/request/DataAssetsAction.scala | 5 + .../request/DeleteLabelAction.scala | 49 + .../request/DeleteModelTypeAction.scala | 62 + .../request/GetHiveTblBasicAction.scala | 42 + .../request/GetHiveTblCreateAction.scala | 41 + .../request/GetHiveTblPartitionAction.scala | 43 + .../request/GetTblPartInfoByNameAction.scala | 53 + .../request/HiveTblSizeAction.scala | 62 + .../request/HiveTblStatsAction.scala | 68 + .../request/SearchHiveDbAction.scala | 72 + .../request/SearchHiveTblAction.scala | 79 + .../request/SearchLabelAction.scala | 59 + .../request/UnBindLabelAction.scala | 86 + .../request/UnBindModelTypeAction.scala | 87 + .../request/UpdateLabelAction.scala | 57 + .../request/UpdateModelTypeAction.scala | 72 + .../governance/response/BindLabelResult.scala | 11 + .../response/BindModelTypeResult.scala | 11 + .../response/CreateLabelResult.scala | 20 + .../response/CreateModelTypeResult.scala | 19 + .../response/DeleteLabelResult.scala | 11 + .../response/DeleteModelTypeResult.scala | 11 + .../response/GetHiveTblBasicResult.scala | 11 + .../response/GetHiveTblCreateResult.scala | 10 + .../GetHiveTblPartInfoByNameResult.scala | 22 + .../response/GetHiveTblPartitionResult.scala | 11 + .../response/HiveTblSizeResult.scala | 12 + .../response/HiveTblStatsResult.scala | 19 + .../response/SearchHiveDbResult.scala | 22 + .../response/SearchHiveTblResult.scala | 22 + .../response/SearchLabelResult.scala | 22 + .../response/UnBindLabelResult.scala | 11 + .../response/UnBindModelTypeResult.scala | 11 + .../response/UpdateLabelResult.scala | 20 + .../response/UpdateModelTypeResult.scala | 19 + .../TestDataAssetsRemoteClient.scala | 108 + .../dss-data-assets-server}/pom.xml | 80 +- .../src/main/assembly/distribution.xml | 6 +- .../data/governance/atlas/AtlasClient.java | 287 + .../data/governance/atlas/AtlasService.java | 365 + .../governance/conf/ClientCommonConfig.java | 34 + .../data/governance/conf/ClientStrategy.java | 17 + .../conf/DataWorkspaceRemoteConfig.java | 21 + .../data/governance/conf/GovernanceConf.java | 44 + .../data/governance/dao/MetaInfoMapper.java | 19 + .../dao/TableColumnCountQueryMapper.java | 28 + .../governance/dao/TableSizeInfoMapper.java | 22 + .../dao/TableSizePartitionInfoMapper.java | 24 + .../governance}/dao/WorkspaceInfoMapper.java | 8 +- .../dao/impl/MetaInfoMapperImpl.java | 140 + .../data/governance/dto/HiveTblStatsDTO.java | 18 + .../data/governance/dto/SearchLabelDTO.java | 18 + .../entity/ClassificationConstant.java | 116 + .../governance/entity/CreateLabelInfo.java | 19 + .../entity/CreateModelTypeInfo.java | 12 + .../governance/entity/GlossaryConstant.java | 55 + .../governance/entity/HiveTblDetailInfo.java | 33 + .../governance}/entity/HiveTblSimpleInfo.java | 13 +- .../dss/data/governance/entity/PartInfo.java | 14 + .../dss/data/governance/entity/QueryType.java | 18 + .../governance/entity/RelatedObjectId.java | 17 + .../governance/entity/TableColumnCount.java | 12 + .../dss/data/governance/entity/TableInfo.java | 10 + .../entity/TablePartitionSizeInfo.java | 15 + .../data/governance/entity/TableSizeInfo.java | 13 + .../governance/entity/UpdateLabelInfo.java | 18 + .../entity/UpdateModelTypeInfo.java | 12 + .../governance/exception/DAOException.java | 15 + .../exception/DataGovernanceException.java | 16 + .../DSSDataGovernanceAssetRestful.java | 467 + .../data/governance/service/AssetService.java | 173 + .../service/AuthenticationClientStrategy.java | 22 + .../service/WorkspaceInfoService.java | 31 + .../service/impl/AssetServiceImpl.java | 847 + .../impl/WorkspaceInfoServiceImpl.java | 43 + .../data/governance/utils/DataSourceUtil.java | 27 + .../dss/data/governance}/utils/DateUtil.java | 24 +- .../governance}/utils/HttpClientUtil.java | 42 +- .../dss/data/governance/vo/BindLabelVO.java | 17 + .../dss/data/governance/vo/BindModelVO.java | 16 + .../dss/data/governance/vo/CreateLabelVO.java | 9 + .../data/governance/vo/CreateModelTypeVO.java | 12 + .../dss/data/governance/vo/DeleteLabelVO.java | 9 + .../data/governance/vo/DeleteModelTypeVO.java | 11 + .../dss/data/governance/vo/UnBindLabelVO.java | 17 + .../dss/data/governance/vo/UnBindModelVO.java | 14 + .../dss/data/governance/vo/UpdateLabelVO.java | 10 + .../data/governance/vo/UpdateModelTypeVO.java | 13 + .../src/main/resources/application.yml | 22 + .../resources/atlas-application.properties | 67 + .../src/main/resources/linkis.properties | 82 + .../src/main/resources/log4j.properties | 33 +- .../src/main/resources/log4j2.xml | 39 + .../governance/DataAssetsApplication.scala} | 8 +- dss-apps/dss-dataasset-management/pom.xml | 85 + .../dss-datamodel-center-client/pom.xml | 57 + .../client/entity/ClassificationConstant.java | 76 + .../client/entity/CreateModelTypeInfo.java | 12 + .../center/client/entity/HiveSimpleInfo.java | 23 + .../client/entity/UpdateModelTypeInfo.java | 11 + .../center/client/AbstractRemoteClient.scala | 15 + .../client/DatamodelCenterRemoteClient.scala | 11 + .../center/client/RemoteClient.scala | 11 + ...atamodelCenterClientBuilderException.scala | 5 + .../LinkisDatamodelCenterRemoteClient.scala | 19 + .../request/CyclesReferenceAction.scala | 43 + .../request/DatamodelCenterAction.scala | 5 + .../request/LayersReferenceAction.scala | 43 + .../request/ModifiersReferenceAction.scala | 42 + .../request/ThemesReferenceAction.scala | 42 + .../response/CyclesReferenceResult.scala | 11 + .../response/LayersReferenceResult.scala | 11 + .../response/ModifiersReferenceResult.scala | 11 + .../response/ThemesReferenceResult.scala | 12 + .../TestDatamodelCenterRemoteClient.scala | 48 + .../dss-datamodel-center-common/pom.xml | 101 + .../center/common/config/ClientStrategy.java | 19 + .../center/common/config/CommonConfig.java | 127 + .../DataWarehouseAssetsRemoteConfig.java | 21 + .../config/DataWarehouseGovernanceConfig.java | 21 + .../config/DataWorkspaceRemoteConfig.java | 21 + .../common/config/LinkisJobConfiguration.java | 20 + .../common/config/ModelMapperConfig.java | 18 + .../common/config/MyMetaObjectHandler.java | 23 + .../common/config/MybatisPlusConfig.java | 24 + .../common/config/ThreadPoolTaskConfig.java | 34 + .../center/common/constant/ColumnType.java | 16 + .../center/common/constant/ErrorCode.java | 56 + .../constant/IndicatorSourceInfoConstant.java | 19 + .../center/common/constant/LabelConstant.java | 7 + .../center/common/constant/ModeType.java | 49 + .../common/constant/ReferenceExpression.java | 25 + .../center/common/constant/ReferenceKey.java | 35 + .../common/constant/TabelExternalType.java | 37 + .../context/DataModelAuthentication.java | 9 + .../context/DataModelSecurityContext.java | 9 + .../DataModelSecurityContextHolder.java | 35 + ...ataModelSecurityContextHolderStrategy.java | 30 + ...eadLocalSecurityContextHolderStrategy.java | 35 + .../center/common/dto/CreateTableDTO.java | 13 + .../center/common/dto/PreviewDataDTO.java | 11 + .../center/common/event/BindLabelEvent.java | 36 + .../center/common/event/BindModelEvent.java | 33 + .../center/common/event/CreateLabelEvent.java | 22 + .../center/common/event/CreateModelEvent.java | 24 + .../center/common/event/DeleteLabelEvent.java | 20 + .../center/common/event/DeleteModelEvent.java | 24 + .../center/common/event/UnBindLabelEvent.java | 40 + .../center/common/event/UnBindModelEvent.java | 32 + .../center/common/event/UpdateLabelEvent.java | 22 + .../center/common/event/UpdateModelEvent.java | 29 + .../DSSDatamodelCenterException.java | 15 + .../center/common/filter/AuthFilter.java | 32 + .../launcher/CommonDataModelJobLauncher.java | 12 + .../CommonExistsDataModelJobTask.java | 10 + .../DataExistsDataModelJobLauncher.java | 20 + .../launcher/DataExistsDataModelJobTask.java | 10 + .../common/launcher/DataModelJobLauncher.java | 28 + .../common/launcher/DataModelJobTask.java | 62 + .../launcher/DataModelJobTaskBuilder.java | 46 + .../launcher/PreviewDataModelJobLauncher.java | 18 + .../common/listener/AssertsListener.java | 136 + .../common/service/AssertsSyncService.java | 208 + .../service/AuthenticationClientStrategy.java | 21 + .../common/service/CycleReferenceService.java | 11 + ...ataWarehouseDimensionReferenceService.java | 5 + ...ataWarehouseIndicatorReferenceService.java | 5 + .../DataWarehouseLabelReferenceService.java | 7 + ...DataWarehouseMeasuredReferenceService.java | 6 + .../DataWarehouseReferenceService.java | 7 + .../DataWarehouseTableReferenceService.java | 5 + .../DatamodelIndicatorReferenceService.java | 7 + .../service/DatamodelReferencService.java | 9 + .../DatamodelTableReferenceService.java | 5 + .../service/DimensionReferenceService.java | 12 + .../DimensionThemeReferenceService.java | 12 + .../IndicatorCycleReferenceService.java | 11 + .../IndicatorDimensionReferenceService.java | 12 + .../IndicatorIndicatorReferenceService.java | 11 + .../IndicatorLayerReferenceService.java | 13 + .../IndicatorMeasuredReferenceService.java | 12 + .../IndicatorModifierReferenceService.java | 11 + .../service/IndicatorReferenceService.java | 12 + .../IndicatorThemeReferenceService.java | 11 + .../common/service/LabelReferenceService.java | 11 + .../service/LabelThemeReferenceService.java | 11 + .../common/service/LayerReferenceService.java | 12 + .../service/MeasureReferenceService.java | 11 + .../MeasuredThemeReferenceService.java | 12 + .../service/ModifierReferenceService.java | 11 + .../service/TableCycleReferenceService.java | 11 + .../TableDimensionReferenceService.java | 12 + .../TableIndicatorReferenceService.java | 12 + .../service/TableLabelReferenceService.java | 12 + .../service/TableLayerReferenceService.java | 11 + .../TableMeasuredReferenceService.java | 12 + .../TableModifierReferenceService.java | 11 + .../service/TableThemeReferenceService.java | 11 + .../common/service/ThemeReferenceService.java | 11 + .../impl/DatamodelReferenceServiceImpl.java | 42 + .../ujes/DataModelUJESJobTaskBuilder.java | 32 + .../AbstractDataModelUJESJobLauncher.java | 56 + .../CreateTableDataModelUJESJobLauncher.java | 24 + .../DataExistsDataModelUJESJobLauncher.java | 25 + .../launcher/DataModelUJESJobLauncher.java | 16 + .../DropTableDataModelUJESJobLauncher.java | 16 + .../PreviewDataModelUJESJobLauncher.java | 28 + .../task/CreateTableDataModelUJESJobTask.java | 20 + .../task/DataExistsDataModelUJESJobTask.java | 18 + .../ujes/task/DataModelUJESJobTask.java | 16 + .../task/DropTableDataModelUJESJobTask.java | 21 + .../task/PreviewDataModelUJESJobTask.java | 21 + .../datamodel/center/common/vo/PageVO.java | 13 + .../dss/datamodel/TestJobTask.java | 35 + .../dss/datamodel/UJESClientImplTestJ.java | 97 + .../db/datamodel_ddl.sql | 320 + .../db/datamodel_dml.sql | 40 + .../dss-datamodel-center-server/pom.xml | 119 + .../src/main/assembly/distribution.xml | 36 +- .../src/main/resources/application.yml | 20 + .../src/main/resources/linkis.properties | 104 + .../src/main/resources/log4j.properties | 37 + .../src/main/resources/log4j2.xml | 39 + .../dss/datamodel/DataModelApplication.scala | 21 + .../pom.xml | 59 + .../dao/DssDatamodelDimensionMapper.java | 22 + .../dao/impl/DssDatamodelDimensionMapper.xml | 174 + .../dimension/dto/DimensionQueryDTO.java | 47 + .../entity/DssDatamodelDimension.java | 47 + .../restful/DimensionRestfulApi.java | 100 + .../dimension/service/DimensionService.java | 70 + ...arehouseDimensionReferenceServiceImpl.java | 20 + .../service/impl/DimensionServiceImpl.java | 214 + .../dimension/vo/DimensionAddVO.java | 35 + .../dimension/vo/DimensionEnableVO.java | 24 + .../dimension/vo/DimensionQueryVO.java | 19 + .../dimension/vo/DimensionUpdateVO.java | 35 + .../pom.xml | 64 + .../DssDatamodelIndicatorContentMapper.java | 7 + .../dao/DssDatamodelIndicatorMapper.java | 7 + .../DssDatamodelIndicatorVersionMapper.java | 7 + .../indicator/dao/IndicatorQueryMapper.java | 22 + .../DssDatamodelIndicatorContentMapper.xml | 26 + .../dao/impl/DssDatamodelIndicatorMapper.xml | 29 + .../DssDatamodelIndicatorVersionMapper.xml | 22 + .../dto/IndicatorContentQueryDTO.java | 143 + .../indicator/dto/IndicatorQueryDTO.java | 65 + .../indicator/dto/IndicatorVersionDTO.java | 43 + .../dto/IndicatorVersionQueryDTO.java | 106 + .../entity/DssDatamodelIndicator.java | 61 + .../entity/DssDatamodelIndicatorContent.java | 150 + .../entity/DssDatamodelIndicatorQuery.java | 258 + .../entity/DssDatamodelIndicatorVersion.java | 110 + .../restful/IndicatorRestfulApi.java | 222 + .../service/IndicatorContentService.java | 59 + .../indicator/service/IndicatorService.java | 146 + .../service/IndicatorVersionService.java | 57 + ...arehouseIndicatorReferenceServiceImpl.java | 35 + ...atamodelIndicatorReferenceServiceImpl.java | 40 + .../impl/IndicatorContentServiceImpl.java | 88 + .../service/impl/IndicatorServiceImpl.java | 539 + .../impl/IndicatorVersionServiceImpl.java | 97 + .../dss/datamodel/indicator/vo/CycleVO.java | 10 + .../indicator/vo/IndicatorAddVO.java | 54 + .../indicator/vo/IndicatorContentVO.java | 119 + .../indicator/vo/IndicatorEnableVO.java | 23 + .../indicator/vo/IndicatorQueryVO.java | 21 + .../indicator/vo/IndicatorUpdateVO.java | 50 + .../indicator/vo/IndicatorVersionAddVO.java | 51 + .../indicator/vo/IndicatorVersionQueryVO.java | 22 + .../vo/IndicatorVersionRollBackVO.java | 33 + .../dss/datamodel/indicator/vo/LayerVO.java | 8 + .../datamodel/indicator/vo/ModifierVO.java | 10 + .../dss-datamodel-measure-management/pom.xml | 60 + .../dao/DssDatamodelMeasureMapper.java | 9 + .../dao/impl/DssDatamodelMeasureMapper.xml | 24 + .../measure/dto/MeasureQueryDTO.java | 44 + .../measure/entity/DssDatamodelMeasure.java | 43 + .../measure/restful/MeasureRestfulApi.java | 105 + .../measure/service/MeasureService.java | 70 + ...WarehouseMeasuredReferenceServiceImpl.java | 20 + .../service/impl/MeasureServiceImpl.java | 214 + .../datamodel/measure/vo/MeasureAddVO.java | 35 + .../datamodel/measure/vo/MeasureEnableVO.java | 23 + .../datamodel/measure/vo/MeasureQueryVO.java | 19 + .../datamodel/measure/vo/MeasureUpdateVO.java | 34 + .../dss-datamodel-table-management/pom.xml | 59 + .../dao/DssDatamodelDictionaryMapper.java | 7 + .../table/dao/DssDatamodelLabelMapper.java | 8 + .../DssDatamodelTableCollcetionMapper.java | 7 + .../dao/DssDatamodelTableColumnsMapper.java | 7 + .../table/dao/DssDatamodelTableMapper.java | 7 + ...tamodelTableMaterializedHistoryMapper.java | 7 + .../dao/DssDatamodelTableStaticsMapper.java | 4 + .../dao/DssDatamodelTableStatsMapper.java | 7 + .../dao/DssDatamodelTableVersionMapper.java | 7 + .../datamodel/table/dao/TableQueryMapper.java | 22 + .../dao/impl/DssDatamodelDictionaryMapper.xml | 19 + .../dao/impl/DssDatamodelLabelMapper.xml | 25 + .../DssDatamodelTableCollcetionMapper.xml | 40 + .../impl/DssDatamodelTableColumnsMapper.xml | 29 + .../dao/impl/DssDatamodelTableMapper.xml | 38 + ...atamodelTableMaterializedHistoryMapper.xml | 25 + .../impl/DssDatamodelTableStaticsMapper.xml | 19 + .../dao/impl/DssDatamodelTableStatsMapper.xml | 26 + .../impl/DssDatamodelTableVersionMapper.xml | 26 + .../table/dto/HiveTblDetailInfoDTO.java | 33 + .../table/dto/HiveTblSimpleInfo.java | 17 + .../table/dto/HiveTblSimpleInfoDTO.java | 21 + .../datamodel/table/dto/LabelQueryDTO.java | 52 + .../datamodel/table/dto/ListDataBasesVO.java | 11 + .../dss/datamodel/table/dto/ModelTypeDTO.java | 28 + .../dss/datamodel/table/dto/PartInfoDTO.java | 16 + .../table/dto/TableCollectionDTO.java | 105 + .../table/dto/TableColumnQueryDTO.java | 50 + .../datamodel/table/dto/TableHeadlineDTO.java | 25 + .../dss/datamodel/table/dto/TableListDTO.java | 102 + .../datamodel/table/dto/TableQueryDTO.java | 170 + .../datamodel/table/dto/TableStatsDTO.java | 73 + .../table/dto/TableVersionQueryDTO.java | 51 + .../table/entity/DssDatamodelDictionary.java | 100 + .../table/entity/DssDatamodelLabel.java | 47 + .../table/entity/DssDatamodelTabelQuery.java | 83 + .../table/entity/DssDatamodelTable.java | 275 + .../entity/DssDatamodelTableCollcetion.java | 110 + .../entity/DssDatamodelTableColumns.java | 169 + .../DssDatamodelTableMaterializedHistory.java | 57 + .../entity/DssDatamodelTableStatics.java | 80 + .../table/entity/DssDatamodelTableStats.java | 163 + .../entity/DssDatamodelTableVersion.java | 154 + .../table/event/BindLabelByTableEvent.java | 22 + .../table/event/BindModelByColumnsEvent.java | 25 + .../table/event/BindModelByTableEvent.java | 20 + .../table/event/TableFirstBindEvent.java | 18 + .../table/event/UnBindLabelByTableEvent.java | 22 + .../event/UnBindModelByColumnsEvent.java | 24 + .../table/event/UnBindModelByTableEvent.java | 19 + .../event/UpdateBindLabelByTableEvent.java | 23 + .../event/UpdateBindModelByColumnsEvent.java | 27 + .../event/UpdateBindModelByTableEvent.java | 22 + .../listener/TableFirstBindListener.java | 47 + .../table/listener/TableLabelListener.java | 91 + .../table/listener/TableModelListener.java | 147 + .../table/materialized/HiveSchema.java | 180 + .../materialized/HiveSchemaDdlBuilder.java | 182 + .../table/restful/TableRestfulApi.java | 565 + .../datamodel/table/service/LabelService.java | 77 + .../table/service/TableCollectService.java | 38 + .../table/service/TableColumnsService.java | 77 + .../table/service/TableDictionaryService.java | 17 + .../TableMaterializedHistoryService.java | 97 + .../datamodel/table/service/TableService.java | 267 + .../table/service/TableStatsService.java | 15 + .../table/service/TableVersionService.java | 61 + ...ataWarehouseLabelReferenceServiceImpl.java | 19 + .../DataWarehouseReferenceServiceImpl.java | 50 + ...ataWarehouseTableReferenceServiceImpl.java | 34 + .../DatamodelTableReferenceServiceImpl.java | 35 + .../table/service/impl/LabelServiceImpl.java | 203 + .../service/impl/TableCollectServiceImpl.java | 70 + .../service/impl/TableColumnsServiceImpl.java | 91 + .../impl/TableDictionaryServiceImpl.java | 27 + .../TableMaterializedHistoryServiceImpl.java | 261 + .../table/service/impl/TableServiceImpl.java | 836 + .../service/impl/TableStatsServiceImpl.java | 23 + .../impl/TableThemeReferenceServiceImpl.java | 19 + .../service/impl/TableVersionServiceImpl.java | 109 + .../dss/datamodel/table/vo/LabelAddVO.java | 37 + .../dss/datamodel/table/vo/LabelEnableVO.java | 8 + .../dss/datamodel/table/vo/LabelUpdateVO.java | 40 + .../dss/datamodel/table/vo/LabelsQueryVO.java | 15 + .../dss/datamodel/table/vo/TableAddVO.java | 229 + .../datamodel/table/vo/TableCheckDataVO.java | 12 + .../table/vo/TableCollectCancelVO.java | 33 + .../table/vo/TableCollectQueryVO.java | 99 + .../datamodel/table/vo/TableCollectVO.java | 94 + .../datamodel/table/vo/TableColumnBindVO.java | 23 + .../dss/datamodel/table/vo/TableColumnVO.java | 44 + .../datamodel/table/vo/TableColumnsAddVO.java | 42 + .../datamodel/table/vo/TableCreateSqlVO.java | 15 + .../dss/datamodel/table/vo/TableCreateVO.java | 13 + .../table/vo/TableDataPreviewVO.java | 11 + .../table/vo/TableDatabasesQueryVO.java | 17 + .../table/vo/TableDictionaryListVO.java | 22 + .../dss/datamodel/table/vo/TableListVO.java | 40 + .../table/vo/TablePartitionStatsVO.java | 6 + .../datamodel/table/vo/TableQueryOneVO.java | 21 + .../dss/datamodel/table/vo/TableUpdateVO.java | 99 + .../datamodel/table/vo/TableVersionAddVO.java | 90 + .../table/vo/TableVersionQueryVO.java | 11 + .../table/vo/TableVersionRollBackVO.java | 14 + .../table/vo/TblPartitionStatsVO.java | 15 + dss-apps/dss-datamodel-center/pom.xml | 55 + .../dss-data-warehouse-client/pom.xml | 62 + .../warehouse/domain/DwLayerVO.java | 121 + .../warehouse/domain/DwModifierVO.java | 123 + .../domain/DwStatisticalPeriodVO.java | 214 + .../warehouse/domain/DwThemeDomainVO.java | 124 + .../client/AbstractDwRemoteClient.scala | 13 + .../warehouse/client/DwAction.scala | 7 + .../warehouse/client/DwRemoteClient.scala | 14 + .../client/GovernanceDwRemoteClient.scala | 26 + .../warehouse/client/RemoteClient.scala | 10 + .../client/action/ListDwLayerAction.scala | 55 + .../client/action/ListDwModifierAction.scala | 90 + .../ListDwStatisticalPeriodAction.scala | 73 + .../action/ListDwThemeDomainAction.scala | 46 + .../client/result/ListLayersResult.scala | 23 + .../client/result/ListModifiersResult.scala | 22 + .../result/ListStatisticalPeriodsResult.scala | 22 + .../result/ListThemeDomainsResult.scala | 23 + .../warehouse/client/RemoteClientTest.java | 51 + .../client/DwLayerRemoteClientTest.scala | 47 + .../dss-data-warehouse-mybatis/pom.xml | 62 + .../linkis/mybatis/DataSourceConfig.java | 76 + .../mybatis/MyBatisMapperScannerConfig.java | 39 + .../mybatis/MybatisConfigurationFactory.java | 130 + .../mybatis/conf/MybatisConfiguration.java | 43 + .../db/datawarehouse.sql | 224 + .../dss-data-warehouse-server/db/ddl.sql | 180 + .../dss-data-warehouse-server/db/dml.sql | 4 + .../dss-data-warehouse-server}/pom.xml | 43 +- .../src/main/assembly/distribution.xml | 35 +- .../configuration/MybatisPlusConfig.java | 27 + .../warehouse/configuration/WebMvcConfig.java | 31 + .../warehouse/restful/DwDsRestfulApi.java | 47 + .../warehouse/restful/DwLayerRestfulApi.java | 114 + .../restful/DwModifierRestfulApi.java | 119 + .../DwStatisticalPeriodRestfulApi.java | 120 + .../restful/DwThemeDomainRestfulApi.java | 112 + .../src/main/resources/application-dss.yml | 0 .../dss-data-warehouse-server.properties | 51 + .../src/main/resources/dss.properties | 37 + .../src/main/resources/log4j.properties | 37 + .../src/main/resources/log4j2.xml | 39 + .../src/main/resources/mybatis-config.xml | 7 + .../warehouse/DataWarehouseApplication.scala | 23 + .../dss-data-warehouse-service/pom.xml | 164 + .../warehouse/client/DataSourceDTO.java | 115 + .../client/DwDataSourceConfiguration.java | 17 + .../warehouse/cqe/DwLayerCreateCommand.java | 19 + .../warehouse/cqe/DwLayerQueryCommand.java | 14 + .../warehouse/cqe/DwLayerUpdateCommand.java | 20 + .../cqe/DwModifierCreateCommand.java | 37 + .../warehouse/cqe/DwModifierQueryCommand.java | 16 + .../cqe/DwModifierUpdateCommand.java | 39 + .../cqe/DwStatisticalPeriodCreateCommand.java | 20 + .../cqe/DwStatisticalPeriodQueryCommand.java | 16 + .../cqe/DwStatisticalPeriodUpdateCommand.java | 21 + .../cqe/DwThemeDomainCreateCommand.java | 17 + .../cqe/DwThemeDomainQueryCommand.java | 14 + .../cqe/DwThemeDomainUpdateCommand.java | 19 + .../warehouse/cqe/common/PageCommand.java | 17 + .../warehouse/dto/DwLayerDTO.java | 23 + .../warehouse/dto/DwLayerListItemDTO.java | 21 + .../warehouse/dto/DwModifierDTO.java | 25 + .../warehouse/dto/DwModifierListDTO.java | 18 + .../warehouse/dto/DwModifierListItemDTO.java | 22 + .../dto/DwStatisticalPeriodListItemDTO.java | 22 + .../warehouse/dto/DwThemeDomainDTO.java | 21 + .../dto/DwThemeDomainListItemDTO.java | 21 + .../wedatasphere/warehouse/dto/PageInfo.java | 17 + .../warehouse/exception/DwException.java | 56 + .../warehouse/exception/DwExceptionCode.java | 27 + .../service/DwDomainReferenceAdapter.java | 237 + .../warehouse/service/DwDsService.java | 13 + .../warehouse/service/DwLayerService.java | 29 + .../warehouse/service/DwModifierService.java | 27 + .../service/DwStatisticalPeriodService.java | 27 + .../service/DwThemeDomainService.java | 25 + .../service/impl/DwDsServiceImpl.java | 83 + .../service/impl/DwLayerServiceImpl.java | 523 + .../service/impl/DwModifierServiceImpl.java | 455 + .../impl/DwStatisticalPeriodServiceImpl.java | 446 + .../impl/DwThemeDomainServiceImpl.java | 431 + .../warehouse/utils/PreconditionUtil.java | 84 + .../warehouse/utils/RegexUtil.java | 30 + .../warehouse/LinkisRemoteClientHolder.scala | 72 + .../warehouse/RemoteClientTest.java | 9 + .../warehouse/DwLayerRemoteClientTest.scala | 54 + .../dss-governance-dao/pom.xml | 75 + .../warehouse/dao/domain/DwLayer.java | 72 + .../dao/domain/DwLayerGeneralizeRule.java | 56 + .../warehouse/dao/domain/DwModifier.java | 76 + .../warehouse/dao/domain/DwModifierList.java | 45 + .../dao/domain/DwStatisticalPeriod.java | 77 + .../warehouse/dao/domain/DwThemeDomain.java | 64 + .../dao/domain/common/DssWorkspaceEntity.java | 7 + .../interceptor/DssWorkspaceNameAdapter.java | 14 + ...kspaceNameAutoExtractQueryInterceptor.java | 91 + ...paceNameAutoTransformUpdateInteceptor.java | 81 + .../interceptor/NameAttachWorkspaceTrans.java | 11 + .../warehouse/dao/mapper/DwLayerMapper.java | 15 + .../dao/mapper/DwModifierListMapper.java | 9 + .../dao/mapper/DwModifierMapper.java | 9 + .../dao/mapper/DwStatisticalPeriodMapper.java | 22 + .../dao/mapper/DwThemeDomainMapper.java | 15 + .../mapper/impl/DwStatisticalPeriodMapper.xml | 33 + .../dao/vo/DwStatisticalPeriodVo.java | 60 + dss-apps/dss-datawarehouse-design/pom.xml | 154 + .../src/main/resources/log4j.properties | 2 +- .../impl/LinkisNodeExecutionImpl.java | 3 +- .../linkis/node/execution/job/Builder.java | 2 +- .../node/execution/parser/CodeParser.java | 2 +- .../service/impl/BuildJobActionImpl.java | 4 +- .../utils/LinkisJobExecutionUtils.java | 2 +- k8s/build.info | 4 +- .../dss-data-assets-server.Dockerfile | 9 + .../dss-data-governance-server.Dockerfile | 9 - .../dss-data-warehouse-server.Dockerfile | 9 + .../dss-datamodel-center-server.Dockerfile | 9 + .../client/DSSDolphinSchedulerClient.scala | 2 +- .../DolphinSchedulerAppConnLinkisJob.scala | 3 +- .../job/DolphinSchedulerJobBuilder.scala | 2 +- .../DolphinSchedulerTokenRestfulApi.java | 2 +- pom.xml | 6 +- sbin/common.sh | 10 +- sbin/dss-daemon.sh | 2 +- sbin/dss-start-all.sh | 26 +- sbin/dss-stop-all.sh | 14 +- sbin/ext/dss-data-api-server | 2 +- ...vernance-server => dss-data-assets-server} | 6 +- sbin/ext/dss-data-warehouse-server | 85 + sbin/ext/dss-datamodel-center-server | 85 + sbin/k8s/dss-data-assets-server.sh | 25 + ...server.sh => dss-data-warehouse-server.sh} | 4 +- sbin/k8s/dss-datamodel-center-server.sh | 25 + web/config.json | 32 +- web/package-lock.json | 73062 +++++++++++----- web/package.json | 11 +- .../assets/styles/console.scss | 69 + .../directive/clipboard/clipboard.js | 49 + .../directive/clipboard/index.js | 13 + web/packages/dataAssetManage/i18n/en.json | 14 + web/packages/dataAssetManage/i18n/zh.json | 14 + .../module/common/eventBus/event-bus.js | 3 + .../dataAssetManage/module/common/iCard.vue | 74 + .../dataAssetManage/module/common/navMenu.vue | 152 + .../module/common/tabCard/index.vue | 94 + .../module/common/tabList/index.scss | 110 + .../module/common/tabList/index.vue | 175 + .../module/common/tabList/tabs.vue | 80 + .../dataAssetManage/module/common/title.vue | 41 + .../module/common/tree/tree-item.vue | 168 + .../module/common/tree/tree.vue | 121 + .../module/common/treeMenu.vue | 201 + .../module/components/tabCard/index.vue | 81 + .../module/dataAssetManage/assetsIndex.vue | 230 + .../module/dataAssetManage/index.js | 10 + .../module/dataAssetManage/index.vue | 140 + .../module/dataAssetManage/overview.vue | 186 + web/packages/dataAssetManage/router.js | 61 + web/packages/dataAssetManage/service/api.js | 123 + .../dataAssetManage/service/db/node.js | 103 + .../dataAssetManage/service/db/project.js | 118 + .../dataAssetManage/utils/clipboard.js | 43 + .../dataAssetManage/utils/fomatSQL.js | 23 + .../dataAssetManage/utils/formatDate.js | 11 + web/packages/dataAssetManage/utils/storage.js | 11 + .../components/lineage/icon/AtlasServer.png | Bin 0 -> 3652 bytes .../components/lineage/icon/DataSet.png | Bin 0 -> 3108 bytes .../components/lineage/icon/avro.png | Bin 0 -> 4608 bytes .../components/lineage/icon/aws.png | Bin 0 -> 3825 bytes .../components/lineage/icon/azure.png | Bin 0 -> 3839 bytes .../assetsInfo/components/lineage/icon/db.png | Bin 0 -> 3634 bytes .../lineage/icon/disabled/AtlasServer.png | Bin 0 -> 4921 bytes .../lineage/icon/disabled/DataSet.png | Bin 0 -> 3362 bytes .../components/lineage/icon/disabled/avro.png | Bin 0 -> 5707 bytes .../components/lineage/icon/disabled/aws.png | Bin 0 -> 7337 bytes .../lineage/icon/disabled/azure.png | Bin 0 -> 5032 bytes .../components/lineage/icon/disabled/db.png | Bin 0 -> 4729 bytes .../lineage/icon/disabled/falcon.png | Bin 0 -> 5880 bytes .../icon/disabled/falcon_feed_creation.png | Bin 0 -> 7833 bytes .../icon/disabled/falcon_feed_replication.png | Bin 0 -> 7833 bytes .../lineage/icon/disabled/falcon_process.png | Bin 0 -> 7833 bytes .../lineage/icon/disabled/file_system.png | Bin 0 -> 6613 bytes .../lineage/icon/disabled/flink.png | Bin 0 -> 6876 bytes .../icon/disabled/flink_application.png | Bin 0 -> 6876 bytes .../disabled/flink_application_processes.png | Bin 0 -> 8213 bytes .../lineage/icon/disabled/flink_process.png | Bin 0 -> 6876 bytes .../components/lineage/icon/disabled/gcp.png | Bin 0 -> 3977 bytes .../lineage/icon/disabled/hadoop.png | Bin 0 -> 6408 bytes .../lineage/icon/disabled/hbase.png | Bin 0 -> 5289 bytes .../lineage/icon/disabled/hbase_column.png | Bin 0 -> 5553 bytes .../icon/disabled/hbase_column_family.png | Bin 0 -> 5553 bytes .../lineage/icon/disabled/hbase_table.png | Bin 0 -> 5831 bytes .../lineage/icon/disabled/hdfs_path.png | Bin 0 -> 6613 bytes .../components/lineage/icon/disabled/hive.png | Bin 0 -> 7791 bytes .../lineage/icon/disabled/hive_column.png | Bin 0 -> 6252 bytes .../icon/disabled/hive_column_lineage.png | Bin 0 -> 8560 bytes .../lineage/icon/disabled/hive_db.png | Bin 0 -> 7713 bytes .../lineage/icon/disabled/hive_process.png | Bin 0 -> 8560 bytes .../icon/disabled/hive_process_execution.png | Bin 0 -> 9730 bytes .../icon/disabled/hive_storagedesc.png | Bin 0 -> 7190 bytes .../lineage/icon/disabled/hive_table.png | Bin 0 -> 6374 bytes .../lineage/icon/disabled/impala.png | Bin 0 -> 4612 bytes .../icon/disabled/impala_column_lineage.png | Bin 0 -> 6541 bytes .../lineage/icon/disabled/impala_process.png | Bin 0 -> 6541 bytes .../lineage/icon/disabled/jms_topic.png | Bin 0 -> 6900 bytes .../lineage/icon/disabled/kafka.png | Bin 0 -> 5285 bytes .../lineage/icon/disabled/kafka_consumer.png | Bin 0 -> 4038 bytes .../icon/disabled/kafka_consumer_group.png | Bin 0 -> 4181 bytes .../icon/disabled/kafka_consumer_lineage.png | Bin 0 -> 5299 bytes .../lineage/icon/disabled/kafka_producer.png | Bin 0 -> 3737 bytes .../icon/disabled/kafka_producer_lineage.png | Bin 0 -> 5108 bytes .../lineage/icon/disabled/kafka_topic.png | Bin 0 -> 3689 bytes .../lineage/icon/disabled/ozone.png | Bin 0 -> 4929 bytes .../lineage/icon/disabled/ozone_bucket.png | Bin 0 -> 4378 bytes .../lineage/icon/disabled/ozone_key.png | Bin 0 -> 4406 bytes .../lineage/icon/disabled/ozone_volume.png | Bin 0 -> 3658 bytes .../lineage/icon/disabled/process.png | Bin 0 -> 5702 bytes .../lineage/icon/disabled/rdbms.png | Bin 0 -> 3541 bytes .../lineage/icon/disabled/rdbms_column.png | Bin 0 -> 4016 bytes .../lineage/icon/disabled/rdbms_db.png | Bin 0 -> 5656 bytes .../lineage/icon/disabled/rdbms_table.png | Bin 0 -> 4165 bytes .../lineage/icon/disabled/spark.png | Bin 0 -> 5584 bytes .../lineage/icon/disabled/spark_process.png | Bin 0 -> 7318 bytes .../lineage/icon/disabled/spark_table.png | Bin 0 -> 5005 bytes .../lineage/icon/disabled/sqoop.png | Bin 0 -> 4081 bytes .../lineage/icon/disabled/sqoop_db.png | Bin 0 -> 6123 bytes .../lineage/icon/disabled/sqoop_process.png | Bin 0 -> 6862 bytes .../lineage/icon/disabled/storm.png | Bin 0 -> 5787 bytes .../lineage/icon/disabled/storm_bolt.png | Bin 0 -> 5661 bytes .../lineage/icon/disabled/storm_spout.png | Bin 0 -> 6196 bytes .../lineage/icon/disabled/storm_topology.png | Bin 0 -> 6268 bytes .../lineage/icon/disabled/table.png | Bin 0 -> 3000 bytes .../components/lineage/icon/falcon.png | Bin 0 -> 3349 bytes .../lineage/icon/falcon_feed_creation.png | Bin 0 -> 5631 bytes .../lineage/icon/falcon_feed_replication.png | Bin 0 -> 5631 bytes .../lineage/icon/falcon_process.png | Bin 0 -> 5631 bytes .../components/lineage/icon/file_system.png | Bin 0 -> 5564 bytes .../components/lineage/icon/flink.png | Bin 0 -> 5788 bytes .../lineage/icon/flink_application.png | Bin 0 -> 5788 bytes .../icon/flink_application_processes.png | Bin 0 -> 4560 bytes .../components/lineage/icon/flink_process.png | Bin 0 -> 5788 bytes .../components/lineage/icon/gcp.png | Bin 0 -> 4899 bytes .../components/lineage/icon/hadoop.png | Bin 0 -> 4867 bytes .../components/lineage/icon/hbase.png | Bin 0 -> 3641 bytes .../components/lineage/icon/hbase_column.png | Bin 0 -> 4198 bytes .../lineage/icon/hbase_column_family.png | Bin 0 -> 4198 bytes .../components/lineage/icon/hbase_table.png | Bin 0 -> 4096 bytes .../components/lineage/icon/hdfs_path.png | Bin 0 -> 5564 bytes .../components/lineage/icon/hive.png | Bin 0 -> 5899 bytes .../components/lineage/icon/hive_column.png | Bin 0 -> 5009 bytes .../lineage/icon/hive_column_lineage.png | Bin 0 -> 6806 bytes .../components/lineage/icon/hive_db.png | Bin 0 -> 6328 bytes .../components/lineage/icon/hive_process.png | Bin 0 -> 6806 bytes .../lineage/icon/hive_process_execution.png | Bin 0 -> 5611 bytes .../lineage/icon/hive_storagedesc.png | Bin 0 -> 5807 bytes .../components/lineage/icon/hive_table.png | Bin 0 -> 5027 bytes .../components/lineage/icon/hourglass.svg | 3 + .../components/lineage/icon/impala.png | Bin 0 -> 3582 bytes .../lineage/icon/impala_column_lineage.png | Bin 0 -> 5896 bytes .../lineage/icon/impala_process.png | Bin 0 -> 5896 bytes .../components/lineage/icon/jms_topic.png | Bin 0 -> 5860 bytes .../components/lineage/icon/kafka.png | Bin 0 -> 3979 bytes .../lineage/icon/kafka_consumer.png | Bin 0 -> 5123 bytes .../lineage/icon/kafka_consumer_group.png | Bin 0 -> 5631 bytes .../lineage/icon/kafka_consumer_lineage.png | Bin 0 -> 5847 bytes .../lineage/icon/kafka_producer.png | Bin 0 -> 5187 bytes .../lineage/icon/kafka_producer_lineage.png | Bin 0 -> 6682 bytes .../components/lineage/icon/kafka_topic.png | Bin 0 -> 3730 bytes .../components/lineage/icon/ozone.png | Bin 0 -> 3512 bytes .../components/lineage/icon/ozone_bucket.png | Bin 0 -> 5110 bytes .../components/lineage/icon/ozone_key.png | Bin 0 -> 5005 bytes .../components/lineage/icon/ozone_volume.png | Bin 0 -> 4916 bytes .../components/lineage/icon/process.png | Bin 0 -> 4249 bytes .../components/lineage/icon/rdbms.png | Bin 0 -> 3173 bytes .../components/lineage/icon/rdbms_column.png | Bin 0 -> 3909 bytes .../components/lineage/icon/rdbms_db.png | Bin 0 -> 5153 bytes .../components/lineage/icon/rdbms_table.png | Bin 0 -> 3992 bytes .../components/lineage/icon/spark.png | Bin 0 -> 4346 bytes .../components/lineage/icon/spark_process.png | Bin 0 -> 6123 bytes .../components/lineage/icon/spark_table.png | Bin 0 -> 4339 bytes .../components/lineage/icon/sqoop.png | Bin 0 -> 3168 bytes .../components/lineage/icon/sqoop_db.png | Bin 0 -> 5287 bytes .../components/lineage/icon/sqoop_process.png | Bin 0 -> 5750 bytes .../components/lineage/icon/storm.png | Bin 0 -> 4363 bytes .../components/lineage/icon/storm_bolt.png | Bin 0 -> 4846 bytes .../components/lineage/icon/storm_spout.png | Bin 0 -> 4995 bytes .../lineage/icon/storm_topology.png | Bin 0 -> 5333 bytes .../components/lineage/icon/table.png | Bin 0 -> 2288 bytes .../assetsInfo/components/lineage/index.scss | 47 + .../assetsInfo/components/lineage/index.vue | 201 + .../dataAssetManage/view/assetsInfo/index.vue | 296 + .../view/assetsSearch/index.vue | 424 + .../dataAssetManage/view/fieldInfo/index.vue | 295 + .../view/layout/emptylayout.vue | 3 + .../dataAssetManage/view/layout/index.vue | 19 + .../view/layout/sidebar-sub-menu.vue | 61 + .../dataAssetManage/view/layout/sidebar.vue | 39 + .../dataAssetManage/view/rangeInfo/index.vue | 44 + .../dataModelCenter/assets/styles/common.scss | 4 + web/packages/dataModelCenter/i18n/en.json | 3 + web/packages/dataModelCenter/i18n/zh.json | 3 + .../module/dimension/editModal.vue | 287 + .../dataModelCenter/module/dimension/index.js | 10 + .../module/dimension/index.vue | 284 + .../module/indicators/editModal.vue | 986 + .../module/indicators/index.js | 10 + .../module/indicators/index.vue | 347 + .../module/indicators/selectPage.vue | 108 + .../module/indicators/showVersionModal.vue | 295 + .../module/indicators/statement.js | 56 + .../module/indicators/versionListModal.vue | 120 + .../module/labels/editModal.vue | 360 + .../dataModelCenter/module/labels/index.js | 10 + .../dataModelCenter/module/labels/index.vue | 304 + .../module/measure/editModal.vue | 295 + .../dataModelCenter/module/measure/index.js | 10 + .../dataModelCenter/module/measure/index.vue | 289 + .../module/tableEditor/columnEditor.vue | 373 + .../module/tableEditor/index.js | 10 + .../module/tableEditor/index.vue | 721 + .../module/tableEditor/selectModel.vue | 185 + .../dataModelCenter/module/tableInfo/index.js | 10 + .../module/tableInfo/index.vue | 876 + .../module/tableSearch/index.js | 10 + .../module/tableSearch/index.vue | 640 + .../module/tableSearch/versionListModal.vue | 129 + .../module/tableVersionInfo/index.js | 10 + .../module/tableVersionInfo/index.vue | 420 + web/packages/dataModelCenter/router.js | 106 + .../dataModelCenter/service/api/common.js | 50 + .../dataModelCenter/service/api/dimensions.js | 64 + .../dataModelCenter/service/api/indicators.js | 109 + .../dataModelCenter/service/api/labels.js | 69 + .../dataModelCenter/service/api/measures.js | 65 + .../service/api/tableManage.js | 230 + .../dataModelCenter/utils/clipboard.js | 43 + .../dataModelCenter/utils/fomatSQL.js | 23 + .../dataModelCenter/utils/formatDate.js | 10 + .../dataModelCenter/view/dimension/index.vue | 11 + .../dataModelCenter/view/indicators/index.vue | 11 + .../dataModelCenter/view/labels/index.vue | 11 + .../view/layout/emptylayout.vue | 3 + .../dataModelCenter/view/layout/index.vue | 28 + .../view/layout/sidebar-sub-menu.vue | 61 + .../dataModelCenter/view/layout/sidebar.vue | 41 + .../dataModelCenter/view/measure/index.vue | 11 + .../view/tableManage/tableEditor/index.vue | 11 + .../view/tableManage/tableInfo/index.vue | 11 + .../view/tableManage/tableSearch/index.vue | 11 + .../tableManage/tableVersionInfo/index.vue | 11 + .../assets/styles/common.scss | 4 + web/packages/dataWarehouseDesign/i18n/en.json | 1 + web/packages/dataWarehouseDesign/i18n/zh.json | 1 + .../module/layered/editModal.vue | 306 + .../module/layered/index.js | 10 + .../module/layered/index.vue | 365 + .../module/modifier/editModal.vue | 348 + .../module/modifier/index.js | 10 + .../module/modifier/index.vue | 278 + .../module/statPeriod/editModal.vue | 340 + .../module/statPeriod/index.js | 10 + .../module/statPeriod/index.vue | 302 + .../module/themeDomains/editModal.vue | 267 + .../module/themeDomains/index.js | 10 + .../module/themeDomains/index.vue | 279 + web/packages/dataWarehouseDesign/router.js | 56 + .../dataWarehouseDesign/service/api/common.js | 16 + .../dataWarehouseDesign/service/api/layer.js | 72 + .../service/api/modifiers.js | 55 + .../service/api/statisticalPeriods.js | 55 + .../dataWarehouseDesign/service/api/theme.js | 56 + .../dataWarehouseDesign/utils/formatDate.js | 11 + .../view/layered/index.vue | 11 + .../view/layout/emptylayout.vue | 3 + .../dataWarehouseDesign/view/layout/index.vue | 24 + .../view/layout/sidebar-sub-menu.vue | 61 + .../view/layout/sidebar.vue | 41 + .../view/modifier/index.vue | 11 + .../view/statPeriod/index.vue | 11 + .../view/themeDomains/index.vue | 11 + web/packages/shared/common/config/apiPath.js | 5 +- web/packages/workspace/i18n/zh.json | 1 + .../workspace/module/management/index.vue | 12 +- web/patches/package.json | 82 + 851 files changed, 95581 insertions(+), 25411 deletions(-) create mode 100644 conf/dss-data-assets-server.properties delete mode 100644 conf/dss-data-governance-server.properties create mode 100644 conf/dss-data-warehouse-server.properties create mode 100644 conf/dss-datamodel-center-server.properties create mode 100644 db/apps/datamodel.sql create mode 100644 db/apps/datawarehouse.sql delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/pom.xml delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/MetaInfoMapper.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/MetaInfoMapperImpl.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/WorkspaceInfoMapper.xml delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveStorageInfo.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblClassificationInfo.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblDetailInfo.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblLabelInfo.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetRestful.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetTblRestful.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/AssetService.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/WorkspaceInfoService.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/AssetServiceImpl.java delete mode 100644 dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/WorkspaceInfoServiceImpl.java delete mode 100644 dss-apps/dss-data-governance/dss-data-classification-server/pom.xml delete mode 100644 dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/restful/ClassificationRestful.java delete mode 100644 dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/ClassificationService.java delete mode 100644 dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/impl/ClassificationServiceImpl.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClassificationV2.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClient.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasService.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/conf/AtlasConf.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DAOException.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DataGovernanceException.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DataSourceUtil.java delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/assembly/distribution.xml delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/atlas-application.properties delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss-data-governance-server.properties delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss.properties delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j2.xml delete mode 100644 dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/token.properties delete mode 100644 dss-apps/dss-data-governance/pom.xml create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/pom.xml create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveSimpleInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblStatsDTO.java rename dss-apps/{dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HivePartInfo.java => dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java} (61%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/SearchLabelInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/AbstractRemoteClient.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsRemoteClient.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/RemoteClient.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/exception/DataAssetsClientBuilderException.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/impl/LinkisDataAssetsRemoteClient.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindModelTypeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateModelTypeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DataAssetsAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteModelTypeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblBasicAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblCreateAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblPartitionAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetTblPartInfoByNameAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblSizeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblStatsAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveDbAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveTblAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindModelTypeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateLabelAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateModelTypeAction.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindModelTypeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateModelTypeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteModelTypeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblBasicResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblCreateResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartInfoByNameResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartitionResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblSizeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblStatsResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveDbResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveTblResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindModelTypeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateLabelResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateModelTypeResult.scala create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-client/src/test/scala/com/webank/wedatasphere/dss/data/governance/TestDataAssetsRemoteClient.scala rename dss-apps/{dss-data-governance/dss-data-governance-common => dss-dataasset-management/dss-data-assets-server}/pom.xml (69%) rename dss-apps/{dss-data-governance/dss-data-governance-common => dss-dataasset-management/dss-data-assets-server}/src/main/assembly/distribution.xml (94%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasClient.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasService.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientCommonConfig.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientStrategy.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/DataWorkspaceRemoteConfig.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/GovernanceConf.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/MetaInfoMapper.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableColumnCountQueryMapper.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizeInfoMapper.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizePartitionInfoMapper.java rename dss-apps/{dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset => dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance}/dao/WorkspaceInfoMapper.java (63%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/impl/MetaInfoMapperImpl.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/HiveTblStatsDTO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/SearchLabelDTO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/GlossaryConstant.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblDetailInfo.java rename dss-apps/{dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset => dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance}/entity/HiveTblSimpleInfo.java (50%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/RelatedObjectId.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableColumnCount.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TablePartitionSizeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableSizeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DAOException.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DataGovernanceException.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/restful/DSSDataGovernanceAssetRestful.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AssetService.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AuthenticationClientStrategy.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/WorkspaceInfoService.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/AssetServiceImpl.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/WorkspaceInfoServiceImpl.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DataSourceUtil.java rename dss-apps/{dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common => dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance}/utils/DateUtil.java (93%) rename dss-apps/{dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common => dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance}/utils/HttpClientUtil.java (93%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindLabelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindModelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateLabelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateModelTypeVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteLabelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteModelTypeVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindLabelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindModelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateLabelVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateModelTypeVO.java create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/application.yml create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/atlas-application.properties create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/linkis.properties rename dss-apps/{dss-data-governance/dss-data-governance-server => dss-dataasset-management/dss-data-assets-server}/src/main/resources/log4j.properties (52%) create mode 100644 dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j2.xml rename dss-apps/{dss-data-governance/dss-data-governance-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DSSDataGovernanceApplication.scala => dss-dataasset-management/dss-data-assets-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsApplication.scala} (92%) create mode 100644 dss-apps/dss-dataasset-management/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/ClassificationConstant.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/CreateModelTypeInfo.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/HiveSimpleInfo.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/UpdateModelTypeInfo.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/AbstractRemoteClient.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/DatamodelCenterRemoteClient.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/RemoteClient.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/exception/DatamodelCenterClientBuilderException.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/impl/LinkisDatamodelCenterRemoteClient.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/CyclesReferenceAction.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/DatamodelCenterAction.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/LayersReferenceAction.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ModifiersReferenceAction.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ThemesReferenceAction.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/CyclesReferenceResult.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/LayersReferenceResult.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ModifiersReferenceResult.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ThemesReferenceResult.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/test/scala/com/webank/wedatasphere/dss/datamodel/center/client/TestDatamodelCenterRemoteClient.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ClientStrategy.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/CommonConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseAssetsRemoteConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseGovernanceConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWorkspaceRemoteConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/LinkisJobConfiguration.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ModelMapperConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MyMetaObjectHandler.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MybatisPlusConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ThreadPoolTaskConfig.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ColumnType.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ErrorCode.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/IndicatorSourceInfoConstant.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/LabelConstant.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ModeType.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceExpression.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceKey.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/TabelExternalType.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelAuthentication.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContext.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolder.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolderStrategy.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/ThreadLocalSecurityContextHolderStrategy.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/CreateTableDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/PreviewDataDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindLabelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindModelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateLabelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateModelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteLabelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteModelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindLabelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindModelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateLabelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateModelEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/exception/DSSDatamodelCenterException.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/filter/AuthFilter.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonDataModelJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonExistsDataModelJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTaskBuilder.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/PreviewDataModelJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/listener/AssertsListener.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AssertsSyncService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AuthenticationClientStrategy.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/CycleReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseDimensionReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseIndicatorReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseLabelReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseMeasuredReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseTableReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelIndicatorReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelReferencService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelTableReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorCycleReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorDimensionReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorIndicatorReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorLayerReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorMeasuredReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorModifierReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LayerReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasureReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasuredThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ModifierReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableCycleReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableDimensionReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableIndicatorReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLabelReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLayerReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableMeasuredReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableModifierReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ThemeReferenceService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/impl/DatamodelReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/DataModelUJESJobTaskBuilder.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/AbstractDataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/CreateTableDataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataExistsDataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DropTableDataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/PreviewDataModelUJESJobLauncher.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/CreateTableDataModelUJESJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataExistsDataModelUJESJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataModelUJESJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DropTableDataModelUJESJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/PreviewDataModelUJESJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/vo/PageVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/TestJobTask.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/UJESClientImplTestJ.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_ddl.sql create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_dml.sql create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/pom.xml rename dss-apps/{dss-data-governance/dss-data-asset-server => dss-datamodel-center/dss-datamodel-center-server}/src/main/assembly/distribution.xml (59%) create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/application.yml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/linkis.properties create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j.properties create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j2.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/scala/com/webank/wedatasphere/dss/datamodel/DataModelApplication.scala create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/DssDatamodelDimensionMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/DssDatamodelDimensionMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dto/DimensionQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/entity/DssDatamodelDimension.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/restful/DimensionRestfulApi.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/DimensionService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DataWarehouseDimensionReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DimensionServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionEnableVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionUpdateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorContentMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorVersionMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/IndicatorQueryMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorContentMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorVersionMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorContentQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicator.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorContent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorQuery.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorVersion.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/restful/IndicatorRestfulApi.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorContentService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorVersionService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DataWarehouseIndicatorReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DatamodelIndicatorReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorContentServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorVersionServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/CycleVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorContentVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorEnableVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorUpdateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionRollBackVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/LayerVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/ModifierVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/DssDatamodelMeasureMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/impl/DssDatamodelMeasureMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dto/MeasureQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/entity/DssDatamodelMeasure.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/restful/MeasureRestfulApi.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/MeasureService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/DataWarehouseMeasuredReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/MeasureServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureEnableVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureUpdateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/pom.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelDictionaryMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelLabelMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableCollcetionMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableColumnsMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMaterializedHistoryMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStaticsMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStatsMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableVersionMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/TableQueryMapper.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelDictionaryMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelLabelMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableCollcetionMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableColumnsMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMaterializedHistoryMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStaticsMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStatsMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableVersionMapper.xml create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblDetailInfoDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfo.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfoDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/LabelQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ListDataBasesVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ModelTypeDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/PartInfoDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableCollectionDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableColumnQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableHeadlineDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableListDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableStatsDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableVersionQueryDTO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelDictionary.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelLabel.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTabelQuery.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTable.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableCollcetion.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableColumns.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableMaterializedHistory.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStatics.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStats.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableVersion.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindLabelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByColumnsEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/TableFirstBindEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindLabelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByColumnsEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindLabelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByColumnsEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByTableEvent.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableFirstBindListener.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableLabelListener.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableModelListener.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchema.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchemaDdlBuilder.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/restful/TableRestfulApi.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/LabelService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableCollectService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableColumnsService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableDictionaryService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableMaterializedHistoryService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableStatsService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableVersionService.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseLabelReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseTableReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DatamodelTableReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/LabelServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableCollectServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableColumnsServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableDictionaryServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableMaterializedHistoryServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableStatsServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableThemeReferenceServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableVersionServiceImpl.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelEnableVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelUpdateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelsQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCheckDataVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectCancelVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnBindVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnsAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateSqlVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDataPreviewVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDatabasesQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDictionaryListVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableListVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TablePartitionStatsVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableQueryOneVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableUpdateVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionAddVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionQueryVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionRollBackVO.java create mode 100644 dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TblPartitionStatsVO.java create mode 100644 dss-apps/dss-datamodel-center/pom.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/pom.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwLayerVO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwModifierVO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwStatisticalPeriodVO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwThemeDomainVO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/AbstractDwRemoteClient.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwAction.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwRemoteClient.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/GovernanceDwRemoteClient.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/RemoteClient.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwLayerAction.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwModifierAction.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwStatisticalPeriodAction.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwThemeDomainAction.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListLayersResult.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListModifiersResult.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListStatisticalPeriodsResult.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListThemeDomainsResult.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/java/com/webank/wedatasphere/warehouse/client/RemoteClientTest.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/scala/com/webank/wedatasphere/warehouse/client/DwLayerRemoteClientTest.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/pom.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceConfig.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MyBatisMapperScannerConfig.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MybatisConfigurationFactory.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/datawarehouse.sql create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/ddl.sql create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/dml.sql rename dss-apps/{dss-data-governance/dss-data-governance-server => dss-datawarehouse-design/dss-data-warehouse-server}/pom.xml (80%) rename dss-apps/{dss-data-governance/dss-data-classification-server => dss-datawarehouse-design/dss-data-warehouse-server}/src/main/assembly/distribution.xml (59%) create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/MybatisPlusConfig.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/WebMvcConfig.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwDsRestfulApi.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwLayerRestfulApi.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwModifierRestfulApi.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwStatisticalPeriodRestfulApi.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwThemeDomainRestfulApi.java rename dss-apps/{dss-data-governance/dss-data-governance-server => dss-datawarehouse-design/dss-data-warehouse-server}/src/main/resources/application-dss.yml (100%) create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss-data-warehouse-server.properties create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss.properties create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j.properties create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j2.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/mybatis-config.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/scala/com/webank/wedatasphere/warehouse/DataWarehouseApplication.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/pom.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DataSourceDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DwDataSourceConfiguration.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerCreateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerQueryCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerUpdateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierCreateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierQueryCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierUpdateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodCreateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodQueryCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodUpdateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainCreateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainQueryCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainUpdateCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/common/PageCommand.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerListItemDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListItemDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwStatisticalPeriodListItemDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainListItemDTO.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/PageInfo.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwException.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwExceptionCode.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDomainReferenceAdapter.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDsService.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwLayerService.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwModifierService.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwStatisticalPeriodService.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwThemeDomainService.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwDsServiceImpl.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwLayerServiceImpl.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwModifierServiceImpl.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwStatisticalPeriodServiceImpl.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwThemeDomainServiceImpl.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/PreconditionUtil.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/RegexUtil.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/scala/com/webank/wedatasphere/warehouse/LinkisRemoteClientHolder.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/java/com/webank/wedatasphere/warehouse/RemoteClientTest.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/scala/com/webank/wedatasphere/warehouse/DwLayerRemoteClientTest.scala create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/pom.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayer.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayerGeneralizeRule.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifier.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifierList.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwStatisticalPeriod.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwThemeDomain.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/common/DssWorkspaceEntity.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAdapter.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoExtractQueryInterceptor.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoTransformUpdateInteceptor.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/NameAttachWorkspaceTrans.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwLayerMapper.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierListMapper.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierMapper.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwStatisticalPeriodMapper.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwThemeDomainMapper.java create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/impl/DwStatisticalPeriodMapper.xml create mode 100644 dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/vo/DwStatisticalPeriodVo.java create mode 100644 dss-apps/dss-datawarehouse-design/pom.xml create mode 100644 k8s/dockerfile/dss-data-assets-server.Dockerfile delete mode 100644 k8s/dockerfile/dss-data-governance-server.Dockerfile create mode 100644 k8s/dockerfile/dss-data-warehouse-server.Dockerfile create mode 100644 k8s/dockerfile/dss-datamodel-center-server.Dockerfile rename sbin/ext/{dss-data-governance-server => dss-data-assets-server} (92%) create mode 100644 sbin/ext/dss-data-warehouse-server create mode 100644 sbin/ext/dss-datamodel-center-server create mode 100644 sbin/k8s/dss-data-assets-server.sh rename sbin/k8s/{dss-data-governance-server.sh => dss-data-warehouse-server.sh} (79%) create mode 100644 sbin/k8s/dss-datamodel-center-server.sh create mode 100644 web/packages/dataAssetManage/assets/styles/console.scss create mode 100644 web/packages/dataAssetManage/directive/clipboard/clipboard.js create mode 100644 web/packages/dataAssetManage/directive/clipboard/index.js create mode 100644 web/packages/dataAssetManage/i18n/en.json create mode 100644 web/packages/dataAssetManage/i18n/zh.json create mode 100644 web/packages/dataAssetManage/module/common/eventBus/event-bus.js create mode 100644 web/packages/dataAssetManage/module/common/iCard.vue create mode 100644 web/packages/dataAssetManage/module/common/navMenu.vue create mode 100644 web/packages/dataAssetManage/module/common/tabCard/index.vue create mode 100644 web/packages/dataAssetManage/module/common/tabList/index.scss create mode 100644 web/packages/dataAssetManage/module/common/tabList/index.vue create mode 100644 web/packages/dataAssetManage/module/common/tabList/tabs.vue create mode 100644 web/packages/dataAssetManage/module/common/title.vue create mode 100644 web/packages/dataAssetManage/module/common/tree/tree-item.vue create mode 100644 web/packages/dataAssetManage/module/common/tree/tree.vue create mode 100644 web/packages/dataAssetManage/module/common/treeMenu.vue create mode 100644 web/packages/dataAssetManage/module/components/tabCard/index.vue create mode 100644 web/packages/dataAssetManage/module/dataAssetManage/assetsIndex.vue create mode 100644 web/packages/dataAssetManage/module/dataAssetManage/index.js create mode 100644 web/packages/dataAssetManage/module/dataAssetManage/index.vue create mode 100644 web/packages/dataAssetManage/module/dataAssetManage/overview.vue create mode 100644 web/packages/dataAssetManage/router.js create mode 100644 web/packages/dataAssetManage/service/api.js create mode 100644 web/packages/dataAssetManage/service/db/node.js create mode 100644 web/packages/dataAssetManage/service/db/project.js create mode 100644 web/packages/dataAssetManage/utils/clipboard.js create mode 100644 web/packages/dataAssetManage/utils/fomatSQL.js create mode 100644 web/packages/dataAssetManage/utils/formatDate.js create mode 100644 web/packages/dataAssetManage/utils/storage.js create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/AtlasServer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/DataSet.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/avro.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/aws.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/azure.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/AtlasServer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/DataSet.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/avro.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/aws.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/azure.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon_feed_creation.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon_feed_replication.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/file_system.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink_application.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink_application_processes.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/gcp.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hadoop.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase_column_family.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hdfs_path.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_process_execution.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_storagedesc.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/impala.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/impala_column_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/impala_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/jms_topic.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_group.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_producer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_producer_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_topic.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_bucket.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_key.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_volume.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/spark.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/spark_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/spark_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_bolt.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_spout.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_topology.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon_feed_creation.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon_feed_replication.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/file_system.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/flink.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/flink_application.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/flink_application_processes.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/flink_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/gcp.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hadoop.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column_family.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hdfs_path.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_column_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_process_execution.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_storagedesc.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hourglass.svg create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala_column_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/jms_topic.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer_group.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_producer.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_producer_lineage.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_topic.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone_bucket.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone_key.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone_volume.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_column.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/spark.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/spark_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/spark_table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/sqoop.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/sqoop_db.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/sqoop_process.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/storm.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/storm_bolt.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/storm_spout.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/storm_topology.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/table.png create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/index.scss create mode 100644 web/packages/dataAssetManage/view/assetsInfo/components/lineage/index.vue create mode 100644 web/packages/dataAssetManage/view/assetsInfo/index.vue create mode 100644 web/packages/dataAssetManage/view/assetsSearch/index.vue create mode 100644 web/packages/dataAssetManage/view/fieldInfo/index.vue create mode 100644 web/packages/dataAssetManage/view/layout/emptylayout.vue create mode 100644 web/packages/dataAssetManage/view/layout/index.vue create mode 100644 web/packages/dataAssetManage/view/layout/sidebar-sub-menu.vue create mode 100644 web/packages/dataAssetManage/view/layout/sidebar.vue create mode 100644 web/packages/dataAssetManage/view/rangeInfo/index.vue create mode 100644 web/packages/dataModelCenter/assets/styles/common.scss create mode 100644 web/packages/dataModelCenter/i18n/en.json create mode 100644 web/packages/dataModelCenter/i18n/zh.json create mode 100644 web/packages/dataModelCenter/module/dimension/editModal.vue create mode 100644 web/packages/dataModelCenter/module/dimension/index.js create mode 100644 web/packages/dataModelCenter/module/dimension/index.vue create mode 100644 web/packages/dataModelCenter/module/indicators/editModal.vue create mode 100644 web/packages/dataModelCenter/module/indicators/index.js create mode 100644 web/packages/dataModelCenter/module/indicators/index.vue create mode 100644 web/packages/dataModelCenter/module/indicators/selectPage.vue create mode 100644 web/packages/dataModelCenter/module/indicators/showVersionModal.vue create mode 100644 web/packages/dataModelCenter/module/indicators/statement.js create mode 100644 web/packages/dataModelCenter/module/indicators/versionListModal.vue create mode 100644 web/packages/dataModelCenter/module/labels/editModal.vue create mode 100644 web/packages/dataModelCenter/module/labels/index.js create mode 100644 web/packages/dataModelCenter/module/labels/index.vue create mode 100644 web/packages/dataModelCenter/module/measure/editModal.vue create mode 100644 web/packages/dataModelCenter/module/measure/index.js create mode 100644 web/packages/dataModelCenter/module/measure/index.vue create mode 100644 web/packages/dataModelCenter/module/tableEditor/columnEditor.vue create mode 100644 web/packages/dataModelCenter/module/tableEditor/index.js create mode 100644 web/packages/dataModelCenter/module/tableEditor/index.vue create mode 100644 web/packages/dataModelCenter/module/tableEditor/selectModel.vue create mode 100644 web/packages/dataModelCenter/module/tableInfo/index.js create mode 100644 web/packages/dataModelCenter/module/tableInfo/index.vue create mode 100644 web/packages/dataModelCenter/module/tableSearch/index.js create mode 100644 web/packages/dataModelCenter/module/tableSearch/index.vue create mode 100644 web/packages/dataModelCenter/module/tableSearch/versionListModal.vue create mode 100644 web/packages/dataModelCenter/module/tableVersionInfo/index.js create mode 100644 web/packages/dataModelCenter/module/tableVersionInfo/index.vue create mode 100644 web/packages/dataModelCenter/router.js create mode 100644 web/packages/dataModelCenter/service/api/common.js create mode 100644 web/packages/dataModelCenter/service/api/dimensions.js create mode 100644 web/packages/dataModelCenter/service/api/indicators.js create mode 100644 web/packages/dataModelCenter/service/api/labels.js create mode 100644 web/packages/dataModelCenter/service/api/measures.js create mode 100644 web/packages/dataModelCenter/service/api/tableManage.js create mode 100644 web/packages/dataModelCenter/utils/clipboard.js create mode 100644 web/packages/dataModelCenter/utils/fomatSQL.js create mode 100644 web/packages/dataModelCenter/utils/formatDate.js create mode 100644 web/packages/dataModelCenter/view/dimension/index.vue create mode 100644 web/packages/dataModelCenter/view/indicators/index.vue create mode 100644 web/packages/dataModelCenter/view/labels/index.vue create mode 100644 web/packages/dataModelCenter/view/layout/emptylayout.vue create mode 100644 web/packages/dataModelCenter/view/layout/index.vue create mode 100644 web/packages/dataModelCenter/view/layout/sidebar-sub-menu.vue create mode 100644 web/packages/dataModelCenter/view/layout/sidebar.vue create mode 100644 web/packages/dataModelCenter/view/measure/index.vue create mode 100644 web/packages/dataModelCenter/view/tableManage/tableEditor/index.vue create mode 100644 web/packages/dataModelCenter/view/tableManage/tableInfo/index.vue create mode 100644 web/packages/dataModelCenter/view/tableManage/tableSearch/index.vue create mode 100644 web/packages/dataModelCenter/view/tableManage/tableVersionInfo/index.vue create mode 100644 web/packages/dataWarehouseDesign/assets/styles/common.scss create mode 100644 web/packages/dataWarehouseDesign/i18n/en.json create mode 100644 web/packages/dataWarehouseDesign/i18n/zh.json create mode 100644 web/packages/dataWarehouseDesign/module/layered/editModal.vue create mode 100644 web/packages/dataWarehouseDesign/module/layered/index.js create mode 100644 web/packages/dataWarehouseDesign/module/layered/index.vue create mode 100644 web/packages/dataWarehouseDesign/module/modifier/editModal.vue create mode 100644 web/packages/dataWarehouseDesign/module/modifier/index.js create mode 100644 web/packages/dataWarehouseDesign/module/modifier/index.vue create mode 100644 web/packages/dataWarehouseDesign/module/statPeriod/editModal.vue create mode 100644 web/packages/dataWarehouseDesign/module/statPeriod/index.js create mode 100644 web/packages/dataWarehouseDesign/module/statPeriod/index.vue create mode 100644 web/packages/dataWarehouseDesign/module/themeDomains/editModal.vue create mode 100644 web/packages/dataWarehouseDesign/module/themeDomains/index.js create mode 100644 web/packages/dataWarehouseDesign/module/themeDomains/index.vue create mode 100644 web/packages/dataWarehouseDesign/router.js create mode 100644 web/packages/dataWarehouseDesign/service/api/common.js create mode 100644 web/packages/dataWarehouseDesign/service/api/layer.js create mode 100644 web/packages/dataWarehouseDesign/service/api/modifiers.js create mode 100644 web/packages/dataWarehouseDesign/service/api/statisticalPeriods.js create mode 100644 web/packages/dataWarehouseDesign/service/api/theme.js create mode 100644 web/packages/dataWarehouseDesign/utils/formatDate.js create mode 100644 web/packages/dataWarehouseDesign/view/layered/index.vue create mode 100644 web/packages/dataWarehouseDesign/view/layout/emptylayout.vue create mode 100644 web/packages/dataWarehouseDesign/view/layout/index.vue create mode 100644 web/packages/dataWarehouseDesign/view/layout/sidebar-sub-menu.vue create mode 100644 web/packages/dataWarehouseDesign/view/layout/sidebar.vue create mode 100644 web/packages/dataWarehouseDesign/view/modifier/index.vue create mode 100644 web/packages/dataWarehouseDesign/view/statPeriod/index.vue create mode 100644 web/packages/dataWarehouseDesign/view/themeDomains/index.vue create mode 100644 web/patches/package.json diff --git a/assembly/bin/executeSQL.sh b/assembly/bin/executeSQL.sh index 8b60d0f08..eb4da7065 100644 --- a/assembly/bin/executeSQL.sh +++ b/assembly/bin/executeSQL.sh @@ -69,6 +69,10 @@ function executeSQL() { isSuccess "source dss_dataapi_ddl.sql" mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DB --default-character-set=utf8 -e "source $DB_CONF_PATH/apps/dss_guide_ddl.sql" isSuccess "source dss_guide_ddl.sql" + mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DB --default-character-set=utf8 -e "source $DB_CONF_PATH/apps/datamodel.sql" + isSuccess "source datamodel.sql" + mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DB --default-character-set=utf8 -e "source $DB_CONF_PATH/apps/datawarehouse.sql" + isSuccess "source datawarehouse.sql" mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DB --default-character-set=utf8 -e "source $DB_DML_PATH" isSuccess "source dss_dml_real.sql" echo "Rebuild the table" diff --git a/assembly/bin/install.sh b/assembly/bin/install.sh index bf49bea92..611614b57 100644 --- a/assembly/bin/install.sh +++ b/assembly/bin/install.sh @@ -121,11 +121,18 @@ function replaceCommonIp() { DSS_DATA_API_SERVER_PORT=9208 fi - if [ -z "$DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP" ]; then - DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP=$LOCAL_IP + if [ -z "$DSS_DATA_ASSETS_SERVER_INSTALL_IP" ]; then + DSS_DATA_ASSETS_SERVER_INSTALL_IP=$LOCAL_IP fi - if [ -z "$DSS_DATA_GOVERNANCE_SERVER_PORT" ]; then - DSS_DATA_GOVERNANCE_SERVER_PORT=9209 + if [ -z "$DSS_DATA_ASSETS_SERVER_INSTALL_IP" ]; then + DSS_DATA_ASSETS_SERVER_INSTALL_IP=9300 + fi + if [ -z "$DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP" ]; then + DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP=9400 + fi + + if [ -z "$DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP" ]; then + DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP=9500 fi if [ -z "$DSS_GUIDE_SERVER_INSTALL_IP" ]; then @@ -343,13 +350,38 @@ function installDssProject() { CONF_APPLICATION_YML=$SERVER_HOME/conf/application-dss.yml installPackage - ###install dss-data-governance-server - SERVER_NAME=dss-data-governance-server - SERVER_IP=$DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP - SERVER_PORT=$DSS_DATA_GOVERNANCE_SERVER_PORT - UPLOAD_LIB_FILES=$DSS_FILE_PATH/lib/dss-data-governance/$SERVER_NAME - LIB_PATH=$SERVER_HOME/lib/dss-data-governance - LOG_PATH=$SERVER_HOME/logs/dss-data-governance/$SERVER_NAME + ###install dss-data-assets-server + SERVER_NAME=dss-data-assets-server + SERVER_IP=$DSS_DATA_ASSETS_SERVER_INSTALL_IP + SERVER_PORT=$DSS_DATA_ASSETS_SERVER_PORT + UPLOAD_LIB_FILES=$DSS_FILE_PATH/lib/dss-data-assets-server/$SERVER_NAME + LIB_PATH=$SERVER_HOME/lib/dss-data-assets-server + LIB_PATH=$SERVER_HOME/lib/atlas-application.properties + LOG_PATH=$SERVER_HOME/logs/dss-data-assets-server/$SERVER_NAME + CONF_SERVER_PROPERTIES=$SERVER_HOME/conf/$SERVER_NAME.properties + CONF_DSS_PROPERTIES=$SERVER_HOME/conf/dss.properties + CONF_APPLICATION_YML=$SERVER_HOME/conf/application-dss.yml + installPackage + + ###install dss-data-warehouse-server + SERVER_NAME=dss-data-warehouse-server + SERVER_IP=$DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP + SERVER_PORT=$DSS_DATA_WAREHOUSE_SERVER_PORT + UPLOAD_LIB_FILES=$DSS_FILE_PATH/lib/dss-data-warehouse-server/$SERVER_NAME + LIB_PATH=$SERVER_HOME/lib/dss-data-warehouse-server + LOG_PATH=$SERVER_HOME/logs/dss-data-warehouse-server/$SERVER_NAME + CONF_SERVER_PROPERTIES=$SERVER_HOME/conf/$SERVER_NAME.properties + CONF_DSS_PROPERTIES=$SERVER_HOME/conf/dss.properties + CONF_APPLICATION_YML=$SERVER_HOME/conf/application-dss.yml + installPackage + + ###install dss-datamodel-center-server + SERVER_NAME=dss-datamodel-center-server + SERVER_IP=$DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP + SERVER_PORT=$DSS_DATAMODEL_CENTER_SERVER_PORT + UPLOAD_LIB_FILES=$DSS_FILE_PATH/lib/dss-datamodel-center-server/$SERVER_NAME + LIB_PATH=$SERVER_HOME/lib/dss-datamodel-center-server + LOG_PATH=$SERVER_HOME/logs/dss-datamodel-center-server/$SERVER_NAME CONF_SERVER_PROPERTIES=$SERVER_HOME/conf/$SERVER_NAME.properties CONF_DSS_PROPERTIES=$SERVER_HOME/conf/dss.properties CONF_APPLICATION_YML=$SERVER_HOME/conf/application-dss.yml diff --git a/assembly/config/config.sh b/assembly/config/config.sh index d36b2acb9..93860f051 100644 --- a/assembly/config/config.sh +++ b/assembly/config/config.sh @@ -53,12 +53,18 @@ DSS_FLOW_EXECUTION_SERVER_PORT=9006 DSS_SCRIPTIS_SERVER_INSTALL_IP=127.0.0.1 DSS_SCRIPTIS_SERVER_PORT=9008 +DSS_DATA_ASSETS_SERVER_INSTALL_IP=127.0.0.1 +DSS_DATA_ASSETS_SERVER_PORT=9300 + +DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP=127.0.0.1 +DSS_DATAMODEL_CENTER_SERVER_PORT=9400 + +DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP=127.0.0.1 +DSS_DATA_WAREHOUSE_SERVER_PORT=9500 + ###dss-data-api-server DSS_DATA_API_SERVER_INSTALL_IP=127.0.0.1 DSS_DATA_API_SERVER_PORT=9208 -###dss-data-governance-server -DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP=127.0.0.1 -DSS_DATA_GOVERNANCE_SERVER_PORT=9209 ###dss-guide-server DSS_GUIDE_SERVER_INSTALL_IP=127.0.0.1 DSS_GUIDE_SERVER_PORT=9210 @@ -83,5 +89,4 @@ EMAIL_PORT=25 EMAIL_USERNAME=xxx@163.com EMAIL_PASSWORD=xxxxx EMAIL_PROTOCOL=smtp -############## ############## dss_appconn_instance configuration end ############## ############## - +############## ############## dss_appconn_instance configuration end ############## ############## \ No newline at end of file diff --git a/assembly/dss-package/src/main/assembly/distribution.xml b/assembly/dss-package/src/main/assembly/distribution.xml index 09fce1e05..8ca7ac523 100644 --- a/assembly/dss-package/src/main/assembly/distribution.xml +++ b/assembly/dss-package/src/main/assembly/distribution.xml @@ -287,20 +287,40 @@ - ${basedir}/../../dss-data-api/dss-data-api-server/target/out/dss-data-api-server/lib/ + ${basedir}/../../dss-apps/dss-data-api/dss-data-api-server/target/out/dss-data-api-server/lib/ - lib/dss-data-api/dss-data-api-server + lib/dss-apps/dss-data-api-server + + **/* + + + + + + + ${basedir}/../../dss-apps/dss-dataasset-management/dss-data-assets-server/target/out/dss-data-assets-server/lib/ + + lib/dss-apps/dss-data-assets-server + + **/* + + + + + + ${basedir}/../../dss-apps/dss-datamodel-center/dss-datamodel-center-server/target/out/dss-datamodel-center-server/lib/ + + lib/dss-apps/dss-datamodel-center-server **/* - - ${basedir}/../../dss-data-governance/dss-data-governance-server/target/out/dss-data-governance-server/lib/ + ${basedir}/../../dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/target/out/dss-data-warehouse-server/lib/ - lib/dss-data-governance/dss-data-governance-server + lib/dss-apps/dss-data-warehouse-server **/* diff --git a/conf/atlas-application.properties b/conf/atlas-application.properties index e69de29bb..e37bc792d 100644 --- a/conf/atlas-application.properties +++ b/conf/atlas-application.properties @@ -0,0 +1,67 @@ +# Generated by Apache Ambari. Sun Feb 27 10:44:18 2022 + +atlas.audit.hbase.tablename=ATLAS_ENTITY_AUDIT_EVENTS +atlas.audit.hbase.zookeeper.quorum=hdp +atlas.audit.zookeeper.session.timeout.ms=60000 +atlas.authentication.keytab=/etc/security/keytabs/atlas.service.keytab +atlas.authentication.method.file=true +atlas.authentication.method.file.filename=/home/hadoop/software/apache-atlas-2.0.0/conf/users-credentials.properties +atlas.authentication.method.kerberos=false +atlas.authentication.method.ldap=false +atlas.authentication.method.ldap.ad.base.dn= +atlas.authentication.method.ldap.ad.bind.dn= +atlas.authentication.method.ldap.ad.bind.password= +atlas.authentication.method.ldap.ad.default.role=ROLE_USER +atlas.authentication.method.ldap.ad.domain= +atlas.authentication.method.ldap.ad.referral=ignore +atlas.authentication.method.ldap.ad.url= +atlas.authentication.method.ldap.ad.user.searchfilter=(sAMAccountName={0}) +atlas.authentication.method.ldap.base.dn= +atlas.authentication.method.ldap.bind.dn= +atlas.authentication.method.ldap.bind.password= +atlas.authentication.method.ldap.default.role=ROLE_USER +atlas.authentication.method.ldap.groupRoleAttribute=cn +atlas.authentication.method.ldap.groupSearchBase= +atlas.authentication.method.ldap.groupSearchFilter= +atlas.authentication.method.ldap.referral=ignore +atlas.authentication.method.ldap.type=ldap +atlas.authentication.method.ldap.url= +atlas.authentication.method.ldap.user.searchfilter= +atlas.authentication.method.ldap.userDNpattern=uid= +atlas.authentication.principal=atlas +atlas.authorizer.impl=ranger +atlas.cluster.name=bigdata_all_in_one +atlas.enableTLS=false +atlas.graph.index.search.solr.mode=cloud +atlas.graph.index.search.solr.wait-searcher=true +atlas.graph.index.search.solr.zookeeper-url=hadoop:2181/infra-solr +atlas.graph.storage.hbase.table=atlas_janus +atlas.graph.storage.hostname=hdp +atlas.kafka.auto.commit.enable=false +atlas.kafka.bootstrap.servers=hadoop:6667 +atlas.kafka.hook.group.id=atlas +atlas.kafka.zookeeper.connect=hadoop:2181 +atlas.kafka.zookeeper.connection.timeout.ms=30000 +atlas.kafka.zookeeper.session.timeout.ms=60000 +atlas.kafka.zookeeper.sync.time.ms=20 +atlas.lineage.schema.query.hive_table=hive_table where __guid='%s'\, columns +atlas.lineage.schema.query.Table=Table where __guid='%s'\, columns +atlas.notification.create.topics=true +atlas.notification.embedded=false +atlas.notification.replicas=1 +atlas.notification.topics=ATLAS_HOOK,ATLAS_ENTITIES +atlas.proxyusers= +atlas.rest.address=http://hadoop:21000 +atlas.server.address.id1=hadoop:21000 +atlas.server.bind.address=0.0.0.0 +atlas.server.ha.enabled=false +atlas.server.http.port=21000 +atlas.server.https.port=21443 +atlas.server.ids=id1 +atlas.simple.authz.policy.file=/home/hadoop/software/apache-atlas-2.0.0/conf/atlas-simple-authz-policy.json +atlas.solr.kerberos.enable=false +atlas.ssl.exclude.protocols=TLSv1.2 +atlas.sso.knox.browser.useragent= +atlas.sso.knox.enabled=false +atlas.sso.knox.providerurl= +atlas.sso.knox.publicKey= diff --git a/conf/dss-data-assets-server.properties b/conf/dss-data-assets-server.properties new file mode 100644 index 000000000..3660ed1cd --- /dev/null +++ b/conf/dss-data-assets-server.properties @@ -0,0 +1,88 @@ +# +# /* +# * Copyright 2019 WeBank +# * +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +# +# Spring configurations +spring.server.port=9300 +spring.spring.application.name=dss-data-assets-server +wds.linkis.test.mode=true +wds.linkis.log.clear=true +wds.linkis.server.version=v1 + + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://localhost:3306/hive?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username=root + +wds.linkis.server.mybatis.datasource.password=root + + + + + +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.data.governance.restful + +##mybatis +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/data/governance/dao/impl/*.xml + +wds.linkis.server.mybatis.typeAliasesPackage=com.webank.wedatasphere.dss.data.governance.entity + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.data.governance.dao + + +# atlas config +atlas.rest.address=http://localhost:21000 +atlas.username=admin +atlas.password=admin123 +atlas.client.readTimeoutMSecs=60000 +atlas.client.connectTimeoutMSecs=60000 + +# create root classification +atlas.root.indicator=datamodel_indicator +atlas.root.measure=datamodel_measure +atlas.root.dimension=datamodel_dimension +atlas.root.layer=datamodel_layer +atlas.root.theme=datamodel_theme + +# create root glossary +atlas.root.label=datamodel_label +atlas.root.collection=datamodel_collection + + +# hive metadata config +metastore.datasource.driver=com.mysql.jdbc.Driver +metastore.datasource.url=jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8 +metastore.datasource.username=root +metastore.datasource.password=root + + +wds.workspace.client.serverurl=http://localhost:9001 + +wds.workspace.client.authtoken.key=hadoop + +wds.workspace.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.workspace.client.discovery.enabled=false + +wds.workspace.client.authtoken.value=hadoop + +spring.spring.mvc.servlet.path=/api/rest_j/v1 + +wds.workspace.client.dws.version=v1 + +wds.wedatasphere.data.assert.client.strategy=static + + diff --git a/conf/dss-data-governance-server.properties b/conf/dss-data-governance-server.properties deleted file mode 100644 index b3980c6cc..000000000 --- a/conf/dss-data-governance-server.properties +++ /dev/null @@ -1,53 +0,0 @@ -# -# /* -# * Copyright 2019 WeBank -# * -# * Licensed under the Apache License, Version 2.0 (the "License"); -# * you may not use this file except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.apache.org/licenses/LICENSE-2.0 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# */ -# - -# Spring configurations -spring.server.port=9209 -spring.spring.application.name=dss-data-governance-server - -wds.linkis.log.clear=true - -wds.linkis.server.version=v1 - -##restful -wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.data.asset.restful,com.webank.wedatasphere.dss.data.classification.restful - -##mybatis -wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/data/asset/dao/impl/*.xml -wds.linkis.server.mybatis.typeAliasesPackage=com.webank.wedatasphere.dss.data.asset.entity -wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.data.asset.dao,com.webank.wedatasphere.dss.data.warehouse.dao,com.webank.wedatasphere.dss.data.warehouse.mapper - -#wds.linkis.gateway.ip=127.0.0.1 -#wds.linkis.gateway.port=9001 -#wds.linkis.gateway.url=http://127.0.0.1:9001/ - - -# atlas config -atlas.rest.address=http://xxxxxxx:21000 -atlas.username=xxxxxxxx -atlas.password=yyyyyyyyy -atlas.client.readTimeoutMSecs=60000 -atlas.client.connectTimeoutMSecs=60000 - -atlas.cluster.name=primary - -# hive metadata config -metastore.datasource.driver=com.mysql.jdbc.Driver -metastore.datasource.url=jdbc:mysql://xxxxxx:yyyy/metastore?characterEncoding=UTF-8 -metastore.datasource.username=xxxxxx -metastore.datasource.password=yyyyyy \ No newline at end of file diff --git a/conf/dss-data-warehouse-server.properties b/conf/dss-data-warehouse-server.properties new file mode 100644 index 000000000..d8777231a --- /dev/null +++ b/conf/dss-data-warehouse-server.properties @@ -0,0 +1,51 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +spring.server.port=9500 +spring.spring.application.name=dss-data-warehouse-server +wds.linkis.test.mode=true + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://localhost:3306/governance?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username=root + +wds.linkis.server.mybatis.datasource.password=root + +wds.linkis.log.clear=true + +wds.linkis.server.version=v1 + + +## datasource client +wds.datawarehouse.datasource.client.serverurl=http://hdp:8085 +wds.datawarehouse.datasource.client.authtoken.key=hadoop +wds.datawarehouse.datasource.client.authtoken.value=hadoop +wds.datawarehouse.datasource.client.dws.version=v1 + +##restful +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.warehouse.restful + +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/warehouse/dao/mapper/impl/*.xml + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.warehouse.dao.mapper + +wds.entity.workspace.name.auto.transform=false + +spring.spring.mvc.servlet.path=/api/rest_j/v1 + + + + diff --git a/conf/dss-datamodel-center-server.properties b/conf/dss-datamodel-center-server.properties new file mode 100644 index 000000000..57de3eeff --- /dev/null +++ b/conf/dss-datamodel-center-server.properties @@ -0,0 +1,107 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +spring.server.port=9400 +spring.spring.application.name=dss-datamodel-center-server + +wds.linkis.test.mode=true + + + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://localhost:3306/datamodel?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username=root + +wds.linkis.server.mybatis.datasource.password=root + + +wds.linkis.log.clear=true + +wds.linkis.server.version=v1 + + +wds.wedatasphere.linkis.serverurl=http://localhost:8085 + +wds.wedatasphere.linkis.authtoken.key=hadoop + +wds.wedatasphere.linkis.discovery.enabled=false + +wds.wedatasphere.linkis.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.linkis.authtoken.value=hadoop + +wds.wedatasphere.linkis.dws.version=v1 + + +##restful +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.datamodel.indicator.restful,\ + com.webank.wedatasphere.dss.datamodel.table.restful,\ + com.webank.wedatasphere.dss.datamodel.dimension.restful,\ + com.webank.wedatasphere.dss.datamodel.measure.restful + +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/table/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/measure/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/*.xml + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.datamodel.dimension.dao,\ + com.webank.wedatasphere.dss.datamodel.table.dao,\ + com.webank.wedatasphere.dss.datamodel.measure.dao,\ + com.webank.wedatasphere.dss.datamodel.indicator.dao + +wds.wedatasphere.warehouse.client.serverurl=http://localhost:9001 + +wds.wedatasphere.warehouse.client.authtoken.key=hadoop + +wds.wedatasphere.warehouse.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.warehouse.client.authtoken.value=hadoop + +wds.wedatasphere.warehouse.client.discovery.enabled=false + +wds.wedatasphere.warehouse.client.dws.version=v1 + + +wds.wedatasphere.assets.client.serverurl=http://localhost:9001 + +wds.wedatasphere.assets.client.authtoken.key=hadoop + +wds.wedatasphere.assets.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.assets.client.discovery.enabled=false + +wds.wedatasphere.assets.client.authtoken.value=hadoop + +wds.wedatasphere.assets.client.dws.version=v1 + + + +wds.workspace.client.serverurl=http://localhost:9001 + +wds.workspace.client.authtoken.key=hadoop + +wds.workspace.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.workspace.client.discovery.enabled=false + +wds.workspace.client.authtoken.value=hadoop + +wds.workspace.client.dws.version=v1 +spring.spring.mvc.servlet.path=/api/rest_j/v1 + + + +wds.wedatasphere.data.model.client.strategy=static diff --git a/db/apps/datamodel.sql b/db/apps/datamodel.sql new file mode 100644 index 000000000..ae5b1ad9d --- /dev/null +++ b/db/apps/datamodel.sql @@ -0,0 +1,352 @@ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + + +-- ---------------------------- +-- Table structure for dss_datamodel_dimension +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_dimension`; +CREATE TABLE `dss_datamodel_dimension` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator`; +CREATE TABLE `dss_datamodel_indicator` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `is_core_indicator` tinyint(1) NOT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `theme_area_en` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '英文名称', + `layer_area_en` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '英文名称', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator_content +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator_content`; +CREATE TABLE `dss_datamodel_indicator_content` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `indicator_id` int(11) NOT NULL, + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `indicator_type` int(4) NOT NULL COMMENT '0 原子 1 衍生 2 派生 3 复杂 4 自定义', + `measure_id` int(11) DEFAULT NULL, + `indicator_source_info` text COLLATE utf8_bin NOT NULL COMMENT '指标来源信息', + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `business` varchar(255) COLLATE utf8_bin NOT NULL, + `business_owner` varchar(255) COLLATE utf8_bin NOT NULL, + `calculation` varchar(255) COLLATE utf8_bin NOT NULL, + `calculation_owner` varchar(255) COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator_version +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator_version`; +CREATE TABLE `dss_datamodel_indicator_version` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `version_context` text COLLATE utf8_bin NOT NULL COMMENT '历史版本详细信息快照', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`,`version`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_label +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_label`; +CREATE TABLE `dss_datamodel_label` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `params` text COLLATE utf8_bin COMMENT '标签键值对 json', + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_measure +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_measure`; +CREATE TABLE `dss_datamodel_measure` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table`; +CREATE TABLE `dss_datamodel_table` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) COLLATE utf8_bin NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `creator` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_layer_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级', + `warehouse_layer_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级英文', + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `lifecycle` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期', + `is_partition_table` tinyint(1) NOT NULL, + `is_available` tinyint(1) NOT NULL, + `storage_type` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '存储类型:hive/mysql', + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `compress` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '压缩格式', + `file_type` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '文件格式', + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + `is_external` tinyint(1) NOT NULL COMMENT '是否外部表 0 内部表 1外部表', + `location` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '外部表时 location', + `label` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '标签', + `lifecycle_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `database` (`data_base`,`name`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_collcetion +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_collcetion`; +CREATE TABLE `dss_datamodel_table_collcetion` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_layer_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级', + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `lifecycle` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期', + `is_partition_table` tinyint(1) DEFAULT NULL, + `is_available` tinyint(1) DEFAULT NULL, + `storage_type` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '存储类型:hive/mysql', + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `compress` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '压缩格式', + `file_type` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '文件格式', + `user` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '收藏人', + `version` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '版本信息:默认1', + `is_external` tinyint(1) DEFAULT NULL COMMENT '是否外部表 0 内部表 1外部表', + `location` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '外部表时 location', + `label` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '标签', + `guid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'atlas标识', + `warehouse_layer_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级英文', + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `lifecycle_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期英文', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_columns +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_columns`; +CREATE TABLE `dss_datamodel_table_columns` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `table_id` int(11) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `type` varchar(64) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_partition_field` tinyint(1) NOT NULL, + `is_primary` tinyint(1) NOT NULL, + `length` int(11) DEFAULT NULL, + `rule` varchar(128) COLLATE utf8_bin DEFAULT NULL, + `model_type` int(4) DEFAULT NULL COMMENT '0 维度,1 指标 2 度量', + `model_name_en` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '模型信息英文名称', + `model_id` int(11) DEFAULT NULL COMMENT '关联具体模型id信息(因为有版本数据表id不可靠,暂时不用)', + `model_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '模型信息名称', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=226 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_materialized_history +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_materialized_history`; +CREATE TABLE `dss_datamodel_table_materialized_history` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `materialized_code` mediumtext COLLATE utf8_bin COMMENT '物化sql', + `reason` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '物化原因', + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '物化者', + `status` int(4) NOT NULL COMMENT 'succeed,failed,in progess', + `create_time` datetime NOT NULL, + `last_update_time` datetime NOT NULL, + `task_id` varchar(512) COLLATE utf8_bin NOT NULL, + `error_msg` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `tableName` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '表名', + `data_base` varchar(255) COLLATE utf8_bin NOT NULL, + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_params +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_params`; +CREATE TABLE `dss_datamodel_table_params` ( + `tbl_id` int(11) NOT NULL, + `param_key` varchar(256) COLLATE utf8_bin NOT NULL COMMENT '创建表参数:压缩/orc等', + `param_value` mediumtext COLLATE utf8_bin, + PRIMARY KEY (`tbl_id`,`param_key`) USING BTREE, + KEY `table_params_n49` (`tbl_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_statics +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_statics`; +CREATE TABLE `dss_datamodel_table_statics` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `origin_tables` varchar(4000) COLLATE utf8_bin DEFAULT NULL, + `table_id` int(11) NOT NULL, + `access_count` int(11) NOT NULL, + `last_access_time` int(11) NOT NULL, + `sample_data_path` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '存储10行用例数据', + `sample_update_time` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_stats +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_stats`; +CREATE TABLE `dss_datamodel_table_stats` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `column_count` int(11) NOT NULL COMMENT '字段数', + `storage_size` int(11) NOT NULL COMMENT '存储大小', + `file_count` int(11) NOT NULL COMMENT '文件数', + `partition_count` int(11) NOT NULL COMMENT '分区数', + `access_count` int(11) NOT NULL COMMENT '访问次数', + `collect_count` int(11) NOT NULL COMMENT '收藏次数', + `ref_count` int(11) NOT NULL COMMENT '引用次数', + `version` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_version +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_version`; +CREATE TABLE `dss_datamodel_table_version` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tbl_id` int(11) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `is_materialized` tinyint(1) NOT NULL COMMENT '是否物化', + `table_code` mediumtext COLLATE utf8_bin COMMENT '创建table的sql', + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '版本注释', + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认version0002', + `table_params` mediumtext COLLATE utf8_bin, + `columns` varchar(4000) COLLATE utf8_bin DEFAULT NULL, + `source_type` varchar(128) COLLATE utf8_bin DEFAULT 'add' COMMENT 'rollback,update,add', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `table_version` (`version`,`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +DROP TABLE IF EXISTS `dss_datamodel_dictionary`; +CREATE TABLE `dss_datamodel_dictionary` ( + `id` int(50) NOT NULL COMMENT '主键id', + `code` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型code', + `type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `created_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', + `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `sort` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数模字典' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of dss_datamodel_dictionary +-- ---------------------------- +INSERT INTO `dss_datamodel_dictionary` VALUES (10000001, 'Snappy', 'COMPRESS', 'Snappy', '2021-10-09 15:41:23', '2021-10-09 15:55:44', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000002, 'None', 'COMPRESS', '无', '2021-10-09 15:42:17', '2021-10-20 14:48:59', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000003, 'ORC', 'FILE_STORAGE', 'orc', '2021-10-09 15:55:32', '2021-10-20 14:49:00', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000004, 'Parquet', 'FILE_STORAGE', 'Parquet', '2021-10-09 15:55:32', '2021-10-20 14:49:02', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000005, 'None', 'FILE_STORAGE', '无', '2021-10-09 15:55:32', '2021-10-20 14:49:04', 3); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000006, 'Once', 'LIFECYCLE', '一次', '2021-10-09 15:55:32', '2021-10-20 14:49:05', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000007, 'OneDay', 'LIFECYCLE', '一天', '2021-10-09 15:55:32', '2021-10-20 14:49:06', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000008, 'HalfMonth', 'LIFECYCLE', '半月', '2021-10-09 15:55:32', '2021-10-20 14:49:07', 3); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000009, 'OneMonth', 'LIFECYCLE', '一个月', '2021-10-09 15:55:32', '2021-10-20 14:49:08', 4); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000010, 'ThreeMonths', 'LIFECYCLE', '三个月', '2021-10-09 15:55:32', '2021-10-20 14:49:09', 5); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000011, 'SixMonths', 'LIFECYCLE', '六个月', '2021-10-09 15:55:32', '2021-10-20 14:49:10', 6); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000012, 'OneYear', 'LIFECYCLE', '一年', '2021-10-09 15:55:32', '2021-10-20 14:49:11', 7); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000013, 'ThreeYears', 'LIFECYCLE', '三年', '2021-10-09 15:55:32', '2021-10-20 14:49:12', 8); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000014, 'Hive', 'STORAGE_ENGINE', 'hive', '2021-10-09 15:55:32', '2021-10-20 14:49:19', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000015, 'Mysql', 'STORAGE_ENGINE', 'mysql', '2021-10-09 15:55:32', '2021-10-20 14:49:20', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000016, 'ES', 'STORAGE_ENGINE', 'es', '2021-10-09 15:55:32', '2021-10-20 14:49:25', 3); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/db/apps/datawarehouse.sql b/db/apps/datawarehouse.sql new file mode 100644 index 000000000..1818a6371 --- /dev/null +++ b/db/apps/datawarehouse.sql @@ -0,0 +1,224 @@ + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +SET NAMES utf8mb4; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE='NO_AUTO_VALUE_ON_ZERO', SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + +# 转储表 dss_datawarehouse_layer +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_layer`; + +CREATE TABLE `dss_datawarehouse_layer` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `preset` bit(1) NOT NULL DEFAULT b'0', + `sort` int(4) NOT NULL DEFAULT '1', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `dbs` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '如果为空代表所有的库', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +LOCK TABLES `dss_datawarehouse_layer` WRITE; +/*!40000 ALTER TABLE `dss_datawarehouse_layer` DISABLE KEYS */; + +INSERT INTO `dss_datawarehouse_layer` (`id`, `name`, `en_name`, `owner`, `principal_name`, `is_available`, `preset`, `sort`, `description`, `dbs`, `create_time`, `update_time`, `status`, `lock_version`) +VALUES + (1,'原数据层(ODS)','ods','admin','所有角色',b'1',b'1',10,'由业务系统同步到数据仓库的原始数据,一般不经过加工','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1), + (2,'明细层(DWD)','dwd','admin','所有角色',b'1',b'1',20,'从ods层经过ETL得到的明细数据,表示具体的事实','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1), + (3,'汇总层(DWS)','dws','admin','所有角色',b'1',b'1',30,'由明细数据经过汇总得到的数据,主要由统计维度和指标构成','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1); + +/*!40000 ALTER TABLE `dss_datawarehouse_layer` ENABLE KEYS */; +UNLOCK TABLES; + + +# 转储表 dss_datawarehouse_layer_generalize_rule +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_layer_generalize_rule`; + +CREATE TABLE `dss_datawarehouse_layer_generalize_rule` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `layer_id` bigint(20) NOT NULL, + `regex` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '自动归纳表达式', + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `en_identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_modifier +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_modifier`; + +CREATE TABLE `dss_datawarehouse_modifier` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_type` varchar(64) COLLATE utf8_bin NOT NULL, + `theme_domain_id` bigint(20) DEFAULT NULL, + `layer_id` bigint(20) DEFAULT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_modifier_list +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_modifier_list`; + +CREATE TABLE `dss_datawarehouse_modifier_list` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_statistical_period +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_statistical_period`; + +CREATE TABLE `dss_datawarehouse_statistical_period` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `layer_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `start_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `end_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_table_rule +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_table_rule`; + +CREATE TABLE `dss_datawarehouse_table_rule` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` bigint(20) NOT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `table_name_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `table_props_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `partation_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `column_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_theme +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_theme`; + +CREATE TABLE `dss_datawarehouse_theme` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `parent_theme_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '默认为空,如果不为空则指向父主题', + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_theme_domain +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_theme_domain`; + +CREATE TABLE `dss_datawarehouse_theme_domain` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +LOCK TABLES `dss_datawarehouse_theme_domain` WRITE; +/*!40000 ALTER TABLE `dss_datawarehouse_theme_domain` DISABLE KEYS */; + +INSERT INTO `dss_datawarehouse_theme_domain` (`id`, `name`, `en_name`, `owner`, `principal_name`, `is_available`, `sort`, `description`, `create_time`, `update_time`, `status`, `lock_version`) +VALUES + (1,'主题','英文名','负责人','New York',b'1',1,'描述','2021-09-28 13:18:48','2021-09-28 13:18:48',b'1',1); + +/*!40000 ALTER TABLE `dss_datawarehouse_theme_domain` ENABLE KEYS */; +UNLOCK TABLES; + + + +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/db/dss_ddl.sql b/db/dss_ddl.sql index 938961d09..6a22e25ab 100644 --- a/db/dss_ddl.sql +++ b/db/dss_ddl.sql @@ -25,11 +25,7 @@ CREATE TABLE `dss_appconn_instance` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='dss instance的实例表'; -/* ---------------------------------------------------------------------- -------------------- DSS Orchestrator Framework --------------------- ---------------------------------------------------------------------- -*/ + DROP TABLE IF EXISTS `dss_orchestrator_info`; CREATE TABLE `dss_orchestrator_info` ( @@ -82,11 +78,7 @@ CREATE TABLE `dss_orchestrator_ref_orchestration_relation` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=326 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; -/* ---------------------------------------------------------------------- -------------------- DSS Project Framework --------------------- ---------------------------------------------------------------------- -*/ + DROP TABLE IF EXISTS `dss_project`; CREATE TABLE `dss_project` ( @@ -141,11 +133,6 @@ CREATE TABLE `dss_appconn_project_relation` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; -/* ---------------------------------------------------------------------- ---------------------- DSS Workspace Framework ---------------------- ---------------------------------------------------------------------- -*/ DROP TABLE IF EXISTS `dss_workspace`; CREATE TABLE `dss_workspace` ( @@ -308,11 +295,7 @@ CREATE TABLE `dss_workspace_download_audit` ( PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '文件下载审计'; -/* ---------------------------------------------------------------------- ---------------------------- DSS Workflow --------------------------- ---------------------------------------------------------------------- -*/ + DROP TABLE IF EXISTS `dss_workflow`; CREATE TABLE `dss_workflow` ( @@ -589,4 +572,3 @@ CREATE TABLE `dss_proxy_user` ( `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8; - diff --git a/db/dss_dml.sql b/db/dss_dml.sql index 7ae770c63..246c41922 100644 --- a/db/dss_dml.sql +++ b/db/dss_dml.sql @@ -3,16 +3,28 @@ INSERT INTO `dss_appconn` (`id`, `appconn_name`, `is_user_need_init`, `level`, ` VALUES (1,'sso',0,1,0,0,NULL,"com.webank.wedatasphere.dss.appconn.sso.SSOAppConn",NULL,NULL), (2,'scriptis',0,1,0,0,"sso",NULL,NULL,NULL), (3,'workflow',0,1,1,0,NULL,'com.webank.wedatasphere.dss.appconn.workflow.WorkflowAppConn','/appcom/Install/dss/dss-appconns/workflow',NULL), -(4,'apiservice',0,1,0,0,"sso",NULL,NULL,NULL); +(4,'apiservice',0,1,0,0,'sso',NULL,NULL,NULL) +(5,'datamodel',0,1,0,0,'sso',NULL,NULL,NULL), +(6,'warehouse',0,1,0,0,'sso',NULL,NULL,NULL), +(7,'dataasset',0,1,0,0,'sso',NULL,NULL,NULL), +(8,'dataservice',0,1,0,0,'sso',NULL,NULL,NULL); DELETE FROM dss_appconn_instance; select @scriptis_appconn_id:= id from dss_appconn where appconn_name="scriptis"; select @workflow_appconn_id:= id from dss_appconn where appconn_name="workflow"; select @apiservice_appconn_id:= id from dss_appconn where appconn_name="apiservice"; +select @datamodel_appconn_id:= id from dss_appconn where appconn_name="datamodel"; +select @warehouse_appconn_id:= id from dss_appconn where appconn_name="warehouse"; +select @dataasset_appconn_id:= id from dss_appconn where appconn_name="dataasset"; +select @dataservice_appconn_id:= id from dss_appconn where appconn_name="dataservice"; INSERT INTO `dss_appconn_instance` (`id`, `appconn_id`, `label`, `url`, `enhance_json`, `homepage_uri`) VALUES (2, @scriptis_appconn_id, 'DEV', '/home', '', ''), (3, @workflow_appconn_id,'DEV','/workspaceHome','',''), -(4, @apiservice_appconn_id, 'DEV', '/apiservices', '', ''); +(4, @apiservice_appconn_id, 'DEV', '/apiservices', '', ''), +(5,@datamodel_appconn_id,'DEV','/dataModelCenter',NULL,'tableManage/tableSearch'), +(6,@warehouse_appconn_id,'DEV','/dataWarehouseDesign',NULL,'themeDomains'), +(7,@dataasset_appconn_id,'DEV','/dataAssetManage',NULL,'overview'), +(8,@dataservice_appconn_id,'DEV','/dataService','',''); DELETE FROM dss_workspace; insert into `dss_workspace`(`id`, `name`,`label`,`description`,`create_by`,`create_time`,`department`,`product`,`source`,`last_update_time`,`last_update_user`,`workspace_type`) @@ -42,16 +54,10 @@ insert into `dss_workspace_dictionary`(`workspace_id`, `parent_key`, `dic_name`, DELETE FROM dss_sidebar; insert into `dss_sidebar`(`id`,`workspace_id`,`name`,`name_en`,`title`,`title_en`,`type`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (2,0,'菜单','Menu','菜单','Menu',1,1,NULL,'SYSTEM','2020-12-15 13:21:06',NULL,'2021-02-23 09:45:50'); --- insert into `dss_sidebar`(`id`,`workspace_id`,`name`,`name_en`,`title`,`title_en`,`type`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (3,0,'常见问题','Common problem','常见问题','Common problem',1,1,NULL,'SYSTEM','2020-12-15 13:21:06',NULL,'2021-02-23 09:46:18'); DELETE FROM dss_sidebar_content; insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (3,0,2,NULL,NULL,'工作空间管理','Workspace management','/workspaceManagement/productsettings',0,'menuIcon',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-02-23 09:47:49'); insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (4,0,2,NULL,NULL,'UDF管理','UDF management','dss/linkis/?noHeader=1&noFooter=1#/urm/udfManagement',1,'menuIcon',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-02-23 09:47:11'); --- insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (5,0,3,NULL,NULL,'资源配置说明',NULL,'http://127.0.0.1:8088/kn/d/38',1,'fi-warn',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-01-12 17:16:52'); --- insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (6,0,3,NULL,NULL,'Spark使用指南','[Discussion on error code 22223]','http://127.0.0.1:8088/kn/d/40',1,'fi-warn',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-02-23 09:48:28'); --- insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (7,0,3,NULL,NULL,'Hive语法介绍',NULL,'http://127.0.0.1:8088/kn/d/34',1,'fi-warn',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-01-12 17:17:00'); --- insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (8,0,3,NULL,NULL,'工作流使用介绍',NULL,'http://127.0.0.1:8088/kn/d/42',1,'fi-warn',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-01-12 17:17:01'); --- insert into `dss_sidebar_content`(`id`,`workspace_id`,`sidebar_id`,`name`,`name_en`,`title`,`title_en`,`url`,`url_type`,`icon`,`order_num`,`remark`,`create_user`,`create_time`,`update_user`,`update_time`) values (9,0,3,NULL,NULL,'数据服务使用介绍','Discussion on error code 22223','http://127.0.0.1:8088/kn/d/32',1,'fi-warn',1,NULL,'SYSTEM','2020-12-15 13:21:07',NULL,'2021-02-23 09:48:19'); DELETE FROM dss_workspace_menu; INSERT INTO `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `description`, `is_active`, `icon`, `order`, `create_by`, `create_time`, `last_update_time`, `last_update_user`) VALUES('1','数据交换','data exchange','数据交换','数据交换描述','1',NULL,NULL,NULL,NULL,NULL,NULL); @@ -61,6 +67,7 @@ INSERT INTO `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `descrip INSERT INTO `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `description`, `is_active`, `icon`, `order`, `create_by`, `create_time`, `last_update_time`, `last_update_user`) VALUES('5','管理员功能','administrator function','管理员功能','管理员功能描述','0',NULL,NULL,NULL,NULL,NULL,NULL); insert into `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `description`, `is_active`, `icon`, `order`, `create_by`, `create_time`, `last_update_time`, `last_update_user`) values('6','数据应用','data application','数据应用','数据应用描述','1',NULL,NULL,NULL,NULL,NULL,NULL); insert into `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `description`, `is_active`, `icon`, `order`, `create_by`, `create_time`, `last_update_time`, `last_update_user`) values('7','应用开发','application development','应用开发','应用开发描述','1',NULL,NULL,NULL,NULL,NULL,NULL); +insert into `dss_workspace_menu` (`id`, `name`, `title_en`, `title_cn`, `description`, `is_active`, `icon`, `order`, `create_by`, `create_time`, `last_update_time`, `last_update_user`) values('8','数据管理','data managee','数据管理','数据管理描述','1',NULL,NULL,NULL,NULL,NULL,NULL); DELETE FROM dss_workspace_menu_appconn; INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) @@ -68,8 +75,17 @@ VALUES (@scriptis_appconn_id, 2, 'Scriptis', 'Scriptis', 'Scriptis is a one-stop INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) VALUES (@workflow_appconn_id, 2, 'workflow', '工作流开发', '工作流开发', '工作流开发', null, null, 1, 'Enter workflow', '进入 工作流开发', null, null, null, null, null, null, null, null, null, null); INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) -VALUES (@apiservice_appconn_id, 7, 'dataService', '数据服务', '/dataService', '/dataService', null, null, 1, 'Enter dataService', '进入 数据服务', null, null, null, null, null, null, null, null, null, null); +VALUES (@apiservice_appconn_id, 7, 'SparkdataService', 'spark数据服务', '/dataService', '/dataService', null, null, 1, 'Enter dataService', '进入 spark数据服务', null, null, null, null, null, null, null, null, null, null); +INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) +VALUES (@dataservice_appconn_id, 7, 'dataService', '数据服务', '/dataService', '/dataService', null, null, 1, 'Enter dataService', '进入 数据服务', null, null, null, null, null, null, null, null, null, null); + +INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) +VALUES (@datamodel_appconn_id, 8, 'datamodel', '数据模型管理', 'datamodel', '数据模型管理', null, null, 1, 'Enter datamodel', '进入 数据模型管理', null, null, null, null, null, null, null, null, null, null); +INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) +VALUES (@warehouse_appconn_id, 8, 'warehouse', '数据仓库管理', 'warehouse', '数据仓库管理', null, null, 1, 'Enter warehouse', '进入 数据仓库管理', null, null, null, null, null, null, null, null, null, null); +INSERT INTO dss_workspace_menu_appconn (appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) +VALUES (@dataasset_appconn_id, 8, 'dataasset', '数据总览', 'dataasset', '数据总览', null, null, 1, 'Enter dataasset', '进入 数据总览', null, null, null, null, null, null, null, null, null, null); DELETE FROM dss_workspace_role; INSERT INTO `dss_workspace_role` (`id`, `workspace_id`, `name`, `front_name`, `update_time`, `description`) VALUES('1','-1','admin','管理员','2020-07-13 02:43:35','通用角色管理员'); @@ -123,7 +139,6 @@ insert into `dss_workflow_node_to_group`(`node_id`,`group_id`) values (10, @fun insert into `dss_workflow_node_to_group`(`node_id`,`group_id`) values (12, @function_node_groupId); DELETE FROM dss_workflow_node_ui; --- todo msg.topic在receiver和sender使用了重复key insert into `dss_workflow_node_ui`(`id`,`key`,`description`,`description_en`,`lable_name`,`lable_name_en`,`ui_type`,`required`,`value`,`default_value`,`is_hidden`,`condition`,`is_advanced`,`order`,`node_menu_type`,`is_base_info`,`position`) values (1,'title','请填写节点名称','Please enter node name','节点名','Node name','Input',1,NULL,NULL,0,NULL,0,1,1,1,'node'); insert into `dss_workflow_node_ui`(`id`,`key`,`description`,`description_en`,`lable_name`,`lable_name_en`,`ui_type`,`required`,`value`,`default_value`,`is_hidden`,`condition`,`is_advanced`,`order`,`node_menu_type`,`is_base_info`,`position`) values (3,'desc','请填写节点描述','Please enter the node description','节点描述','Node description','Text',0,NULL,NULL,0,NULL,0,4,1,1,'node'); insert into `dss_workflow_node_ui`(`id`,`key`,`description`,`description_en`,`lable_name`,`lable_name_en`,`ui_type`,`required`,`value`,`default_value`,`is_hidden`,`condition`,`is_advanced`,`order`,`node_menu_type`,`is_base_info`,`position`) values (5,'businessTag',NULL,NULL,'业务标签','businessTag','Tag',0,NULL,NULL,0,NULL,0,2,1,1,'node'); @@ -309,7 +324,7 @@ insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_ra insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('58','Regex','(.+)@(.+)@(.+)','此格式错误,例如:ProjectName@WFName@jobName','Invalid format,example:ProjectName@WFName@jobName','blur'); INSERT INTO `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('59','OFT','["true","false"]','请填写是否复用引擎,false:不复用,true:复用','Please fill in whether or not to reuse engine, true: reuse, false: not reuse','blur'); insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('60', 'Regex', '^[0-9.]*g{0,1}$', 'Spark内存设置如2g', 'Drive memory size, default value: 2', 'blur'); -insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('61','Regex','^(.|\s){1,500}$','长度在1到5000个字符','The length is between 1 and 5000 characters','blur'); +insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('61','Regex','^.{1,5000}$','长度在1到5000个字符','The length is between 1 and 5000 characters','blur'); insert into `dss_workflow_node_ui_validate` (`id`, `validate_type`, `validate_range`, `error_msg`, `error_msg_en`, `trigger`) values('62','Regex','^.{1,150}$','长度在1到150个字符','The length is between 1 and 150 characters','blur'); DELETE FROM dss_workflow_node_ui_to_validate; @@ -408,9 +423,35 @@ INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@workflow_appconn_id,'6','1',now(),'system'); INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@workflow_appconn_id,'7','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'1','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'2','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'3','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'4','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'5','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'6','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@datamodel_appconn_id,'7','1',now(),'system'); + +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'1','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'2','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'3','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'4','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'5','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'6','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@warehouse_appconn_id,'7','1',now(),'system'); + +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'1','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'2','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'3','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'4','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'5','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'6','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('-1',@dataasset_appconn_id,'7','1',now(),'system'); + INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@scriptis_appconn_id,'1','1',now(),'system'); INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@workflow_appconn_id,'1','1',now(),'system'); INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@apiservice_appconn_id,'1','1',now(),'system'); - +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@datamodel_appconn_id,'1','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@warehouse_appconn_id,'1','1',now(),'system'); +INSERT INTO `dss_workspace_appconn_role` (`workspace_id`, `appconn_id`, `role_id`, `priv`, `update_time`, `updateby`) VALUES('224',@dataasset_appconn_id,'1','1',now(),'system'); INSERT INTO `dss_workspace_admin_dept` (`id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES('100','0','0','基础科技','0','leader01','1888888888','123@qq.com','0','0','admin',now(),'admin',now()); diff --git a/dss-appconn/appconns/dss-dolphinscheduler-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/dolphinscheduler/conversion/WorkflowToDolphinSchedulerSynchronizer.java b/dss-appconn/appconns/dss-dolphinscheduler-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/dolphinscheduler/conversion/WorkflowToDolphinSchedulerSynchronizer.java index 745f0c236..353bcadd0 100644 --- a/dss-appconn/appconns/dss-dolphinscheduler-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/dolphinscheduler/conversion/WorkflowToDolphinSchedulerSynchronizer.java +++ b/dss-appconn/appconns/dss-dolphinscheduler-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/dolphinscheduler/conversion/WorkflowToDolphinSchedulerSynchronizer.java @@ -13,6 +13,7 @@ import com.webank.wedatasphere.dss.workflow.core.entity.Workflow; import com.webank.wedatasphere.dss.workflow.core.entity.WorkflowNode; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import java.util.List; @@ -47,11 +48,12 @@ public void syncToRel(ConvertedRel convertedRel) { updateOperation.updateOrchestration(ref); } + private void checkSchedulerProject(Workflow flow) throws ExternalOperationFailedException { List nodes = flow.getWorkflowNodes(); for (WorkflowNode node : nodes) { DSSNode dssNode = node.getDSSNode(); - if (CollectionUtils.isEmpty(dssNode.getResources())) { + if (CollectionUtils.isEmpty(dssNode.getResources()) && MapUtils.isEmpty(dssNode.getJobContent())) { throw new ExternalOperationFailedException(90021, dssNode.getName() + "节点内容不能为空"); } } diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/entity/ApiConfig.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/entity/ApiConfig.java index 8e4ea5a16..afa8675d1 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/entity/ApiConfig.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/entity/ApiConfig.java @@ -31,7 +31,7 @@ public class ApiConfig { private String method; @TableField("`describe`") private String describe; - @NotBlank(message = "datasource_id不能为空") + @NotNull(message = "datasource_id不能为空") @TableField(value = "datasource_id") private Integer datasourceId; private String tblName; diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiAuthRestful.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiAuthRestful.java index eb1e5ca16..125c75abb 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiAuthRestful.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiAuthRestful.java @@ -88,7 +88,7 @@ public Message getApiAuthList(HttpServletRequest httpServletRequest, @RequestPar } Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); List totals = new ArrayList<>(); - List apiAuths = apiAuthService.getApiAuthList(Long.valueOf(workspace.getWorkspaceName()), + List apiAuths = apiAuthService.getApiAuthList(workspaceId, caller, totals, pageNow, pageSize); return Message.ok().data("list", apiAuths).data("total", totals.get(0)); } @@ -108,7 +108,7 @@ public Message getApiGroup(HttpServletRequest httpServletRequest, @RequestParam( Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); log.info("workspace is {}", workspace.getWorkspaceName()); - List apiGroupInfoList = apiAuthService.getApiGroupList(Long.valueOf(workspace.getWorkspaceName())); + List apiGroupInfoList = apiAuthService.getApiGroupList(workspaceId); Message message = Message.ok().data("list", apiGroupInfoList); return message; diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiConfigRestful.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiConfigRestful.java index e144cbee2..6ed7457a2 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiConfigRestful.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiConfigRestful.java @@ -95,7 +95,7 @@ public Message getApiList(HttpServletRequest httpServletRequest, @RequestParam(value = "workspaceId", required = false) String workspaceId) { Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); - List list = apiConfigService.getGroupList(workspace.getWorkspaceName()); + List list = apiConfigService.getGroupList(workspaceId); Message message = Message.ok().data("list", list); return message; } diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiDataSourceRestful.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiDataSourceRestful.java index 2da04f30a..19457549b 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiDataSourceRestful.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiDataSourceRestful.java @@ -34,7 +34,7 @@ public class DSSDbApiDataSourceRestful { public Message connect(HttpServletRequest httpServletRequest, @RequestParam(value = "workspaceId", required = false) Integer workspaceId, @RequestParam("type") String type) { Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); - List allConnections = dssDbApiDataSourceService.getAllConnections(Integer.valueOf(workspace.getWorkspaceName()), type); + List allConnections = dssDbApiDataSourceService.getAllConnections(workspaceId, type); return Message.ok().data("availableConns", allConnections); } @@ -75,7 +75,7 @@ public Message getAllDs(HttpServletRequest httpServletRequest, @RequestParam("type") String type, @RequestParam("name") String name) { Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); DataSource dataSource = new DataSource(); - dataSource.setWorkspaceId(Integer.valueOf(workspace.getWorkspaceName())); + dataSource.setWorkspaceId(workspaceId); dataSource.setType(type); dataSource.setName(name); List allDatasource = dssDbApiDataSourceService.listAllDatasources(dataSource); diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiManagerRestful.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiManagerRestful.java index 0c25c3432..05a39e1ad 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiManagerRestful.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiManagerRestful.java @@ -33,7 +33,7 @@ public Message getApiList(HttpServletRequest request, } Workspace workspace = SSOHelper.getWorkspace(request); List totals = new ArrayList<>(); - List apiInfoList = apiManagerService.getApiInfoList(Long.valueOf(workspace.getWorkspaceName()) + List apiInfoList = apiManagerService.getApiInfoList(workspaceId , apiName, totals, pageNow, pageSize); return Message.ok().data("list", apiInfoList).data("total", totals.get(0)); } diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiMonitorRestful.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiMonitorRestful.java index ee1d9cd8d..9b514450c 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiMonitorRestful.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/restful/DSSDbApiMonitorRestful.java @@ -45,7 +45,7 @@ public Message getApiList(HttpServletRequest request, Workspace workspace = SSOHelper.getWorkspace(request); LOGGER.info("workspace is: {}", workspace.getWorkspaceName()); List totals = new ArrayList<>(); - List apiInfoList = apiManagerService.getOnlineApiInfoList(Long.valueOf(workspace.getWorkspaceName()), + List apiInfoList = apiManagerService.getOnlineApiInfoList(workspaceId, apiName, totals, pageNow, pageSize); return Message.ok().data("list", apiInfoList).data("total", totals.get(0)); } @@ -55,7 +55,7 @@ public Message getApiList(HttpServletRequest request, public Message getOnlineApiCnt(HttpServletRequest request, @RequestParam(value = "workspaceId", required = false) Long workspaceId) { Workspace workspace = SSOHelper.getWorkspace(request); LOGGER.info("workspace is: {}", workspace.getWorkspaceName()); - return Message.ok().data("onlineApiCnt", apiMonitorService.getOnlineApiCnt(Long.valueOf(workspace.getWorkspaceName()))); + return Message.ok().data("onlineApiCnt", apiMonitorService.getOnlineApiCnt(workspaceId)); } @@ -63,7 +63,7 @@ public Message getOnlineApiCnt(HttpServletRequest request, @RequestParam(value = public Message getOfflineApiCnt(HttpServletRequest request, @RequestParam(value = "workspaceId", required = false) Long workspaceId) { Workspace workspace = SSOHelper.getWorkspace(request); LOGGER.info("workspace is: {}", workspace.getWorkspaceName()); - return Message.ok().data("offlineApiCnt", apiMonitorService.getOfflineApiCnt(Long.valueOf(workspace.getWorkspaceName()))); + return Message.ok().data("offlineApiCnt", apiMonitorService.getOfflineApiCnt(workspaceId)); } @@ -99,7 +99,7 @@ public Message getCallCntForPast24H(HttpServletRequest request, @RequestParam(va throws Exception { Workspace workspace = SSOHelper.getWorkspace(request); LOGGER.info("workspace is: {}", workspace.getWorkspaceName()); - return Message.ok().data("list", apiMonitorService.getCallCntForPast24H(Long.valueOf(workspace.getWorkspaceName()))); + return Message.ok().data("list", apiMonitorService.getCallCntForPast24H(workspaceId)); } /** diff --git a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/util/CryptoUtils.java b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/util/CryptoUtils.java index 0dc82b1c6..f795d53f0 100644 --- a/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/util/CryptoUtils.java +++ b/dss-apps/dss-data-api/dss-data-api-server/src/main/java/com/webank/wedatasphere/dss/data/api/server/util/CryptoUtils.java @@ -8,7 +8,7 @@ import java.io.Serializable; import java.security.MessageDigest; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; public class CryptoUtils { private CryptoUtils() { diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/pom.xml b/dss-apps/dss-data-governance/dss-data-asset-server/pom.xml deleted file mode 100644 index 88f0ec3fb..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/pom.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - - dss - com.webank.wedatasphere.dss - 1.1.0 - ../../../pom.xml - - 4.0.0 - - dss-data-asset-server - - - 2.1.0 - - - - com.webank.wedatasphere.dss - dss-data-governance-common - ${dss.version} - - - - org.apache.linkis - linkis-module - ${linkis.version} - provided - - - org.springframework.cloud - spring-cloud-netflix - - - spring-cloud-starter-netflix-eureka-client - org.springframework.cloud - - - javax.ws.rs - javax.ws.rs-api - - - - - org.apache.commons - commons-math3 - provided - - - xstream - com.thoughtworks.xstream - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - ${spring.cloud.version} - provided - - - logback-classic - ch.qos.logback - - - log4j-to-slf4j - org.apache.logging.log4j - - - gson - com.google.code.gson - - - jsr311-api - javax.ws.rs - - - xstream - com.thoughtworks.xstream - - - commons-math - org.apache.commons - - - jackson-core - com.fasterxml.jackson.core - - - spring-boot-autoconfigure - org.springframework.boot - - - spring-boot-starter-aop - org.springframework.boot - - - spring-boot-starter - org.springframework.boot - - - spring-boot-starter-cache - org.springframework.boot - - - - - org.apache.linkis - linkis-mybatis - ${linkis.version} - - - com.webank.wedatasphere.dss - dss-common - ${dss.version} - provided - - - - org.apache.atlas - atlas-client-v2 - ${atlas.version} - - - com.google.guava - guava - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-core - - - - - org.projectlombok - lombok - 1.18.16 - compile - - - - com.alibaba - druid - 1.1.9 - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - - - net.alchim31.maven - scala-maven-plugin - - - org.apache.maven.plugins - maven-jar-plugin - - - org.apache.maven.plugins - maven-assembly-plugin - 2.3 - false - - - make-assembly - package - - single - - - - src/main/assembly/distribution.xml - - - - - - false - out - false - false - - src/main/assembly/distribution.xml - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - src/main/java - - **/*.xml - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/MetaInfoMapper.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/MetaInfoMapper.java deleted file mode 100644 index bb2b0ff5a..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/MetaInfoMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.dao; - -import com.webank.wedatasphere.dss.data.asset.entity.HivePartInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveStorageInfo; -import org.apache.ibatis.annotations.*; - -import java.sql.SQLException; -import java.util.List; - -@Mapper -public interface MetaInfoMapper { - Long getTableStorage() throws SQLException; - List getTop10Table() throws SQLException; - int getTableInfo(@Param("dbName") String dbName,@Param("tableName") String tableName,@Param("isPartTable") Boolean isPartTable) throws SQLException; - - List getPartInfo(@Param("dbName") String dbName, @Param("tableName") String tableName) throws SQLException; - - - -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/MetaInfoMapperImpl.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/MetaInfoMapperImpl.java deleted file mode 100644 index 72989801d..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/MetaInfoMapperImpl.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.dao.impl; - -import com.webank.wedatasphere.dss.data.asset.dao.MetaInfoMapper; -import com.webank.wedatasphere.dss.data.asset.entity.HivePartInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveStorageInfo; -import com.webank.wedatasphere.dss.data.common.exception.DAOException; -import com.webank.wedatasphere.dss.data.common.utils.DataSourceUtil; -import com.webank.wedatasphere.dss.data.common.utils.DateUtil; - -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -public class MetaInfoMapperImpl implements MetaInfoMapper { - @Override - public Long getTableStorage() throws SQLException { - DataSource dataSource = DataSourceUtil.getDataSource(); - - Connection con =dataSource.getConnection(); - long num=0; - PreparedStatement ps=null; - ResultSet rs=null; - try { - String sql="select SUM(PARAM_VALUE) from TABLE_PARAMS WHERE PARAM_KEY='totalSize'"; - ps=con.prepareStatement(sql); - rs=ps.executeQuery(); - while (rs.next()){ - num =rs.getLong(1); - } - String sql2 ="select SUM(PARAM_VALUE) from PARTITION_PARAMS WHERE PARAM_KEY='totalSize'"; - ps=con.prepareStatement(sql2); - rs=ps.executeQuery(); - while (rs.next()){ - num= num + rs.getLong(1); - } - - } catch (DAOException | SQLException e){ - throw new DAOException(e.getMessage(),e); - } - finally { - con.close(); - } - - return num; - } - - @Override - public List getTop10Table() throws SQLException{ - DataSource dataSource = DataSourceUtil.getDataSource(); - Connection con =dataSource.getConnection(); - PreparedStatement ps=null; - ResultSet rs=null; - List hiveStorageInfos = new ArrayList<>(); - try { - String sql="SELECT DBS.NAME ,TBLS.TBL_NAME,CAST(TABLE_PARAMS.PARAM_VALUE AS UNSIGNED) AS totalSize from DBS, TBLS,TABLE_PARAMS where TBLS.TBL_ID=TABLE_PARAMS.TBL_ID AND TBLS.DB_ID=DBS.DB_ID AND TABLE_PARAMS.PARAM_KEY='totalSize' order by totalSize DESC limit 10"; - ps=con.prepareStatement(sql); - rs=ps.executeQuery(); - while (rs.next()){ - HiveStorageInfo tableinfo=new HiveStorageInfo(); - tableinfo.setTableName(rs.getString(1)+"."+rs.getString(2)); - tableinfo.setStorage(rs.getLong(3)); - hiveStorageInfos.add(tableinfo); - } - String sql2="SELECT DBS.NAME ,TBLS.TBL_NAME,SUM(CAST(PARTITION_PARAMS.PARAM_VALUE AS UNSIGNED)) AS totalSize from DBS,TBLS,PARTITIONS ,PARTITION_PARAMS where DBS.DB_ID=TBLS.DB_ID AND TBLS.TBL_ID=PARTITIONS.TBL_ID AND PARTITIONS.PART_ID =PARTITION_PARAMS.PART_ID AND PARTITION_PARAMS.PARAM_KEY='totalSize' group by TBLS.TBL_NAME order by totalSize desc limit 10"; - ps=con.prepareStatement(sql2); - rs=ps.executeQuery(); - while (rs.next()){ - HiveStorageInfo tableinfo=new HiveStorageInfo(); - tableinfo.setTableName(rs.getString(1)+"."+rs.getString(2)); - tableinfo.setStorage(rs.getLong(3)); - hiveStorageInfos.add(tableinfo); - } - /** - * 特别注意LONG类型相减超出INT范围 - * System.out.println((int) (4401131805L -1796673800L)) - * System.out.println(Long.parseLong("4401131805")-Long.parseLong("1796673800")) - */ - Collections.sort(hiveStorageInfos, new Comparator() { - @Override - public int compare(HiveStorageInfo o1, HiveStorageInfo o2) { - //return (int) (Long.valueOf(o2.getStorage())-Long.valueOf(o1.getStorage())) - if(o2.getStorage() > o1.getStorage()){ - return 1; - } - else if(o2.getStorage() < o1.getStorage()){ - return -1; - } - else{ - return 0; - } - } - }); - } catch (DAOException | SQLException e){ - throw new DAOException(e.getMessage(),e); - } - finally { - con.close(); - } - return hiveStorageInfos.subList(0,10); - } - - @Override - public int getTableInfo(String dbName, String tableName, Boolean isPartTable) throws SQLException { - DataSource dataSource = DataSourceUtil.getDataSource(); - Connection con =dataSource.getConnection(); - PreparedStatement ps=null; - ResultSet rs=null; - int res = 0; - try { - String sql=null; - if(isPartTable==false){ - sql="select TABLE_PARAMS.PARAM_VALUE as totalSize from DBS, TBLS,TABLE_PARAMS where TBLS.TBL_ID=TABLE_PARAMS.TBL_ID AND TBLS.DB_ID=DBS.DB_ID AND TABLE_PARAMS.PARAM_KEY='totalSize' AND DBS.NAME="+"'"+dbName+"' AND TBLS.TBL_NAME="+"'"+tableName+"'"; - } - else { - - sql="select SUM(PARTITION_PARAMS.PARAM_VALUE) as totalSize from DBS,TBLS,PARTITIONS ,PARTITION_PARAMS where DBS.DB_ID=TBLS.DB_ID AND TBLS.TBL_ID=PARTITIONS.TBL_ID AND PARTITIONS.PART_ID =PARTITION_PARAMS.PART_ID AND PARTITION_PARAMS.PARAM_KEY='totalSize' AND DBS.NAME="+"'"+dbName +"' AND TBLS.TBL_NAME="+"'"+tableName+"' group by TBLS.TBL_NAME"; - } - ps=con.prepareStatement(sql); - rs=ps.executeQuery(); - while (rs.next()){ - res=rs.getInt(1); - } - - } catch (DAOException | SQLException e){ - throw new DAOException(e.getMessage(),e); - } - finally { - con.close(); - } - return res; - } - - @Override - public List getPartInfo(String dbName, String tableName)throws SQLException { - DataSource dataSource = DataSourceUtil.getDataSource(); - Connection con =dataSource.getConnection(); - PreparedStatement ps=null; - ResultSet rs=null; - List hivePartInfos = new ArrayList<>(); - try { - String sql="select b.PART_NAME,b.CREATE_TIME,MAX(CASE c.PARAM_KEY WHEN 'transient_lastDdlTime' THEN c.PARAM_VALUE ELSE null END) transient_lastDdlTime ,MAX(CASE c.PARAM_KEY WHEN 'numRows' THEN c.PARAM_VALUE ELSE null END) numRows,MAX(CASE c.PARAM_KEY WHEN 'totalSize' THEN c.PARAM_VALUE ELSE null END) totalSize from TBLS a,PARTITIONS b,PARTITION_PARAMS c,DBS d where a.TBL_NAME="+"'"+tableName+"'"+"AND d.NAME="+"'"+dbName+"'" +"AND a.TBL_ID=b.TBL_ID AND a.DB_ID=d.DB_ID AND b.PART_ID=c.PART_ID GROUP BY c.PART_ID"; - ps=con.prepareStatement(sql); - rs=ps.executeQuery(); - while (rs.next()){ - HivePartInfo part =new HivePartInfo(); - part.setPartName(rs.getString(1)); - Long lastAccessTime = Long.valueOf(rs.getInt(3)); - if(lastAccessTime !=null && lastAccessTime !=0L) { - part.setLastAccessTime(DateUtil.unixToTimeStr(lastAccessTime * 1000)); - } - Long createTime = Long.valueOf(rs.getInt(2)); - if(createTime !=null && createTime !=0L) { - part.setCreateTime(DateUtil.unixToTimeStr(createTime * 1000)); - } - part.setReordCnt(rs.getInt(4)); - part.setStore(rs.getInt(5)); - hivePartInfos.add(part); - } - - } catch (DAOException | SQLException e){ - throw new DAOException(e.getMessage(),e); - } - finally { - con.close(); - } - return hivePartInfos; - } -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/WorkspaceInfoMapper.xml b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/WorkspaceInfoMapper.xml deleted file mode 100644 index 8dcfde4e3..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/impl/WorkspaceInfoMapper.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveStorageInfo.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveStorageInfo.java deleted file mode 100644 index 75d60bbb5..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveStorageInfo.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.entity; - -import lombok.Data; - -@Data -public class HiveStorageInfo { - private String tableName; - private Long storage; - private String guid; -} \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblClassificationInfo.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblClassificationInfo.java deleted file mode 100644 index 7977271e8..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblClassificationInfo.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.entity; - -import lombok.Data; - -import java.util.List; - -@Data -public class HiveTblClassificationInfo { - private List oldClassifications; - private List newClassifications; -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblDetailInfo.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblDetailInfo.java deleted file mode 100644 index 1204e2e9b..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblDetailInfo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.entity; -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; -import java.util.Set; - -@Data -public class HiveTblDetailInfo implements Serializable { - private HiveTblBasicInfo basic; - private List columns; - private List partitionKeys; - private List classifications; - - @Data - public static class HiveTblBasicInfo extends HiveTblSimpleInfo { - private String store; //存储量 - private Boolean isParTbl; //是否分区表 - private String tableType; //Hive表类型 tableType: EXTERNAL_TABLE, MANAGED_TABLE - private String location; //Hive表存储路径 - } - - @Data - public static class HiveColumnInfo { - private String name; - private String type; - private String guid; - private String comment; - } - - @Data - @AllArgsConstructor - public static class HiveClassificationInfo { - private String typeName; - private Set superTypeNames; - private Set subTypeNames; - } -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblLabelInfo.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblLabelInfo.java deleted file mode 100644 index 5a4be4a35..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblLabelInfo.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.entity; - -import lombok.Data; - -import java.util.Set; - -@Data -public class HiveTblLabelInfo { - private Set labels; -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetRestful.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetRestful.java deleted file mode 100644 index 44c7dbeba..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetRestful.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.restful; - -import com.webank.wedatasphere.dss.data.asset.entity.HiveTblLabelInfo; -import com.webank.wedatasphere.dss.data.asset.service.AssetService; -import com.webank.wedatasphere.dss.data.asset.service.WorkspaceInfoService; -import org.apache.linkis.server.Message; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.Map; - -@RestController -@RequestMapping(path = "/dss/data/governance/asset", produces = {"application/json"}) -@AllArgsConstructor -public class AssetRestful { - private static final Logger logger = LoggerFactory.getLogger(AssetRestful.class); - - private AssetService assetService; - private WorkspaceInfoService workspaceInfoService; - - /** - * 获取数据资产概要:hivedb数、hivetable数据、总存储量 - */ - @RequestMapping(method = RequestMethod.GET, path ="/hiveSummary") - public Message getHiveSummary() throws Exception { - return Message.ok().data("result", assetService.getHiveSummary()); - } - - /** - * 修改单个表或单个列注释 - */ - @RequestMapping(method = RequestMethod.PUT, path ="/comment/{guid}") - public Message modifyComment(@PathVariable String guid, @RequestParam String comment) throws Exception { - comment="\""+comment+"\""; - assetService.modifyComment(guid,comment); - return Message.ok().data("result","修改成功"); - } - - /** - * 批量修改多个个表或列注释 - */ - @RequestMapping(method = RequestMethod.PUT, path ="/comment/bulk") - public Message modifyComment(@RequestBody Map commentMap) throws Exception { - for (Map.Entry stringStringEntry : commentMap.entrySet()) { - stringStringEntry.setValue("\""+stringStringEntry.getValue()+"\""); - } - assetService.bulkModifyComment(commentMap); - - return Message.ok().data("result","修改成功"); - } - - - /** - * 设置单个表或单个列的标签 - */ - @RequestMapping(method = RequestMethod.POST, path ="/label/{guid}") - public Message setLabels(@PathVariable String guid, @RequestBody HiveTblLabelInfo hiveTblLabelInfo) throws Exception { - assetService.setLabels(guid,hiveTblLabelInfo.getLabels()); - - return Message.ok().data("result","设置成功"); - } - - /** - * 删除单个表或单个列的标签,linkis-gateway不支持DELETE方法 - */ - @RequestMapping(method = RequestMethod.PUT, path ="/label/{guid}") - public Message removeLabels(@PathVariable String guid, @RequestBody HiveTblLabelInfo hiveTblLabelInfo) throws Exception { - assetService.removeLabels(guid,hiveTblLabelInfo.getLabels()); - - return Message.ok().data("result","删除成功"); - } - - /** - * 获取工作空间下所有用户名 - */ - @RequestMapping(method = RequestMethod.GET, path ="getWorkspaceUsers/{workspaceId}/{search}") - public Message getWorkspaceUsers(@PathVariable int workspaceId,@PathVariable String search) throws Exception{ - String searchs="%"+search+"%"; - List workspaceUsers = workspaceInfoService.getWorkspaceUsers(workspaceId,searchs); - return Message.ok().data("result",workspaceUsers); - - } -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetTblRestful.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetTblRestful.java deleted file mode 100644 index e74039753..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/restful/AssetTblRestful.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.restful; - -import com.webank.wedatasphere.dss.data.asset.entity.HivePartInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveStorageInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveTblClassificationInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveTblSimpleInfo; -import com.webank.wedatasphere.dss.data.asset.service.AssetService; -import com.webank.wedatasphere.dss.data.asset.service.WorkspaceInfoService; -import org.apache.linkis.server.Message; -import lombok.AllArgsConstructor; -import org.apache.atlas.model.instance.AtlasClassification; -import org.apache.atlas.model.lineage.AtlasLineageInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -@RestController -@RequestMapping(path = "/dss/data/governance/asset/hiveTbl", produces = {"application/json"}) -@AllArgsConstructor -public class AssetTblRestful { - private static final Logger logger = LoggerFactory.getLogger(AssetTblRestful.class); - - private static final String DEFAULT_DIRECTION = "BOTH"; - private static final String DEFAULT_DEPTH = "3"; - private static final String DEFAULT_LIMIT = "10"; - private static final String DEFAULT_OFFSET = "0"; - - private AssetService assetService; - private WorkspaceInfoService workspaceInfoService; - - /** - * 获取存储量前10的表信息 - */ - @RequestMapping(method = RequestMethod.GET, path ="/topStorage") - public Message getTop10Storage() throws Exception{ - List top10Table = assetService.getTop10Table(); - for (HiveStorageInfo hiveStorageInfo : top10Table) { - String qualifiedName=hiveStorageInfo.getTableName(); - String hiveTblGuid = assetService.getHiveTblGuid(qualifiedName); - hiveStorageInfo.setGuid(hiveTblGuid); - } - return Message.ok().data("result",top10Table); - } - - /** - * 搜索hive表 - */ - @RequestMapping(method = RequestMethod.GET, path ="/search") - public Message searchHiveTbl(@RequestParam(required = false) String classification, - @RequestParam(defaultValue = "") String query, - @RequestParam(defaultValue = "") String keyword, - @RequestParam(defaultValue = DEFAULT_LIMIT) int limit, - @RequestParam(defaultValue = DEFAULT_OFFSET) int offset) throws Exception { - List hiveTblSimpleInfoList = assetService.searchHiveTable(classification,query.trim(),limit,offset); - if(hiveTblSimpleInfoList ==null || keyword ==null || keyword.trim().equals("")) { - return Message.ok().data("result",hiveTblSimpleInfoList); - } - else { - Pattern regex = Pattern.compile(keyword); - return Message.ok().data("result",hiveTblSimpleInfoList.stream().filter(ele -> regex.matcher(ele.getOwner()).find()).collect(Collectors.toList())); - } - } - - /** - * 获取单个表的详细信息,包括:基本信息、字段信息 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/basic") - public Message getHiveTblBasic(@PathVariable String guid) throws Exception { - return Message.ok().data("result",assetService.getHiveTblDetail(guid)); - } - - /** - * 获取表分区信息 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/partition") - public Message getHiveTblPartition(@PathVariable String guid) throws Exception { - List hiveTblPartition = assetService.getHiveTblPartition(guid); - if (hiveTblPartition.size()>0){ - return Message.ok().data("result",hiveTblPartition); - } - else { - return Message.ok().data("result",null); - } - } - - /** - * 获取表的血缘信息 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/lineage") - public Message getHiveTblLineage(@PathVariable String guid, - @RequestParam(defaultValue = DEFAULT_DIRECTION) AtlasLineageInfo.LineageDirection direction, - @RequestParam(defaultValue = DEFAULT_DEPTH) int depth) throws Exception { - return Message.ok().data("result",assetService.getHiveTblLineage(guid,direction,depth)); - } - - /** - * 获取表的select语句 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/select") - public Message getHiveTblSelect(@PathVariable String guid) throws Exception { - return Message.ok().data("result",assetService.getTbSelect(guid)); - } - - /** - * 获取表的create语句 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/create") - public Message getHiveTblCreate(@PathVariable String guid) throws Exception { - return Message.ok().data("result",assetService.getTbCreate(guid)); - - } - - /** - * 获取分类 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{guid}/classifications") - public Message getClassifications(@PathVariable String guid) throws Exception { - return Message.ok().data("result",assetService.getClassifications(guid)); - } - - /** - * 添加分类 - */ - @Deprecated - @RequestMapping(method = RequestMethod.POST, path ="/{guid}/classifications") - public Message addClassifications(@PathVariable String guid, @RequestBody List classifications) throws Exception { - assetService.addClassifications(guid, classifications); - return Message.ok().data("result","添加成功"); - } - -// /** -// * 删除已有全部旧分类,并添加新分类 -// * linkis-gateway无法正常转换json为list -// * [{"typeName": "test"},{"typeName": "DWD"}] ---> List classifications -// * ["test","DWD"] ---> List typeNames -// */ -// @RequestMapping(method = RequestMethod.PUT, path ="/{guid}/classifications") -// public Message removeAndAddNewClassifications(@PathVariable String guid, @RequestBody List classifications) throws Exception { -// assetService.removeAndAddClassifications(guid, classifications); -// -// return Message.ok().data("result","更新成功"); -// } - - /** - * 删除已有全部旧分类,并添加新分类 - * 支持 {"newClassifications":["test","DWD"]} 非顶层的List数组转换 - */ - @RequestMapping(method = RequestMethod.PUT, path ="/{guid}/classifications") - public Message removeAndAddClassifications(@PathVariable String guid, @RequestBody HiveTblClassificationInfo hiveTblClassificationInfo) throws Exception { - List newClassifications = new ArrayList<>(); - Optional.ofNullable(hiveTblClassificationInfo.getNewClassifications()).orElseGet(()-> { - logger.warn("hive table uid is %s, newClassifications is null",guid); - return new ArrayList<>(); - }).stream().filter(Objects::nonNull).forEach(typeName -> { - AtlasClassification atlasClassification =new AtlasClassification(typeName); - atlasClassification.setPropagate(false); - atlasClassification.setRemovePropagationsOnEntityDelete(true); - newClassifications.add(atlasClassification); - }); - assetService.removeAndAddClassifications(guid, newClassifications); - - return Message.ok().data("result","更新成功"); - } - - /** - * 删除分类 - * @DELETE linkis-gateway 不支持DELETE方式 - */ - @RequestMapping(method = RequestMethod.POST, path ="/{guid}/classification/{classificationName}") - public Message deleteClassification(@PathVariable String guid, @PathVariable final String classificationName) throws Exception { - assetService.deleteClassification(guid, classificationName); - - return Message.ok().data("result","删除成功"); - } -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/AssetService.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/AssetService.java deleted file mode 100644 index d42190e27..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/AssetService.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.service; - -import com.webank.wedatasphere.dss.data.asset.entity.*; -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; -import com.webank.wedatasphere.dss.data.common.atlas.AtlasClassificationV2.AtlasClassificationsV2; -import org.apache.atlas.model.instance.AtlasClassification; -import org.apache.atlas.model.lineage.AtlasLineageInfo; - -import java.sql.SQLException; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public interface AssetService { - public Map getHiveSummary() throws DataGovernanceException; - - public List searchHiveTable(String classification, String query, - int limit, int offset) throws DataGovernanceException; - - public HiveTblDetailInfo getHiveTblDetail(String guid) throws DataGovernanceException; - - public List getHiveTblPartition(String guid) throws DataGovernanceException; - - public String getHiveTblGuid(String qualifiedName) throws DataGovernanceException; - - public String getTbSelect(String guid) throws DataGovernanceException; - - public String getTbCreate(String guid) throws DataGovernanceException; - - public void modifyComment(String guid, String commentStr) throws DataGovernanceException; - - public void bulkModifyComment(Map commentMap) throws DataGovernanceException; - - public void setLabels(String guid, Set labels) throws DataGovernanceException; - - public void removeLabels(String guid, Set labels) throws DataGovernanceException; - - /** - * 获取表实体的血缘信息 - */ - public AtlasLineageInfo getHiveTblLineage(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws DataGovernanceException; - - public List getTop10Table() throws DataGovernanceException, SQLException; - - public void addClassifications(String guid, List classifications) throws DataGovernanceException; - - public void deleteClassification(String guid, String classificationName) throws DataGovernanceException; - - public void deleteClassifications(String guid, List classifications) throws DataGovernanceException; - - public void updateClassifications(String guid, List classifications) throws DataGovernanceException; - - /** - * 为实体删除已有的分类,添加新的分类 - */ - public void removeAndAddClassifications(String guid, List newClassifications) throws DataGovernanceException; - - public AtlasClassificationsV2 getClassifications(String guid) throws DataGovernanceException; -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/WorkspaceInfoService.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/WorkspaceInfoService.java deleted file mode 100644 index b21828026..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/WorkspaceInfoService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.service; - - -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; - - -import java.util.List; - -public interface WorkspaceInfoService { - - public List getWorkspaceUsers(int workspaceId,String search) throws DataGovernanceException; - -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/AssetServiceImpl.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/AssetServiceImpl.java deleted file mode 100644 index 31bf580ff..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/AssetServiceImpl.java +++ /dev/null @@ -1,518 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.service.impl; - -import com.google.gson.internal.LinkedTreeMap; -import com.webank.wedatasphere.dss.data.asset.dao.MetaInfoMapper; -import com.webank.wedatasphere.dss.data.asset.dao.impl.MetaInfoMapperImpl; -import com.webank.wedatasphere.dss.data.asset.entity.HivePartInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveStorageInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveTblDetailInfo; -import com.webank.wedatasphere.dss.data.asset.entity.HiveTblSimpleInfo; -import com.webank.wedatasphere.dss.data.asset.service.AssetService; -import com.webank.wedatasphere.dss.data.common.atlas.AtlasClassificationV2; -import com.webank.wedatasphere.dss.data.common.atlas.AtlasService; -import com.webank.wedatasphere.dss.data.common.conf.AtlasConf; -import com.webank.wedatasphere.dss.data.common.exception.DAOException; -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; -import com.webank.wedatasphere.dss.data.common.utils.DateUtil; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.model.instance.AtlasClassification; -import org.apache.atlas.model.instance.AtlasEntity; -import org.apache.atlas.model.instance.AtlasEntityHeader; -import org.apache.atlas.model.instance.AtlasRelatedObjectId; -import org.apache.atlas.model.lineage.AtlasLineageInfo; -import org.apache.atlas.model.typedef.AtlasClassificationDef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -@Service -public class AssetServiceImpl implements AssetService { - private static final Logger logger = LoggerFactory.getLogger(AssetServiceImpl.class); - - private AtlasService atlasService; - private MetaInfoMapper metaInfoMapper; - - public AssetServiceImpl(AtlasService atlasService) { - this.atlasService = atlasService; - this.metaInfoMapper = new MetaInfoMapperImpl(); - } - - @Override - public Map getHiveSummary() throws DataGovernanceException { - try { - Map result = new HashMap<>(); - - result.put("hiveDb", atlasService.getHiveDbCnt()); - result.put("hiveTable", atlasService.getHiveTableCnt()); - result.put("hiveStore", metaInfoMapper.getTableStorage()); - - return result; - } catch (AtlasServiceException | DAOException | SQLException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public List searchHiveTable(String classification, String query, - int limit, int offset) throws DataGovernanceException { - List atlasEntityHeaders = null; - try { - atlasEntityHeaders = atlasService.searchHiveTable(classification, "*" + query + "*", true, limit, offset); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - - if (atlasEntityHeaders != null) { - //columns 根据keyword来正则匹配过滤 - Pattern regex = Pattern.compile(query); - return atlasEntityHeaders.parallelStream().filter(Objects::nonNull).map(atlasEntityHeader -> { - HiveTblSimpleInfo hiveTblSimpleInfo = new HiveTblSimpleInfo(); - hiveTblSimpleInfo.setGuid(atlasEntityHeader.getGuid()); - hiveTblSimpleInfo.setName(stringValueOfObject(atlasEntityHeader.getAttribute("name"))); - String qualifiedName =stringValueOfObject(atlasEntityHeader.getAttribute("qualifiedName")); - hiveTblSimpleInfo.setQualifiedName(qualifiedName); - hiveTblSimpleInfo.setOwner(stringValueOfObject(atlasEntityHeader.getAttribute("owner"))); - Object createTime = atlasEntityHeader.getAttribute("createTime"); - if (createTime != null) { - hiveTblSimpleInfo.setCreateTime(DateUtil.unixToTimeStr((Double) createTime)); - } - if(null != qualifiedName && qualifiedName.split("\\.").length >0){ - String dbName = qualifiedName.split("\\.")[0]; - hiveTblSimpleInfo.setDbName(dbName); - } - hiveTblSimpleInfo.setLabels(atlasEntityHeader.getLabels()); - - try { - AtlasEntity atlasEntity = atlasService.getHiveTblByGuid(atlasEntityHeader.getGuid()); - - //comment - hiveTblSimpleInfo.setComment(stringValueOfObject(atlasEntity.getAttribute("comment"))); - List> atlasRelatedObjectIdListForColumns = (List>)atlasEntity.getRelationshipAttribute("columns"); - if(null != query && !query.trim().equalsIgnoreCase("")) { - hiveTblSimpleInfo.setColumns(atlasRelatedObjectIdListForColumns.stream().map(columnMap -> columnMap.getOrDefault("displayText","").toString()) - .filter(columnName -> regex.matcher(columnName).find()).collect(Collectors.toList())); - } - //classifications - List classificationInfoList = getClassificationInfoList(atlasEntity); - hiveTblSimpleInfo.setClassifications(classificationInfoList); - } catch (AtlasServiceException ex) { - logger.error(ex.getMessage()); - } - - return hiveTblSimpleInfo; - }).collect(Collectors.toList()); - } - return null; - } - - private String stringValueOfObject(Object obj){ - if(null !=obj) { - return obj.toString(); - } - else { - return null; - } - } - - @Override - public String getHiveTblGuid(String qualifiedName) throws DataGovernanceException{ - qualifiedName = qualifiedName + "@" + AtlasConf.ATLAS_CLUSTER_NAME.getValue(); - Map uniqAttributes =new HashMap<>(); - uniqAttributes.put("qualifiedName",qualifiedName); - try{ - AtlasEntity atlasEntity = atlasService.getHiveTblByAttribute(uniqAttributes,true,true); - if(atlasEntity == null){ - logger.warn(String.format("%s not exist in atlas", qualifiedName)); - return null; - } - else { - return atlasEntity.getGuid(); - } - } catch (AtlasServiceException ex) { - logger.warn(String.format("%s not exist in atlas", qualifiedName)); - return null; - } - } - - @Override - public HiveTblDetailInfo getHiveTblDetail(String guid) throws DataGovernanceException { - try { - AtlasEntity atlasEntity = atlasService.getHiveTblByGuid(guid); - - HiveTblDetailInfo hiveTblDetailInfo = new HiveTblDetailInfo(); - hiveTblDetailInfo.setBasic(getBasicInfo(guid, atlasEntity)); - hiveTblDetailInfo.setColumns(getBasicColumnInfoList(atlasEntity)); - hiveTblDetailInfo.setPartitionKeys(getPartitionColumnInfoList(atlasEntity)); - hiveTblDetailInfo.setClassifications(getClassificationInfoList(atlasEntity)); - - return hiveTblDetailInfo; - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - private HiveTblDetailInfo.HiveTblBasicInfo getBasicInfo(String guid, AtlasEntity atlasEntity) throws AtlasServiceException { - Map hiveTblAttributesMap = atlasService.getHiveTblAttributesByGuid(guid); - Boolean isPartTable = (Boolean) hiveTblAttributesMap.get("isPartition"); - int storage = 0; - String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; - String tableName = db_name.split("\\.")[1]; - String dbName = db_name.split("\\.")[0]; - try { - storage = metaInfoMapper.getTableInfo(dbName, tableName, isPartTable); - } catch (SQLException e) { - e.printStackTrace(); - } - - HiveTblDetailInfo.HiveTblBasicInfo basic = new HiveTblDetailInfo.HiveTblBasicInfo(); - basic.setName(tableName); - basic.setOwner(String.valueOf(atlasEntity.getAttributes().getOrDefault("owner","NULL"))); - basic.setCreateTime(new java.text.SimpleDateFormat("yyyy MM-dd HH:mm:ss").format(atlasEntity.getCreateTime())); - basic.setStore(String.valueOf(storage)); - basic.setComment(String.valueOf(atlasEntity.getAttributes().getOrDefault("comment","NULL"))); - Set labels = atlasEntity.getLabels(); - basic.setLabels(labels); - basic.setIsParTbl(isPartTable); - basic.setGuid(guid); - basic.setTableType(hiveTblAttributesMap.getOrDefault("tableType","NULL").toString()); - basic.setLocation(hiveTblAttributesMap.getOrDefault("location","NULL").toString()); - - return basic; - } - - private List getBasicColumnInfoList(AtlasEntity atlasEntity) throws AtlasServiceException { - List guids = new ArrayList<>(); - List> columns = (List>) atlasEntity.getAttributes().get("columns"); - for (LinkedTreeMap column : columns) { - guids.add(column.get("guid")); - } - - List hiveColumnInfos = new ArrayList<>(); - if (guids.size() > 0) { - List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); - for (AtlasEntity hiveColumnsByGuid : hiveColumnsByGuids) { - HiveTblDetailInfo.HiveColumnInfo hiveColumnInfo = new HiveTblDetailInfo.HiveColumnInfo(); - hiveColumnInfo.setName(String.valueOf(hiveColumnsByGuid.getAttributes().get("name"))); - hiveColumnInfo.setType(String.valueOf(hiveColumnsByGuid.getAttributes().get("type"))); - hiveColumnInfo.setComment(String.valueOf(hiveColumnsByGuid.getAttributes().get("comment"))); - hiveColumnInfo.setGuid(hiveColumnsByGuid.getGuid()); - hiveColumnInfos.add(hiveColumnInfo); - } - } - return hiveColumnInfos; - } - - private List getPartitionColumnInfoList(AtlasEntity atlasEntity) throws AtlasServiceException { - List partguids = new ArrayList<>(); - List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); - for (LinkedTreeMap column : partitionKeys) { - partguids.add(column.get("guid")); - } - List partitionColumns = new ArrayList<>(); - if (partguids.size() > 0) { - List hivePartColumnsByGuids = atlasService.getHiveColumnsByGuids(partguids); - for (AtlasEntity hiveColumnsByGuid : hivePartColumnsByGuids) { - HiveTblDetailInfo.HiveColumnInfo hiveColumnInfo = new HiveTblDetailInfo.HiveColumnInfo(); - hiveColumnInfo.setName(String.valueOf(hiveColumnsByGuid.getAttributes().get("name"))); - hiveColumnInfo.setType(String.valueOf(hiveColumnsByGuid.getAttributes().get("type"))); - hiveColumnInfo.setComment(String.valueOf(hiveColumnsByGuid.getAttributes().get("comment"))); - hiveColumnInfo.setGuid(hiveColumnsByGuid.getGuid()); - partitionColumns.add(hiveColumnInfo); - } - } - return partitionColumns; - } - - private List getClassificationInfoList(AtlasEntity atlasEntity) throws AtlasServiceException { - if(atlasEntity.getClassifications() ==null) { - return null; - } - else { - List hiveClassificationInfoList =new ArrayList<>(); - String typeName =null; - AtlasClassificationDef atlasClassificationDef =null; - - List atlasClassificationList = atlasEntity.getClassifications(); - for (AtlasClassification atlasClassification : atlasClassificationList) { - typeName = atlasClassification.getTypeName(); - atlasClassificationDef = getClassificationDefByName(typeName); - hiveClassificationInfoList.add( - new HiveTblDetailInfo.HiveClassificationInfo(typeName,atlasClassificationDef.getSuperTypes(),atlasClassificationDef.getSubTypes())); - } - return hiveClassificationInfoList; - } - } - - private AtlasClassificationDef getClassificationDefByName(String name) throws DataGovernanceException { - try { - return atlasService.getClassificationDefByName(name); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public List getHiveTblPartition(String guid) throws DataGovernanceException { - try { - AtlasEntity atlasEntity = atlasService.getHiveTblByGuid(guid); - String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; - String tableName = db_name.split("\\.")[1]; - String dbName = db_name.split("\\.")[0]; - List hivePartInfo = new ArrayList<>(); - try { - hivePartInfo = metaInfoMapper.getPartInfo(dbName, tableName); - } catch (SQLException e) { - e.printStackTrace(); - } - return hivePartInfo; - - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public String getTbSelect(String guid) throws DataGovernanceException { - try { - AtlasEntity atlasEntity = atlasService.getHiveTblByGuid(guid); - String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; - String tableName = db_name.split("\\.")[1]; - List guids = new ArrayList<>(); - List> columns = (List>) atlasEntity.getAttributes().get("columns"); - for (LinkedTreeMap column : columns) { - guids.add(column.get("guid")); - } - List fields = new ArrayList<>(); - List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); - for (AtlasEntity hiveColumnsByGuid : hiveColumnsByGuids) { - fields.add((String) hiveColumnsByGuid.getAttributes().get("name")); - } - Map hiveTblAttributesMap = atlasService.getHiveTblAttributesByGuid(guid); - Boolean isPartTable = (Boolean) hiveTblAttributesMap.get("isPartition"); - if (isPartTable == true) { - List partguids = new ArrayList<>(); - List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); - for (LinkedTreeMap column : partitionKeys) { - partguids.add(column.get("guid")); - } - List hiveColumnsByGuids1 = atlasService.getHiveColumnsByGuids(partguids); - for (AtlasEntity entity : hiveColumnsByGuids1) { - fields.add((String) entity.getAttributes().get("name")); - } - } - StringBuilder sql = new StringBuilder(); - sql.append("SELECT @$ "); - for (int i = 0; i < fields.size() - 1; i++) { - sql.append(fields.get(i)).append(", @$ "); - } - sql.append(fields.get(fields.size() - 1)).append(" @$ from ").append(tableName); - return sql.toString(); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public String getTbCreate(String guid) throws DataGovernanceException { - try { - StringBuilder sql = new StringBuilder(); - AtlasEntity atlasEntity = atlasService.getHiveTblByGuid(guid); - String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; - String tableName = db_name.split("\\.")[1]; - List guids = new ArrayList<>(); - List> columns = (List>) atlasEntity.getAttributes().get("columns"); - for (LinkedTreeMap column : columns) { - guids.add(column.get("guid")); - } - sql.append("CREATE TABLE IF NOT EXISTS ").append(tableName).append(" @$ ( @$ "); - List fields = new ArrayList<>(); - List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); - for (int i = 0; i < hiveColumnsByGuids.size(); i++) { - if (i < hiveColumnsByGuids.size() - 1) { - AtlasEntity hiveColumnsByGuid = hiveColumnsByGuids.get(i); - StringBuilder sb = new StringBuilder(); - sb.append((String) hiveColumnsByGuid.getAttributes().get("name")).append(" ").append((String) hiveColumnsByGuid.getAttributes().get("type")); - if (hiveColumnsByGuid.getAttributes().get("comment") == null) { - sb.append(", "); - } else { - sb.append(" COMMENT '").append(hiveColumnsByGuid.getAttributes().get("comment")).append("',"); - } - fields.add(sb.append(" @$ ").toString()); - } else { - AtlasEntity hiveColumnsByGuid = hiveColumnsByGuids.get(i); - StringBuilder sb = new StringBuilder(); - sb.append((String) hiveColumnsByGuid.getAttributes().get("name")).append(" ").append((String) hiveColumnsByGuid.getAttributes().get("type")); - if (hiveColumnsByGuid.getAttributes().get("comment") == null) { - sb.append(" "); - } else { - sb.append(" COMMENT '").append(hiveColumnsByGuid.getAttributes().get("comment")).append("' "); - } - fields.add(sb.append(" @$ ").toString()); - } - } - for (String field : fields) { - sql.append(field); - } - sql.append(") @$ "); - Map hiveTblAttributesMap = atlasService.getHiveTblAttributesByGuid(guid); - Boolean isPartTable = (Boolean) hiveTblAttributesMap.get("isPartition"); - if (isPartTable == true) { - sql.append("PARTITIONED BY @$ ( @$ "); - List partguids = new ArrayList<>(); - List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); - for (LinkedTreeMap column : partitionKeys) { - partguids.add(column.get("guid")); - } - List keyFields = new ArrayList<>(); - List hiveColumnsByGuids1 = atlasService.getHiveColumnsByGuids(partguids); - for (int i = 0; i < hiveColumnsByGuids1.size(); i++) { - if (i < hiveColumnsByGuids1.size() - 1) { - AtlasEntity entity = hiveColumnsByGuids1.get(i); - StringBuilder sb = new StringBuilder(); - sb.append((String) entity.getAttributes().get("name")).append(" ").append((String) entity.getAttributes().get("type")); - if (entity.getAttributes().get("comment") == null) { - sb.append(", "); - } else { - sb.append(" COMMENT '").append(entity.getAttributes().get("comment")).append("', "); - } - keyFields.add(sb.append(" @$ ").toString()); - } else { - AtlasEntity entity = hiveColumnsByGuids1.get(i); - StringBuilder sb = new StringBuilder(); - sb.append((String) entity.getAttributes().get("name")).append(" ").append((String) entity.getAttributes().get("type")); - if (entity.getAttributes().get("comment") == null) { - sb.append(" "); - } else { - sb.append(" COMMENT '").append(entity.getAttributes().get("comment")).append("' "); - } - keyFields.add(sb.append(" @$ ").toString()); - } - } - for (int i = 0; i < keyFields.size(); i++) { - sql.append(keyFields.get(i)); - } - sql.append(")"); - } - return sql.toString(); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public void modifyComment(String guid, String commentStr) throws DataGovernanceException { - try { - atlasService.modifyComment(guid, commentStr); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public void bulkModifyComment(Map commentMap) throws DataGovernanceException { - commentMap.keySet().forEach(key -> { - try { - atlasService.modifyComment(key, commentMap.get(key)); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - }); - - } - - @Override - public void setLabels(String guid, Set labels) throws DataGovernanceException { - try { - atlasService.setLabels(guid, labels); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public void removeLabels(String guid, Set labels) throws DataGovernanceException { - try { - atlasService.removeLabels(guid, labels); - } catch (AtlasServiceException ex) { - throw new DataGovernanceException(ex.getMessage()); - } - } - - @Override - public AtlasLineageInfo getHiveTblLineage(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws DataGovernanceException { - try { - return atlasService.getLineageInfo(guid, direction, depth); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public List getTop10Table() throws DataGovernanceException, SQLException { - return metaInfoMapper.getTop10Table(); - } - - @Override - public void addClassifications(String guid, List classifications) throws DataGovernanceException { - try { - atlasService.addClassifications(guid,classifications); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void deleteClassification(String guid, String classificationName) throws DataGovernanceException{ - try { - atlasService.deleteClassification(guid, classificationName); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void deleteClassifications(String guid, List classifications) throws DataGovernanceException { - try { - atlasService.deleteClassifications(guid, classifications); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void updateClassifications(String guid, List classifications) throws DataGovernanceException { - try { - atlasService.updateClassifications(guid, classifications); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void removeAndAddClassifications(String guid, List newClassifications) throws DataGovernanceException { - try { - atlasService.removeAndAddClassifications(guid, newClassifications); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public AtlasClassificationV2.AtlasClassificationsV2 getClassifications(String guid) throws DataGovernanceException { - try { - return atlasService.getClassifications(guid); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } -} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/WorkspaceInfoServiceImpl.java b/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/WorkspaceInfoServiceImpl.java deleted file mode 100644 index 243ffe900..000000000 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/service/impl/WorkspaceInfoServiceImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.webank.wedatasphere.dss.data.asset.service.impl; - -import com.webank.wedatasphere.dss.data.asset.dao.WorkspaceInfoMapper; -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; -import com.webank.wedatasphere.dss.data.asset.service.WorkspaceInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -@Service -public class WorkspaceInfoServiceImpl implements WorkspaceInfoService { - - @Autowired - private WorkspaceInfoMapper workspaceInfoMapper; - - - @Override - public List getWorkspaceUsers(int workspaceId,String search) throws DataGovernanceException { - - List workspaceUsers = workspaceInfoMapper.getWorkspaceUsersName(workspaceId,search); - return workspaceUsers; - } -} diff --git a/dss-apps/dss-data-governance/dss-data-classification-server/pom.xml b/dss-apps/dss-data-governance/dss-data-classification-server/pom.xml deleted file mode 100644 index d8c99a87a..000000000 --- a/dss-apps/dss-data-governance/dss-data-classification-server/pom.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - dss - com.webank.wedatasphere.dss - 1.1.0 - ../../../pom.xml - - 4.0.0 - - dss-data-classification-server - - - 2.1.0 - - - - com.webank.wedatasphere.dss - dss-data-governance-common - ${dss.version} - compile - - - org.apache.linkis - linkis-module - ${linkis.version} - provided - - - org.springframework.cloud - spring-cloud-netflix - - - spring-cloud-starter-netflix-eureka-client - org.springframework.cloud - - - javax.ws.rs - javax.ws.rs-api - - - - - org.apache.commons - commons-math3 - provided - - - xstream - com.thoughtworks.xstream - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - ${spring.cloud.version} - provided - - - logback-classic - ch.qos.logback - - - log4j-to-slf4j - org.apache.logging.log4j - - - gson - com.google.code.gson - - - jsr311-api - javax.ws.rs - - - xstream - com.thoughtworks.xstream - - - commons-math - org.apache.commons - - - jackson-core - com.fasterxml.jackson.core - - - spring-boot-autoconfigure - org.springframework.boot - - - spring-boot-starter-aop - org.springframework.boot - - - spring-boot-starter - org.springframework.boot - - - spring-boot-starter-cache - org.springframework.boot - - - - - org.apache.linkis - linkis-mybatis - ${linkis.version} - - - com.webank.wedatasphere.dss - dss-common - ${dss.version} - provided - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - - - net.alchim31.maven - scala-maven-plugin - - - org.apache.maven.plugins - maven-jar-plugin - - - org.apache.maven.plugins - maven-assembly-plugin - 2.3 - false - - - make-assembly - package - - single - - - - src/main/assembly/distribution.xml - - - - - - false - out - false - false - - src/main/assembly/distribution.xml - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - src/main/java - - **/*.xml - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/restful/ClassificationRestful.java b/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/restful/ClassificationRestful.java deleted file mode 100644 index 926995ea2..000000000 --- a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/restful/ClassificationRestful.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.webank.wedatasphere.dss.data.classification.restful; - -import com.webank.wedatasphere.dss.data.classification.service.ClassificationService; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.atlas.model.typedef.AtlasClassificationDef; -import org.apache.atlas.model.typedef.AtlasTypesDef; -import org.apache.linkis.server.Message; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -@RestController -@RequestMapping(path = "/dss/data/governance/classification", produces = {"application/json"}) -@Slf4j -@AllArgsConstructor -public class ClassificationRestful { - private static final Logger logger = LoggerFactory.getLogger(ClassificationRestful.class); - - private ClassificationService classificationService; - - /** - * 获取所有分类 - */ - @RequestMapping(method = RequestMethod.GET, path ="/all") - public Message getClassificationDef() throws Exception { - return Message.ok().data("result", classificationService.getClassificationDef()); - } - - /** - * 根据名称获取分类,不包括包括子分类 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{name}") - public Message getClassificationDef(@PathVariable String name) throws Exception { - return Message.ok().data("result",classificationService.getClassificationDefByName(name)); - } - - /** - * 根据名称获取分类,包括一级子分类 - * keyword 按照分类名称模糊搜索 - */ - @RequestMapping(method = RequestMethod.GET, path ="/{name}/subtypes") - public Message getClassificationDefList(@PathVariable String name, - @RequestParam(defaultValue = "") String keyword) throws Exception { - List atlasClassificationDefList = classificationService.getClassificationDefListByName(name); - if(atlasClassificationDefList ==null || keyword ==null || keyword.trim().equalsIgnoreCase("")) { - return Message.ok().data("result", atlasClassificationDefList); - } - else{ - Pattern regex = Pattern.compile(keyword); - return Message.ok().data("result",atlasClassificationDefList.stream().filter(ele -> regex.matcher(ele.getName()).find()).collect(Collectors.toList())); - } - } - - /** - * 获取所有分层的一级子类型,包括系统预置分层和用户自定义分层 - */ - @RequestMapping(method = RequestMethod.GET, path ="/layers/all") - public Message getClassificationDefListForLayer() throws Exception { - return Message.ok().data("result",classificationService.getClassificationDefListForLayer()); - } - - /** - * 创建新的分类 - */ - @RequestMapping(method = RequestMethod.POST, path ="/batch") - public Message createClassificationDef(@RequestBody AtlasTypesDef typesDef) throws Exception { - return Message.ok().data("result", classificationService.createAtlasTypeDefs(typesDef)); - } - - /** - * 更新的分类 - */ - @RequestMapping(method = RequestMethod.PUT, path ="/batch") - public Message updateClassificationDef(@RequestBody AtlasTypesDef typesDef) throws Exception { - classificationService.updateAtlasTypeDefs(typesDef); - return Message.ok().data("result","更新成功" ); - } - - /** - * 删除分类 - * @DELETE linkis-gateway 不支持DELETE方式 - */ - @RequestMapping(method = RequestMethod.POST, path ="/{name}/delete") - public Message deleteClassificationDef(@PathVariable String name) throws Exception { - classificationService.deleteClassificationDefByName(name); - return Message.ok().data("result","删除成功"); - } -} diff --git a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/ClassificationService.java b/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/ClassificationService.java deleted file mode 100644 index 1fabe8b2d..000000000 --- a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/ClassificationService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.webank.wedatasphere.dss.data.classification.service; - -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.model.typedef.AtlasClassificationDef; -import org.apache.atlas.model.typedef.AtlasTypesDef; - -import java.util.List; - -public interface ClassificationService { - public AtlasTypesDef getClassificationDef( ) throws DataGovernanceException; - - public AtlasClassificationDef getClassificationDefByName(String name) throws DataGovernanceException; - - public List getClassificationDefListByName(String name) throws DataGovernanceException; - - public List getClassificationDefListForLayer() throws DataGovernanceException; - - public AtlasTypesDef createAtlasTypeDefs(final AtlasTypesDef typesDef) throws DataGovernanceException; - - public void updateAtlasTypeDefs(final AtlasTypesDef typesDef) throws DataGovernanceException; - - public void deleteClassificationDefByName(String name) throws DataGovernanceException; - - -} diff --git a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/impl/ClassificationServiceImpl.java b/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/impl/ClassificationServiceImpl.java deleted file mode 100644 index 24753e769..000000000 --- a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/java/com/webank/wedatasphere/dss/data/classification/service/impl/ClassificationServiceImpl.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.webank.wedatasphere.dss.data.classification.service.impl; - -import com.sun.jersey.api.client.ClientResponse; -import com.webank.wedatasphere.dss.data.classification.service.ClassificationService; -import com.webank.wedatasphere.dss.data.common.atlas.AtlasService; -import com.webank.wedatasphere.dss.data.common.conf.AtlasConf; -import com.webank.wedatasphere.dss.data.common.exception.DataGovernanceException; -import lombok.AllArgsConstructor; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.model.typedef.AtlasClassificationDef; -import org.apache.atlas.model.typedef.AtlasTypesDef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import java.util.List; - -@Service -@AllArgsConstructor -public class ClassificationServiceImpl implements ClassificationService { - private static final Logger logger = LoggerFactory.getLogger(ClassificationServiceImpl.class); - private static final String ATLAS_ERROR_CODE ="errorCode"; - - private AtlasService atlasService; - - /** - * 判断系统预定义最顶层分类是否已存在,如果不存在,则需要进行初始化 - */ - @PostConstruct - private void initializeSystemClassificationList(){ - logger.info("@@@@@@@@@@@@@@ ==> initializeSystemClassificationList"); - - initializeClassification(AtlasConf.ATLAS_CLASSIFICATION_SUBJECT.getValue(),"数仓主题域"); - initializeClassification(AtlasConf.ATLAS_CLASSIFICATION_LAYER_SYSTEM.getValue(),"系统预定义分层"); - initializeClassification(AtlasConf.ATLAS_CLASSIFICATION_LAYER_USER.getValue(),"用户自定义分层"); - - logger.info("@@@@@@@@@@@@@@ <== initializeSystemClassificationList"); - } - - private void initializeClassification(String name, String description){ - AtlasClassificationDef atlasClassificationDef =null; - AtlasTypesDef atlasTypesDef =null; - - try { - atlasClassificationDef = atlasService.getClassificationDefByName(name); - if(atlasClassificationDef !=null) { - logger.info(String.format("@@@@@@@@@@@@@@ === this classification [name=%s] exists, ignore it", name)); - } - }catch (AtlasServiceException ex) { - logger.info("@@@@@@@@@@ error:" + ex.getMessage()); - // 404 - if (ClientResponse.Status.NOT_FOUND ==ex.getStatus()) { - logger.info(String.format("@@@@@@@@@@@@@@ === this classification [name=%s] don't exist, create it...", name)); - logger.info(String.format("@@@@@@@@@@@@@@ ==> initializeClassification, name=%s", name)); - atlasTypesDef = new AtlasTypesDef(); - atlasClassificationDef = new AtlasClassificationDef(name, description); - atlasTypesDef.getClassificationDefs().add(atlasClassificationDef); - this.createAtlasTypeDefs(atlasTypesDef); - logger.info(String.format("@@@@@@@@@@@@@@ <== initializeClassification, name=%s", name)); - } - else { - throw new DataGovernanceException(ex.getMessage()); - } - } - } - - - @Override - public AtlasTypesDef getClassificationDef() throws DataGovernanceException { - try { - return atlasService.getClassificationDef(); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public AtlasClassificationDef getClassificationDefByName(String name) throws DataGovernanceException { - try { - return atlasService.getClassificationDefByName(name); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public List getClassificationDefListByName(String name) throws DataGovernanceException { - try { - return atlasService.getClassificationDefListByName(name); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public List getClassificationDefListForLayer() throws DataGovernanceException { - try { - return atlasService.getClassificationDefListForLayer(); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public AtlasTypesDef createAtlasTypeDefs(final AtlasTypesDef typesDef) throws DataGovernanceException { - try { - return atlasService.createAtlasTypeDefs(typesDef); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void updateAtlasTypeDefs(AtlasTypesDef typesDef) throws DataGovernanceException { - try { - atlasService.updateAtlasTypeDefs(typesDef); - } catch (AtlasServiceException exception) { - throw new DataGovernanceException(exception.getMessage()); - } - } - - @Override - public void deleteClassificationDefByName(String name) throws DataGovernanceException { - try { - atlasService.deleteTypedefByName(name); - } catch (AtlasServiceException exception) { - if(ClientResponse.Status.CONFLICT ==exception.getStatus()){ - throw new DataGovernanceException("该分类(主题域/分层)已经与表关联,无法删除"); - } - throw new DataGovernanceException(exception.getMessage()); - } - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClassificationV2.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClassificationV2.java deleted file mode 100644 index 561fb757d..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClassificationV2.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.atlas; - -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import org.apache.atlas.model.PList; -import org.apache.atlas.model.SearchFilter; -import org.apache.atlas.model.instance.AtlasClassification; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSeeAlso; -import java.util.List; - -import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; -import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; - -public class AtlasClassificationV2 extends AtlasClassification { - // org.codehaus.jackson.map.JsonMappingException: Conflicting getter definitions for property "propagate" - // https://stackoverflow.com/questions/20624891/stuck-on-org-codehaus-jackson-map-jsonmappingexception-conflicting-getter-defi - @Override - @JsonIgnore - public Boolean isPropagate() { - return super.getPropagate(); - } - - /** - * REST serialization friendly list. - */ - @JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) - @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) - @JsonIgnoreProperties(ignoreUnknown=true) - @XmlRootElement - @XmlAccessorType(XmlAccessType.PROPERTY) - @XmlSeeAlso(AtlasClassification.class) - public static class AtlasClassificationsV2 extends PList { - private static final long serialVersionUID = 1L; - - public AtlasClassificationsV2() { - super(); - } - - public AtlasClassificationsV2(List list) { - super(list); - } - - public AtlasClassificationsV2(List list, long startIndex, int pageSize, long totalCount, - SearchFilter.SortType sortType, String sortBy) { - super(list, startIndex, pageSize, totalCount, sortType, sortBy); - } - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClient.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClient.java deleted file mode 100644 index ce7c57dd2..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasClient.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.atlas; - -import com.sun.jersey.core.util.MultivaluedMapImpl; -import org.apache.atlas.AtlasClientV2; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.SortOrder; -import org.apache.atlas.model.instance.AtlasClassification; -import org.apache.atlas.model.instance.AtlasEntity; -import org.apache.atlas.model.lineage.AtlasLineageInfo; -import org.apache.atlas.model.typedef.AtlasTypesDef; -import org.apache.atlas.type.AtlasType; -import org.apache.commons.collections.MapUtils; - -import javax.ws.rs.HttpMethod; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class AtlasClient extends AtlasClientV2 { - private static final String PREFIX_ATTR = "attr:"; - - private static final String ENTITIES_API = BASE_URI + "entities/"; - private static final String UPDATE_ENTITY_ATTR_API = ENTITY_API + "guid/"; - private static final String SET_ENTITY_LABELS_BY_GUID_TEMPLATE = ENTITY_API + "/guid/%s/labels"; - private static final String DELETE_ENTITY_LABELS_BY_GUID_TEMPLATE = ENTITY_API + "/guid/%s/labels"; - private static final String GET_ENTITY_HEADER_BY_GUID_TEMPLATE = ENTITY_API + "/guid/{guid}/header"; - - private static final String TYPEDEF_BY_NAME = TYPES_API + "typedef/name/"; - private static final String TYPEDEFS_API = TYPES_API + "typedefs/"; - private static final String GET_CLASSIFICATION_BY_NAME_TEMPLATE = TYPES_API + "classificationdef/name/%s"; - - public AtlasClient(String[] baseUrl, String[] basicAuthUserNamePassword) { - super(baseUrl, basicAuthUserNamePassword); - } - - /** - * 获取所有的hive db实体 - */ - public String getHiveDbs() throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("type", "hive_db"); - queryParams.add("property", AtlasEntity.KEY_STATUS); - queryParams.add("value", AtlasEntity.Status.ACTIVE.name()); - return callAPI(API_V3.GET_ENTITIES, String.class, queryParams); - } - - /** - * 获取所有的hive table实体 - */ - public String getHiveTables() throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("type", "hive_table"); - queryParams.add("property", AtlasEntity.KEY_STATUS); - queryParams.add("value", AtlasEntity.Status.ACTIVE.name()); - return callAPI(API_V3.GET_ENTITIES, String.class, queryParams); - } - - /** - * 获取表实体的血缘信息 - */ - public String getLineageInfoForString(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("direction", direction.toString()); - queryParams.add("depth", String.valueOf(depth)); - - return callAPI(API_V2.LINEAGE_INFO, String.class, queryParams, guid); - } - - /** - * 获取实体信息 - */ - public String getEntityByGuidForString(String guid) throws AtlasServiceException { - return getEntityByGuidForString(guid, false, false); - } - - /** - * 获取实体信息 - */ - public String getEntityByGuidForString(String guid, boolean minExtInfo, boolean ignoreRelationships) throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - - queryParams.add("minExtInfo", String.valueOf(minExtInfo)); - queryParams.add("ignoreRelationships", String.valueOf(ignoreRelationships)); - - return callAPI(API_V2.GET_ENTITY_BY_GUID, String.class, queryParams, guid); - } - - /** - * 通过type 和 属性查一个entity - */ - public String getEntityByAttributeForString(String type, Map uniqAttributes, boolean minExtInfo, boolean ignoreRelationship) throws AtlasServiceException { - MultivaluedMap queryParams = attributesToQueryParams(uniqAttributes); - - queryParams.add("minExtInfo", String.valueOf(minExtInfo)); - queryParams.add("ignoreRelationships", String.valueOf(ignoreRelationship)); - - return callAPI(API_V2.GET_ENTITY_BY_ATTRIBUTE, String.class, queryParams, type); - } - - - public String getEntitiesByGuidsForString(List guids) throws AtlasServiceException { - return getEntitiesByGuidsForString(guids, false, false); - } - - public String getEntitiesByGuidsForString(List guids, boolean minExtInfo, boolean ignoreRelationships) throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - - queryParams.put("guid", guids); - queryParams.add("minExtInfo", String.valueOf(minExtInfo)); - queryParams.add("ignoreRelationships", String.valueOf(ignoreRelationships)); - - return callAPI(API_V2.GET_ENTITIES_BY_GUIDS, String.class, queryParams); - } - - /** - * 获取实体基本信息 - */ - public String getHeaderByIdForString(String guid) throws AtlasServiceException { - API api = new API(String.format(GET_ENTITY_HEADER_BY_GUID_TEMPLATE, guid), HttpMethod.GET, Response.Status.OK); - return callAPI(api, String.class,null); - } - - /** - * 根据关键字检索实体 - */ - public String basicSearchForString(final String typeName, final String classification, final String query, - final boolean excludeDeletedEntities, final int limit, final int offset) throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("typeName", typeName); - queryParams.add("classification", classification); - queryParams.add(QUERY, query); - queryParams.add("excludeDeletedEntities", String.valueOf(excludeDeletedEntities)); - queryParams.add(LIMIT, String.valueOf(limit)); - queryParams.add(OFFSET, String.valueOf(offset)); - queryParams.add("sortBy", "name"); - queryParams.add("sortOrder", String.valueOf(SortOrder.ASCENDING)); - - return callAPI(API_V2.BASIC_SEARCH, String.class, queryParams); - } - - /** - * 修改实体的注释 - */ - public String modifyComment(String guid,String commentStr) throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("name", "comment"); - - return callAPI(API_V3.UPDATE_ENTITY_ATTR,String.class,commentStr,queryParams,guid); - } - - /** - * 设置实体的标签 - */ - public void setLabels(String guid, Set labels) throws AtlasServiceException { - API api = new API(String.format(SET_ENTITY_LABELS_BY_GUID_TEMPLATE, guid), HttpMethod.POST, Response.Status.NO_CONTENT); - callAPI(api, (Class)null, labels); - } - - /** - * 删除实体的标签 - */ - public void removeLabels(String guid, Set labels) throws AtlasServiceException { - API api = new API(String.format(DELETE_ENTITY_LABELS_BY_GUID_TEMPLATE, guid), HttpMethod.DELETE, Response.Status.NO_CONTENT); - callAPI(api, (Class)null, labels); - } - - /** - * 获取所有的类别 - */ - public String getClassificationDefForString() throws AtlasServiceException { - MultivaluedMap queryParams = new MultivaluedMapImpl(); - queryParams.add("type", "classification"); - return callAPI(API_V2.GET_ALL_TYPE_DEFS, String.class, queryParams); - } - - /** - * 根据名称获取分类 - */ - public String getClassificationDefByNameForString(String name) throws AtlasServiceException { - API api = new API(String.format(GET_CLASSIFICATION_BY_NAME_TEMPLATE, name), HttpMethod.GET, Response.Status.OK); - return callAPI(api, String.class, null); - } - - /** - * 根据名称删除类型 - */ - public void deleteTypedefByName(String name) throws AtlasServiceException { - callAPI(API_V3.DELETE_TYPEDEF_BY_NAME, (Class)null, null, name); - } - - /** - * 创建类型 - */ - public String createAtlasTypeDefsForString(final AtlasTypesDef typesDef) throws AtlasServiceException { - return callAPI(API_V2.CREATE_ALL_TYPE_DEFS, String.class, AtlasType.toJson(typesDef)); - } - - /** - * 更新类型 - */ - public void updateAtlasTypeDefsV2(final AtlasTypesDef typesDef) throws AtlasServiceException { - callAPI(API_V2.UPDATE_ALL_TYPE_DEFS, (Class)null, AtlasType.toJson(typesDef)); - } - - /** - * 为实体添加分类 - */ - @Override - public void addClassifications(String guid, List classifications) throws AtlasServiceException { - callAPI(formatPathParameters(API_V2.ADD_CLASSIFICATIONS, guid), (Class)null, AtlasType.toJson(classifications), (String[]) null); - } - - /** - * 为实体更新分类 - */ - @Override - public void updateClassifications(String guid, List classifications) throws AtlasServiceException { - callAPI(formatPathParameters(API_V2.UPDATE_CLASSIFICATIONS, guid), (Class)null, AtlasType.toJson(classifications)); - } - - /** - * 为实体删除分类 - */ - @Override - public void deleteClassifications(String guid, List classifications) throws AtlasServiceException { - if(classifications !=null && classifications.size() > 0) { - for (AtlasClassification c : classifications) { - this.deleteClassification(guid, c.getTypeName()); - } - } - } - - /** - * 查询实体的分类 - */ - public String getClassificationsForString(String guid) throws AtlasServiceException { - return callAPI(formatPathParameters(API_V2.GET_CLASSIFICATIONS, guid), String.class, null); - } - - - - - public static class API_V3 extends API { - public static final API_V3 GET_ENTITIES = new API_V3(ENTITIES_API, HttpMethod.GET, Response.Status.OK); - public static final API_V3 UPDATE_ENTITY_ATTR = new API_V3(UPDATE_ENTITY_ATTR_API,HttpMethod.PUT,Response.Status.OK); - public static final API_V3 DELETE_TYPEDEF_BY_NAME = new API_V3(TYPEDEF_BY_NAME, HttpMethod.DELETE, Response.Status.NO_CONTENT); - - private API_V3(String path, String method, Response.Status status) { - super(path, method, status); - } - } - - - private MultivaluedMap attributesToQueryParams(Map attributes) { - return attributesToQueryParams(attributes, null); - } - - private MultivaluedMap attributesToQueryParams(Map attributes, - MultivaluedMap queryParams) { - if (queryParams == null) { - queryParams = new MultivaluedMapImpl(); - } - - if (MapUtils.isNotEmpty(attributes)) { - for (Map.Entry e : attributes.entrySet()) { - queryParams.putSingle(PREFIX_ATTR + e.getKey(), e.getValue()); - } - } - - return queryParams; - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasService.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasService.java deleted file mode 100644 index 2eef11ce3..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/atlas/AtlasService.java +++ /dev/null @@ -1,343 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.atlas; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.internal.LinkedTreeMap; -import com.webank.wedatasphere.dss.data.common.conf.AtlasConf; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.model.discovery.AtlasSearchResult; -import org.apache.atlas.model.instance.AtlasClassification; -import org.apache.atlas.model.instance.AtlasEntity; -import org.apache.atlas.model.instance.AtlasEntityHeader; -import org.apache.atlas.model.instance.AtlasRelatedObjectId; -import org.apache.atlas.model.lineage.AtlasLineageInfo; -import org.apache.atlas.model.typedef.AtlasClassificationDef; -import org.apache.atlas.model.typedef.AtlasTypesDef; -import org.apache.commons.lang.StringUtils; -import org.springframework.stereotype.Service; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@Service("atlasService") -public class AtlasService { - private AtlasClient atlasClient; - private final Gson gson; - - public AtlasService() { - String[] urls = new String[]{AtlasConf.ATLAS_REST_ADDRESS.getValue()}; - String[] basicAuthUsernamePassword = new String[]{AtlasConf.ATLAS_USERNAME.getValue(), AtlasConf.ATLAS_PASSWORD.getValue()}; - atlasClient = new AtlasClient(urls, basicAuthUsernamePassword); - - GsonBuilder builder = new GsonBuilder(); - // Register an adapter to manage the date types as long values - builder.registerTypeAdapter(Date.class, new JsonDeserializer() { - @Override - public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - return new Date(json.getAsJsonPrimitive().getAsLong()); - } - }); - - gson = builder.create(); - } - - /** - * hive db数量 - */ - public long getHiveDbCnt() throws AtlasServiceException { - String jsonStr = atlasClient.getHiveDbs(); - if (StringUtils.isNotEmpty(jsonStr)) { - JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class); - if (jsonObject != null) { - return jsonObject.get("count").getAsLong(); - } else { - return 0; - } - } else { - return 0; - } - } - - /** - * hive table数量 - */ - public long getHiveTableCnt() throws AtlasServiceException { - String jsonStr = atlasClient.getHiveTables(); - if (StringUtils.isNotEmpty(jsonStr)) { - JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class); - if (jsonObject != null) { - return jsonObject.get("count").getAsLong(); - } else { - return 0; - } - } else { - return 0; - } - } - - - /** - * 根据关键字搜索hive table - */ - public List searchHiveTable(String classification, String query, - boolean excludeDeletedEntities, int limit, int offset) throws AtlasServiceException { - String jsonStr = atlasClient.basicSearchForString("hive_table", classification, query, excludeDeletedEntities, limit, offset); - AtlasSearchResult atlasSearchResult = gson.fromJson(jsonStr, AtlasSearchResult.class); - - return atlasSearchResult.getEntities(); - } - - /** - * 获取hive table对象 - */ - public AtlasEntity getHiveTblByGuid(String guid) throws AtlasServiceException { - String jsonStr = atlasClient.getEntityByGuidForString(guid, false, false); - - AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); - - return atlasEntityWithExtInfo.getEntity(); - } - - /** - * 获取hive table对象 - */ - public AtlasEntity getHiveTblByAttribute(Map uniqAttributes, boolean minExtInfo, boolean ignoreRelationship) throws AtlasServiceException { - String jsonStr = atlasClient.getEntityByAttributeForString("hive_table", uniqAttributes, minExtInfo, ignoreRelationship); - - AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); - - return atlasEntityWithExtInfo.getEntity(); - } - - /** - * 获取hive column对象 - */ - public AtlasEntity getHiveColumn(String guid) throws AtlasServiceException { - String jsonStr = atlasClient.getEntityByGuidForString(guid, true, true); - - AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); - - return atlasEntityWithExtInfo.getEntity(); - } - - /** - * 获取多个hive column对象 - */ - public List getHiveColumnsByGuids(List guids) throws AtlasServiceException { - String jsonStr = atlasClient.getEntitiesByGuidsForString(guids, true, true); - AtlasEntity.AtlasEntitiesWithExtInfo atlasEntitiesWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntitiesWithExtInfo.class); - - return atlasEntitiesWithExtInfo.getEntities(); - } - - - /** - * 修改实体的注释 - */ - public void modifyComment(String guid, String commentStr) throws AtlasServiceException { - atlasClient.modifyComment(guid, commentStr); - } - - /** - * 设置实体的标签 - */ - public void setLabels(String guid, Set labels) throws AtlasServiceException { - atlasClient.setLabels(guid, labels); - } - - /** - * 删除实体的标签 - */ - public void removeLabels(String guid, Set labels) throws AtlasServiceException { - atlasClient.removeLabels(guid, labels); - } - - /** - * 血缘信息 - */ - public AtlasLineageInfo getLineageInfo(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws AtlasServiceException { - String jsonStr = atlasClient.getLineageInfoForString(guid, direction, depth); - - AtlasLineageInfo atlasLineageInfo = gson.fromJson(jsonStr, AtlasLineageInfo.class); - - return atlasLineageInfo; - } - - /** - * 根据guid来获取hive tbl名称: db.table - */ - public String getHiveTblNameById(String guid) throws AtlasServiceException { - String jsonStr = atlasClient.getHeaderByIdForString(guid); - AtlasEntityHeader atlasEntityHeader = gson.fromJson(jsonStr, AtlasEntityHeader.class); - - return atlasEntityHeader.getAttribute("qualifiedName").toString().split("@")[0]; - } - - /** - * 根据guid来获取hive tbl名称 和 是否分区表、是否外部表、外部表路径 - */ - public Map getHiveTblAttributesByGuid(String guid) throws AtlasServiceException { - Map result = new HashMap<>(4); - - String jsonStr = atlasClient.getEntityByGuidForString(guid, false, false); - AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); - - result.put("tblName", atlasEntityWithExtInfo.getEntity().getAttribute("qualifiedName").toString().split("@")[0]); - result.put("isPartition", ((List) atlasEntityWithExtInfo.getEntity().getAttribute("partitionKeys")).size() > 0); - result.put("tableType",atlasEntityWithExtInfo.getEntity().getAttribute("tableType")); - Map sdMap = (LinkedTreeMap)atlasEntityWithExtInfo.getEntity().getRelationshipAttribute("sd"); - if(null != sdMap) { - result.put("location",atlasEntityWithExtInfo.getReferredEntities().get(sdMap.get("guid")).getAttribute("location")); - } - return result; - } - - /** - * 获取所有的分类 - */ - public AtlasTypesDef getClassificationDef() throws AtlasServiceException { - String jsonStr = atlasClient.getClassificationDefForString(); - AtlasTypesDef atlasTypesDef = gson.fromJson(jsonStr, AtlasTypesDef.class); - - return atlasTypesDef; - } - - /** - * 根据名称获取分类 - */ - public AtlasClassificationDef getClassificationDefByName(String name) throws AtlasServiceException { - String jsonStr = atlasClient.getClassificationDefByNameForString(name); - AtlasClassificationDef atlasClassificationDef = gson.fromJson(jsonStr, AtlasClassificationDef.class); - - return atlasClassificationDef; - } - - /** - * 根据名称获取分类的一级子类型 - */ - public List getClassificationDefListByName(String name) throws AtlasServiceException { - List atlasClassificationDefList = new ArrayList(); - - AtlasClassificationDef atlasClassificationDef = this.getClassificationDefByName(name); - //atlasClassificationDefList.add(atlasClassificationDef); - - Set subTypes = atlasClassificationDef.getSubTypes(); - subTypes.forEach(item -> { - try { - atlasClassificationDefList.add(this.getClassificationDefByName(item)); - } catch (AtlasServiceException exception) { - exception.printStackTrace(); - } - - }); - - return atlasClassificationDefList; - } - - /** - * 获取所有分层的一级子类型,包括系统预置分层和用户自定义分层 - */ - public List getClassificationDefListForLayer() throws AtlasServiceException { - List atlasClassificationDefList = new ArrayList(); - // 系统预置分层的一级子分类 - atlasClassificationDefList.addAll(this.getClassificationDefListByName(AtlasConf.ATLAS_CLASSIFICATION_LAYER_SYSTEM.getValue())); - - // 用户自定义分层的一级子分类 - atlasClassificationDefList.addAll(this.getClassificationDefListByName(AtlasConf.ATLAS_CLASSIFICATION_LAYER_USER.getValue())); - - return atlasClassificationDefList; - } - - /** - * 创建新的类型定义 - */ - public AtlasTypesDef createAtlasTypeDefs(final AtlasTypesDef typesDef) throws AtlasServiceException { - String jsonStr = atlasClient.createAtlasTypeDefsForString(typesDef); - AtlasTypesDef atlasTypesDef = gson.fromJson(jsonStr, AtlasTypesDef.class); - - return atlasTypesDef; - } - - /** - * 更新的类型定义 - */ - public void updateAtlasTypeDefs(final AtlasTypesDef typesDef) throws AtlasServiceException { - atlasClient.updateAtlasTypeDefsV2(typesDef); - } - - /** - * 根据名称删除类型(几种类型:Enum-Struct-Classification-Entity-Relationship-BusinessMetadata) - */ - public void deleteTypedefByName(String name) throws AtlasServiceException { - atlasClient.deleteTypedefByName(name); - } - - /** - * 为实体添加分类 - */ - public void addClassifications(String guid, List classifications) throws AtlasServiceException { - atlasClient.addClassifications(guid, classifications); - } - - /** - * 为实体删除分类 - */ - public void deleteClassification(String guid, String classificationName) throws AtlasServiceException { - atlasClient.deleteClassification(guid, classificationName); - } - - /** - * 为实体删除分类 - */ - public void deleteClassifications(String guid, List classifications) throws AtlasServiceException { - atlasClient.deleteClassifications(guid, classifications); - } - - /** - * 为实体更新分类 - */ - public void updateClassifications(String guid, List classifications) throws AtlasServiceException { - atlasClient.updateClassifications(guid, classifications); - } - - /** - * 为实体删除已有的分类,添加新的分类 - */ - public void removeAndAddClassifications(String guid, List newClassifications) throws AtlasServiceException { - AtlasClassificationV2.AtlasClassificationsV2 oldAtlasClassifications = this.getClassifications(guid); - if (oldAtlasClassifications != null && oldAtlasClassifications.getList() != null) { - oldAtlasClassifications.getList().stream().forEach(ele -> { - try { - this.deleteClassification(guid, ele.getTypeName()); - } catch (AtlasServiceException exception) { - exception.printStackTrace(); - } - }); - } - if (newClassifications != null && newClassifications.size() > 0) { - atlasClient.addClassifications(guid, newClassifications); - } - } - - - /** - * 查询实体的分类 - */ - public AtlasClassificationV2.AtlasClassificationsV2 getClassifications(String guid) throws AtlasServiceException { - String jsonStr = atlasClient.getClassificationsForString(guid); - // org.codehaus.jackson.map.JsonMappingException: Conflicting getter definitions for property "propagate" - AtlasClassificationV2.AtlasClassificationsV2 atlasClassifications = gson.fromJson(jsonStr, AtlasClassificationV2.AtlasClassificationsV2.class); - - return atlasClassifications; - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/conf/AtlasConf.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/conf/AtlasConf.java deleted file mode 100644 index 7bfb0d0bd..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/conf/AtlasConf.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.conf; - -import org.apache.linkis.common.conf.CommonVars; - -public interface AtlasConf { - /** - * atlas server info - */ - CommonVars ATLAS_APPLICATION_PROPERTIES = CommonVars.apply("atlas-application.properties"); - CommonVars ATLAS_REST_ADDRESS = CommonVars.apply("atlas.rest.address"); - CommonVars ATLAS_USERNAME = CommonVars.apply("atlas.username"); - CommonVars ATLAS_PASSWORD = CommonVars.apply("atlas.password"); - CommonVars ATLAS_CLUSTER_NAME = CommonVars.apply("atlas.cluster.name","primary"); - - /** - * 系统初始化分类信息: 主题域、系统分层、自定义分层 - */ - CommonVars ATLAS_CLASSIFICATION_SUBJECT = CommonVars.apply("atlas.classification.subject", "subject"); - CommonVars ATLAS_CLASSIFICATION_LAYER_SYSTEM = CommonVars.apply("atlas.classification.layer_system", "layer_system"); - CommonVars ATLAS_CLASSIFICATION_LAYER_USER = CommonVars.apply("atlas.classification.layer", "layer"); - - - /** - * hive metastore db - */ - CommonVars METASTORE_DATASOURCE_DRIVER = CommonVars.apply("metastore.datasource.driver", "com.mysql.jdbc.Driver"); - CommonVars METASTORE_DATASOURCE_URL = CommonVars.apply("metastore.datasource.url"); - CommonVars METASTORE_DATASOURCE_USERNAME = CommonVars.apply("metastore.datasource.username"); - CommonVars METASTORE_DATASOURCE_PASSWORD = CommonVars.apply("metastore.datasource.password"); - - -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DAOException.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DAOException.java deleted file mode 100644 index 529edafe3..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DAOException.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.exception; - - -public class DAOException extends RuntimeException { - public DAOException(){ - super(); - } - public DAOException (String message,Throwable cause){ - super(message,cause); - } - public DAOException(String message){ - super(message); - } - public DAOException(Throwable cause){ - super(cause); - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DataGovernanceException.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DataGovernanceException.java deleted file mode 100644 index 095c18196..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/exception/DataGovernanceException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.exception; - -public class DataGovernanceException extends RuntimeException { - - public DataGovernanceException(final String message) { - super(message); - } -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DataSourceUtil.java b/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DataSourceUtil.java deleted file mode 100644 index 5794f74f9..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DataSourceUtil.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.webank.wedatasphere.dss.data.common.utils; - -import com.alibaba.druid.pool.DruidDataSource; -import com.webank.wedatasphere.dss.data.common.conf.AtlasConf; - -public class DataSourceUtil { - private static DruidDataSource druidDataSource =null; - - private DataSourceUtil(){} - - public static DruidDataSource getDataSource(){ - if(druidDataSource ==null) { - synchronized (DataSourceUtil.class){ - if(druidDataSource ==null){ - druidDataSource = new DruidDataSource(); - druidDataSource.setDriverClassName(AtlasConf.METASTORE_DATASOURCE_DRIVER.getValue()); - druidDataSource.setUrl(AtlasConf.METASTORE_DATASOURCE_URL.getValue()); - druidDataSource.setUsername(AtlasConf.METASTORE_DATASOURCE_USERNAME.getValue()); - druidDataSource.setPassword(AtlasConf.METASTORE_DATASOURCE_PASSWORD.getValue()); - } - } - } - return druidDataSource; - } - -} diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/assembly/distribution.xml b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/assembly/distribution.xml deleted file mode 100644 index 486f36321..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/assembly/distribution.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - dss-data-governance-server - - dir - - true - dss-data-governance-server - - - - - - lib - true - true - false - true - true - - - - - - - diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/atlas-application.properties b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/atlas-application.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss-data-governance-server.properties b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss-data-governance-server.properties deleted file mode 100644 index b3980c6cc..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss-data-governance-server.properties +++ /dev/null @@ -1,53 +0,0 @@ -# -# /* -# * Copyright 2019 WeBank -# * -# * Licensed under the Apache License, Version 2.0 (the "License"); -# * you may not use this file except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.apache.org/licenses/LICENSE-2.0 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# */ -# - -# Spring configurations -spring.server.port=9209 -spring.spring.application.name=dss-data-governance-server - -wds.linkis.log.clear=true - -wds.linkis.server.version=v1 - -##restful -wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.data.asset.restful,com.webank.wedatasphere.dss.data.classification.restful - -##mybatis -wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/data/asset/dao/impl/*.xml -wds.linkis.server.mybatis.typeAliasesPackage=com.webank.wedatasphere.dss.data.asset.entity -wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.data.asset.dao,com.webank.wedatasphere.dss.data.warehouse.dao,com.webank.wedatasphere.dss.data.warehouse.mapper - -#wds.linkis.gateway.ip=127.0.0.1 -#wds.linkis.gateway.port=9001 -#wds.linkis.gateway.url=http://127.0.0.1:9001/ - - -# atlas config -atlas.rest.address=http://xxxxxxx:21000 -atlas.username=xxxxxxxx -atlas.password=yyyyyyyyy -atlas.client.readTimeoutMSecs=60000 -atlas.client.connectTimeoutMSecs=60000 - -atlas.cluster.name=primary - -# hive metadata config -metastore.datasource.driver=com.mysql.jdbc.Driver -metastore.datasource.url=jdbc:mysql://xxxxxx:yyyy/metastore?characterEncoding=UTF-8 -metastore.datasource.username=xxxxxx -metastore.datasource.password=yyyyyy \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss.properties b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss.properties deleted file mode 100644 index 41a8e2820..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/dss.properties +++ /dev/null @@ -1,25 +0,0 @@ -# -# /* -# * Copyright 2019 WeBank -# * -# * Licensed under the Apache License, Version 2.0 (the "License"); -# * you may not use this file except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.apache.org/licenses/LICENSE-2.0 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# */ -# - -wds.linkis.gateway.ip=127.0.0.1 -wds.linkis.gateway.port=9001 -wds.linkis.gateway.url=http://127.0.0.1:9001/ - -wds.linkis.server.mybatis.datasource.url=jdbc:mysql://xxxxxxx:3306/dss_test?characterEncoding=UTF-8 -wds.linkis.server.mybatis.datasource.username=xxxxx -wds.linkis.server.mybatis.datasource.password=xxxxxx diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j2.xml b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j2.xml deleted file mode 100644 index c00e1eaa7..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j2.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/token.properties b/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/token.properties deleted file mode 100644 index a52a8983d..000000000 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/token.properties +++ /dev/null @@ -1,19 +0,0 @@ -# -# /* -# * Copyright 2019 WeBank -# * -# * Licensed under the Apache License, Version 2.0 (the "License"); -# * you may not use this file except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.apache.org/licenses/LICENSE-2.0 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# */ -# - -${userName}=${password} \ No newline at end of file diff --git a/dss-apps/dss-data-governance/pom.xml b/dss-apps/dss-data-governance/pom.xml deleted file mode 100644 index 8c57ef564..000000000 --- a/dss-apps/dss-data-governance/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - dss - com.webank.wedatasphere.dss - 1.1.0 - ../../pom.xml - - 4.0.0 - - dss-data-governance - pom - - dss-data-governance-server - dss-data-governance-common - dss-data-classification-server - dss-data-asset-server - - - \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/pom.xml b/dss-apps/dss-dataasset-management/dss-data-assets-client/pom.xml new file mode 100644 index 000000000..94373b765 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/pom.xml @@ -0,0 +1,59 @@ + + + + dss-dataasset-management + com.webank.wedatasphere.dss + 1.1.0 + + 4.0.0 + + dss-data-assets-client + + + 8 + 8 + 1.1.2 + + + + + org.apache.linkis + linkis-gateway-httpclient-support + ${linkis.version} + + + org.projectlombok + lombok + 1.18.16 + compile + + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + + src/main/resources + + + ${project.artifactId}-${project.version} + + + \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java new file mode 100644 index 000000000..7ac811dde --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java @@ -0,0 +1,77 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import org.apache.commons.lang3.StringUtils; + +import java.util.Optional; + +public enum ClassificationConstant { + /** + * 指标 + */ + INDICATOR(1, "indicator"), + /** + * 度量 + */ + MEASURE(2,"measure"), + /** + * 维度 + */ + DIMENSION(0, "dimension"), + /** + * 主题 + */ + THEME(3, "theme"), + /** + * 分层 + */ + LAYER(4, "layer"); + + private int type; + + public static final String SEPARATOR = "_"; + + private String typeCode; + + ClassificationConstant(int type, String typeCode) { + this.type = type; + + this.typeCode = typeCode; + } + + public static boolean isTypeScope(int type) { + return type >= 0 && type < values().length; + } + + public static boolean isTypeScope(String type) { + return getClassificationConstantByTypeCode(type).isPresent(); + } + + public static Optional getClassificationConstantByTypeCode(String typeCode) { + for (ClassificationConstant c : values()) { + if (StringUtils.equals(c.typeCode,typeCode)) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + public static Optional getClassificationConstantByType(int type) { + for (ClassificationConstant c : values()) { + if (c.type == type) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + + + public int getType() { + return type; + } + + public String getTypeCode() { + return typeCode; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java new file mode 100644 index 000000000..9bf1a6139 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +@Data +public class CreateLabelInfo { + private String name; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java new file mode 100644 index 000000000..cf1fa62bb --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class CreateModelTypeInfo { + private String name; + + private String guid; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveSimpleInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveSimpleInfo.java new file mode 100644 index 000000000..2aeaedfbb --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveSimpleInfo.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +@Data +public class HiveSimpleInfo implements Serializable { + private String guid; + private String name; + private String qualifiedName; + private String createTime; + private String owner; + private String aliases; + private String lastAccessTime; + private String comment; + private List classifications; + private String totalSize; + private String external; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblStatsDTO.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblStatsDTO.java new file mode 100644 index 000000000..82f916c2e --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblStatsDTO.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class HiveTblStatsDTO { + + private Integer columnCount = 0; + + private Long totalSize = 0L; + + private Integer numFiles = 0; + + private Integer partitionCount = 0; + + private Integer accessCount = 0; +} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HivePartInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java similarity index 61% rename from dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HivePartInfo.java rename to dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java index 79ee1dafc..1a5d85685 100644 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HivePartInfo.java +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java @@ -1,13 +1,14 @@ -package com.webank.wedatasphere.dss.data.asset.entity; +package com.webank.wedatasphere.dss.data.governance.entity; import lombok.Data; + @Data -public class HivePartInfo { +public class PartInfo { private String partName; private int reordCnt; private int store; private String createTime; private String lastAccessTime; - + private int fileCount; } \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java new file mode 100644 index 000000000..f54a0e6cd --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +public enum QueryType { + PRECISE(1), + FUZZY(0); + private int code; + + QueryType(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/SearchLabelInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/SearchLabelInfo.java new file mode 100644 index 000000000..c33b928d1 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/SearchLabelInfo.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +@Data +public class SearchLabelInfo { + private String name; + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java new file mode 100644 index 000000000..c04b5c79c --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +@Data +public class UpdateLabelInfo { + private String name; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java new file mode 100644 index 000000000..33cee5d07 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class UpdateModelTypeInfo { + private String name; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/AbstractRemoteClient.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/AbstractRemoteClient.scala new file mode 100644 index 000000000..87b84d4a2 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/AbstractRemoteClient.scala @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.data.governance + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result + +abstract class AbstractRemoteClient extends RemoteClient { + protected val dwsHttpClient:DWSHttpClient + + override def execute(action: Action): Result = action match { + case action: Action => dwsHttpClient.execute(action) + } + + override def close(): Unit = dwsHttpClient.close() +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsRemoteClient.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsRemoteClient.scala new file mode 100644 index 000000000..17144448b --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsRemoteClient.scala @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.dss.data.governance + + +import com.webank.wedatasphere.dss.data.governance.request._ +import com.webank.wedatasphere.dss.data.governance.response._ + + +trait DataAssetsRemoteClient extends RemoteClient { + def searchHiveTbl(action: SearchHiveTblAction): SearchHiveTblResult + + def searchHiveDb(action: SearchHiveDbAction): SearchHiveDbResult + + def getHiveTblPartition(action: GetHiveTblPartitionAction): GetHiveTblPartitionResult + + def getHiveTblBasic(action: GetHiveTblBasicAction): GetHiveTblBasicResult + + def getHiveTblCreate(action: GetHiveTblCreateAction): GetHiveTblCreateResult + + def createModelType(action: CreateModelTypeAction): CreateModelTypeResult + + def bindModelType(action: BindModelTypeAction): BindModelTypeResult + + def updateModelType(action: UpdateModelTypeAction): UpdateModelTypeResult + + def unBindModelType(action: UnBindModelTypeAction): UnBindModelTypeResult + + def createLabel(action: CreateLabelAction): CreateLabelResult + + def updateLabel(action: UpdateLabelAction): UpdateLabelResult + + def deleteLabel(action: DeleteLabelAction): DeleteLabelResult + + def bindLabel(action: BindLabelAction): BindLabelResult + + def unBindLabel(action: UnBindLabelAction): UnBindLabelResult + + def searchLabel(action: SearchLabelAction): SearchLabelResult + + def deleteModelType(action: DeleteModelTypeAction): DeleteModelTypeResult + + def searchHiveTblSize(action: HiveTblSizeAction): HiveTblSizeResult + + def searchHiveTblStats(action: HiveTblStatsAction): HiveTblStatsResult + + def getHiveTblPartInfoByNameResult(action: GetTblPartInfoByNameAction): GetHiveTblPartInfoByNameResult + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/RemoteClient.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/RemoteClient.scala new file mode 100644 index 000000000..9d1e5028d --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/RemoteClient.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance + +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result +import java.io.Closeable + +trait RemoteClient extends Closeable{ + protected def execute(action: Action): Result + + override def close(): Unit +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/exception/DataAssetsClientBuilderException.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/exception/DataAssetsClientBuilderException.scala new file mode 100644 index 000000000..5c9b20585 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/exception/DataAssetsClientBuilderException.scala @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.data.governance.exception + +import org.apache.linkis.common.exception.ErrorException + +class DataAssetsClientBuilderException (errorDesc: String) extends ErrorException(23000, errorDesc) diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/impl/LinkisDataAssetsRemoteClient.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/impl/LinkisDataAssetsRemoteClient.scala new file mode 100644 index 000000000..136216f2c --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/impl/LinkisDataAssetsRemoteClient.scala @@ -0,0 +1,51 @@ +package com.webank.wedatasphere.dss.data.governance.impl + + +import com.webank.wedatasphere.dss.data.governance.request._ +import com.webank.wedatasphere.dss.data.governance.response._ +import com.webank.wedatasphere.dss.data.governance.{AbstractRemoteClient, DataAssetsRemoteClient} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.config.DWSClientConfig + +class LinkisDataAssetsRemoteClient(clientConfig: DWSClientConfig) extends AbstractRemoteClient with DataAssetsRemoteClient { + override protected val dwsHttpClient: DWSHttpClient = new DWSHttpClient(clientConfig, "DataAssets-Client") + + override def searchHiveTbl(action: SearchHiveTblAction): SearchHiveTblResult = execute(action).asInstanceOf[SearchHiveTblResult] + + override def getHiveTblPartition(action: GetHiveTblPartitionAction): GetHiveTblPartitionResult = execute(action).asInstanceOf[GetHiveTblPartitionResult] + + override def getHiveTblBasic(action: GetHiveTblBasicAction): GetHiveTblBasicResult = execute(action).asInstanceOf[GetHiveTblBasicResult] + + override def getHiveTblCreate(action: GetHiveTblCreateAction): GetHiveTblCreateResult = execute(action).asInstanceOf[GetHiveTblCreateResult] + + override def searchHiveDb(action: SearchHiveDbAction): SearchHiveDbResult = execute(action).asInstanceOf[SearchHiveDbResult] + + override def createModelType(action: CreateModelTypeAction): CreateModelTypeResult = execute(action).asInstanceOf[CreateModelTypeResult] + + override def bindModelType(action: BindModelTypeAction): BindModelTypeResult = execute(action).asInstanceOf[BindModelTypeResult] + + override def updateModelType(action: UpdateModelTypeAction): UpdateModelTypeResult = execute(action).asInstanceOf[UpdateModelTypeResult] + + override def unBindModelType(action: UnBindModelTypeAction): UnBindModelTypeResult = execute(action).asInstanceOf[UnBindModelTypeResult] + + override def deleteModelType(action: DeleteModelTypeAction): DeleteModelTypeResult = execute(action).asInstanceOf[DeleteModelTypeResult] + + override def searchHiveTblSize(action: HiveTblSizeAction): HiveTblSizeResult = execute(action).asInstanceOf[HiveTblSizeResult] + + override def searchHiveTblStats(action: HiveTblStatsAction): HiveTblStatsResult = execute(action).asInstanceOf[HiveTblStatsResult] + + override def createLabel(action: CreateLabelAction): CreateLabelResult = execute(action).asInstanceOf[CreateLabelResult] + + override def updateLabel(action: UpdateLabelAction): UpdateLabelResult = execute(action).asInstanceOf[UpdateLabelResult] + + override def deleteLabel(action: DeleteLabelAction): DeleteLabelResult = execute(action).asInstanceOf[DeleteLabelResult] + + override def bindLabel(action: BindLabelAction): BindLabelResult = execute(action).asInstanceOf[BindLabelResult] + + override def unBindLabel(action: UnBindLabelAction): UnBindLabelResult = execute(action).asInstanceOf[UnBindLabelResult] + + override def searchLabel(action: SearchLabelAction): SearchLabelResult = execute(action).asInstanceOf[SearchLabelResult] + + override def getHiveTblPartInfoByNameResult(action: GetTblPartInfoByNameAction): GetHiveTblPartInfoByNameResult = execute(action).asInstanceOf[GetHiveTblPartInfoByNameResult] + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindLabelAction.scala new file mode 100644 index 000000000..c163338f7 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindLabelAction.scala @@ -0,0 +1,77 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class BindLabelAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels", "bind") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} + +object BindLabelAction { + def builder(): Builder = new Builder + + class Builder private[BindLabelAction] { + private var user: String = _ + + private var label: String = _ + + private var labelGuid: String = _ + + private var tableName: String = _ + + private var tableGuid: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName; + this + } + + def setLabel(label : String) :Builder={ + this.label = label + this + } + + def setTableGuid(tableGuid : String) : Builder = { + this.tableGuid = tableGuid + this + } + + def setLabelGuid(labelGuid : String) : Builder = { + this.labelGuid = labelGuid + this + } + + def build(): BindLabelAction = { + var action = new BindLabelAction; + if ((tableName == null || label == null) && (labelGuid == null || tableGuid == null)) + throw new DataAssetsClientBuilderException("tableName and label ,or tableGuid and labelGuid are needed!") + + action.setUser(user) + action.addRequestPayload("label", label) + action.addRequestPayload("tableName", tableName) + action.addRequestPayload("tableGuid", tableGuid) + action.addRequestPayload("labelGuid", labelGuid) + action + } + } +} + + + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindModelTypeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindModelTypeAction.scala new file mode 100644 index 000000000..f99cab178 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/BindModelTypeAction.scala @@ -0,0 +1,84 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class BindModelTypeAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + private var modelName: String = _ + + private var modelType: String = _ + + private var tableName: String = _ + + private var guid: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "model", "bind") +} + +object BindModelTypeAction { + def builder(): Builder = new Builder + + class Builder private[BindModelTypeAction] { + private var user: String = _ + + private var modelName: String = _ + + private var modelType: ClassificationConstant = _ + + private var tableName: String = _ + + private var guid: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setModelName(modelName: String): Builder = { + this.modelName = modelName; + this + } + + def setModelType(modelType: ClassificationConstant): Builder = { + this.modelType = modelType; + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName; + this + } + + def setGuid(guid: String): Builder = { + this.guid = guid; + this + } + + def build(): BindModelTypeAction = { + var action = new BindModelTypeAction; + if (tableName == null && guid == null) throw new DataAssetsClientBuilderException("tableName or guid is needed!") + if (modelType == null || modelName == null) throw new DataAssetsClientBuilderException("modelType and modelName is needed!") + action.setUser(user) + action.guid = guid + action.modelName = modelName + action.modelType = modelType.getTypeCode + action.tableName = tableName + action.addRequestPayload("guid", action.guid) + action.addRequestPayload("modelName", action.modelName) + action.addRequestPayload("modelType", action.modelType) + action.addRequestPayload("tableName", action.tableName) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateLabelAction.scala new file mode 100644 index 000000000..5c1066662 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateLabelAction.scala @@ -0,0 +1,50 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class CreateLabelAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} + +object CreateLabelAction { + def builder(): Builder = new Builder + + class Builder private[CreateLabelAction]() { + private var user: String = _ + private var name: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setName(name: String): Builder = { + this.name = name + this + } + + + def build(): CreateLabelAction = { + val action = new CreateLabelAction + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + action.setUser(user) + action.addRequestPayload("name", this.name) + action + + } + } +} + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateModelTypeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateModelTypeAction.scala new file mode 100644 index 000000000..4ac84dedd --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/CreateModelTypeAction.scala @@ -0,0 +1,61 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class CreateModelTypeAction extends POSTAction with DataAssetsAction { + + private var name:String= _ + + private var `type`:String= _ + + private var user:String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "model","type") +} + +object CreateModelTypeAction{ + def builder(): Builder = new Builder + + class Builder private[CreateModelTypeAction]() { + private var user: String = _ + private var name:String= _ + private var `type`:ClassificationConstant= _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setName(name:String):Builder = { + this.name = name + this + } + + def setType(`type`:ClassificationConstant):Builder = { + this.`type` = `type`; + this; + } + + def build(): CreateModelTypeAction = { + val action = new CreateModelTypeAction + if(`type` == null) throw new DataAssetsClientBuilderException("type is needed!") + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + action.name = name + action.`type` = `type`.getTypeCode + action.setUser(user) + action.addRequestPayload("name",action.name) + action.addRequestPayload("type",action.`type`) + action + + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DataAssetsAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DataAssetsAction.scala new file mode 100644 index 000000000..2f4a5a90b --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DataAssetsAction.scala @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import org.apache.linkis.httpclient.dws.request.DWSHttpAction + +trait DataAssetsAction extends DWSHttpAction with org.apache.linkis.httpclient.request.UserAction diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteLabelAction.scala new file mode 100644 index 000000000..d70c551e1 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteLabelAction.scala @@ -0,0 +1,49 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class DeleteLabelAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels","delete") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} +object DeleteLabelAction { + def builder(): Builder = new Builder + + class Builder private[DeleteLabelAction]() { + private var user: String = _ + private var name: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setName(name: String): Builder = { + this.name = name + this + } + + + def build(): DeleteLabelAction = { + val action = new DeleteLabelAction + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + action.setUser(user) + action.addRequestPayload("name", this.name) + action + } + } +} + + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteModelTypeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteModelTypeAction.scala new file mode 100644 index 000000000..4d4254385 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/DeleteModelTypeAction.scala @@ -0,0 +1,62 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class DeleteModelTypeAction extends POSTAction with DataAssetsAction{ + + + private var name:String= _ + + private var `type`:String= _ + + private var user:String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "model","type","delete") +} + +object DeleteModelTypeAction{ + def builder(): Builder = new Builder + + class Builder private[DeleteModelTypeAction]() { + private var user: String = _ + private var name:String= _ + private var `type`:ClassificationConstant= _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setName(name:String):Builder = { + this.name = name + this + } + + def setType(`type`:ClassificationConstant):Builder = { + this.`type` = `type`; + this; + } + + def build(): DeleteModelTypeAction = { + val action = new DeleteModelTypeAction + if(`type` == null) throw new DataAssetsClientBuilderException("type is needed!") + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + action.name = name + action.`type` = `type`.getTypeCode + action.setUser(user) + action.addRequestPayload("name",action.name) + action.addRequestPayload("type",action.`type`) + action + + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblBasicAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblBasicAction.scala new file mode 100644 index 000000000..994cf0981 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblBasicAction.scala @@ -0,0 +1,42 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class GetHiveTblBasicAction extends GetAction with DataAssetsAction{ + + private var guid:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl",guid,"basic") +} +object GetHiveTblBasicAction{ + def builder(): Builder = new Builder + + class Builder private[GetHiveTblBasicAction]() { + private var guid:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + def setGuid(guid:String): Builder = { + this.guid = guid + this + } + + def build(): GetHiveTblBasicAction = { + val action = new GetHiveTblBasicAction + if(guid == null) throw new DataAssetsClientBuilderException("guid is needed!") + action.guid = guid + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblCreateAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblCreateAction.scala new file mode 100644 index 000000000..b3003e13f --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblCreateAction.scala @@ -0,0 +1,41 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class GetHiveTblCreateAction extends GetAction with DataAssetsAction{ + private var guid:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl",guid,"create") +} +object GetHiveTblCreateAction{ + def builder(): Builder = new Builder + class Builder private[GetHiveTblCreateAction]() { + private var guid:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setGuid(guid:String): Builder = { + this.guid = guid + this + } + + def build(): GetHiveTblCreateAction = { + val action = new GetHiveTblCreateAction + if(guid == null) throw new DataAssetsClientBuilderException("guid is needed!") + action.guid = guid + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblPartitionAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblPartitionAction.scala new file mode 100644 index 000000000..9517512e8 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetHiveTblPartitionAction.scala @@ -0,0 +1,43 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class GetHiveTblPartitionAction extends GetAction with DataAssetsAction{ + + private var guid:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl",guid,"partition") +} +object GetHiveTblPartitionAction{ + def builder(): Builder = new Builder + + class Builder private[GetHiveTblPartitionAction]() { + private var guid:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setGuid(guid:String): Builder = { + this.guid = guid + this + } + + def build(): GetHiveTblPartitionAction = { + val action = new GetHiveTblPartitionAction + if(guid == null) throw new DataAssetsClientBuilderException("guid is needed!") + action.guid = guid + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetTblPartInfoByNameAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetTblPartInfoByNameAction.scala new file mode 100644 index 000000000..b29b8b316 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/GetTblPartInfoByNameAction.scala @@ -0,0 +1,53 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class GetTblPartInfoByNameAction extends GetAction with DataAssetsAction { + + + private var user: String = _ + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl", "partition", "name") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user +} + +object GetTblPartInfoByNameAction { + def builder(): Builder = new Builder + + class Builder private[GetTblPartInfoByNameAction]() { + private var user: String = _ + private var dbName: String = _ + private var tableName: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setDbName(dbName: String): Builder = { + this.dbName = dbName + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName + this + } + + + def build(): GetTblPartInfoByNameAction = { + val action = new GetTblPartInfoByNameAction + if (tableName == null || dbName == null) + throw new DataAssetsClientBuilderException("tableName or dbName can not be null") + + action.setParameter("tableName", tableName) + action.setParameter("dbName", dbName) + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblSizeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblSizeAction.scala new file mode 100644 index 000000000..e8b0fb9ef --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblSizeAction.scala @@ -0,0 +1,62 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class HiveTblSizeAction extends GetAction with DataAssetsAction { + + + private var user: String = _ + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl", "size") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user +} + +object HiveTblSizeAction { + def builder(): Builder = new Builder + + class Builder private[HiveTblSizeAction]() { + private var guid: String = _ + private var user: String = _ + private var dbName: String = _ + private var tableName: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setDbName(dbName: String): Builder = { + this.dbName = dbName + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName + this + } + + def setGuid(guid: String): Builder = { + this.guid = guid + this + } + + def build(): HiveTblSizeAction = { + val action = new HiveTblSizeAction + if (guid == null && (tableName == null || dbName == null)) + throw new DataAssetsClientBuilderException("That tableName or dbName being null and guid being null could not happen in the same time!") + if (guid != null) { + action.setParameter("guid", guid) + } + if (tableName != null && dbName != null) { + action.setParameter("tableName", tableName) + action.setParameter("dbName", dbName) + } + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblStatsAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblStatsAction.scala new file mode 100644 index 000000000..cedbdc847 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/HiveTblStatsAction.scala @@ -0,0 +1,68 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class HiveTblStatsAction extends GetAction with DataAssetsAction { + + private var dbName: String = _ + + private var tableName: String = _ + + private var guid: String = _ + + private var user: String = _ + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl", "stats") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user +} + +object HiveTblStatsAction { + def builder(): Builder = new Builder + + class Builder private[HiveTblStatsAction]() { + private var guid: String = _ + private var user: String = _ + private var dbName: String = _ + private var tableName: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setDbName(dbName: String): Builder = { + this.dbName = dbName + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName + this + } + + def setGuid(guid: String): Builder = { + this.guid = guid + this + } + + def build(): HiveTblStatsAction = { + val action = new HiveTblStatsAction + if (guid == null && (tableName == null || dbName == null)) + throw new DataAssetsClientBuilderException("That tableName or dbName being null and guid being null could not happen in the same time!") + if (guid != null) { + action.setParameter("guid", guid) + } + if (tableName != null && dbName != null) { + action.setParameter("tableName", tableName) + action.setParameter("dbName", dbName) + } + action.setUser(user) + action + } + } +} + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveDbAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveDbAction.scala new file mode 100644 index 000000000..b3e57864f --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveDbAction.scala @@ -0,0 +1,72 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import org.apache.linkis.httpclient.request.GetAction + +class SearchHiveDbAction extends GetAction with DataAssetsAction{ + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveDb","search") + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} +object SearchHiveDbAction{ + def builder(): Builder = new Builder + + class Builder private[SearchHiveDbAction]() { + private var classification:String=_ + private var query:String=_ + private var owner:String=_ + private var limit:Int=10 + private var offset:Int=0 + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setClassification(classification:String): Builder ={ + this.classification = classification + this + } + + def setQuery(query:String): Builder ={ + this.query = query + this + } + + def setOwner(owner:String):Builder={ + this.owner=owner + this + } + + def setLimit(limit:Int):Builder={ + this.limit=limit + this + } + + def setOffset(offset:Int):Builder={ + this.offset=offset + this + } + + def build(): SearchHiveDbAction = { + val action = new SearchHiveDbAction + + if(classification != null) action.setParameter("classification",classification) + if(query!=null) action.setParameter("query",query) + if(owner == null) action.setParameter("owner","") + else action.setParameter("owner",owner) + + action.setParameter("limit",limit) + action.setParameter("offset",offset) + + action.setUser(user) + action + } + } +} + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveTblAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveTblAction.scala new file mode 100644 index 000000000..1a96c1d44 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchHiveTblAction.scala @@ -0,0 +1,79 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.QueryType +import org.apache.linkis.httpclient.request.GetAction + +class SearchHiveTblAction extends GetAction with DataAssetsAction{ + override def suffixURLs: Array[String] = Array("data-assets", "asset", "hiveTbl","search") + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} +object SearchHiveTblAction{ + def builder(): Builder = new Builder + + class Builder private[SearchHiveTblAction]() { + private var classification:String=_ + private var query:String=_ + private var owner:String=_ + private var limit:Int=10 + private var offset:Int=0 + private var precise: QueryType = QueryType.FUZZY + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setClassification(classification:String): Builder ={ + this.classification = classification + this + } + + def setQuery(query:String): Builder ={ + this.query = query + this + } + + def setOwner(owner:String):Builder={ + this.owner=owner + this + } + + def setPrecise(precise : QueryType):Builder={ + this.precise = precise + this + } + + def setLimit(limit:Int):Builder={ + this.limit=limit + this + } + + def setOffset(offset:Int):Builder={ + this.offset=offset + this + } + + def build(): SearchHiveTblAction = { + val action = new SearchHiveTblAction + + if(classification != null) action.setParameter("classification",classification) + if(query!=null) action.setParameter("query",query) + if(owner == null) action.setParameter("owner","") + else action.setParameter("owner",owner) + + action.setParameter("limit",limit) + action.setParameter("offset",offset) + action.setParameter("precise",precise.getCode) + + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchLabelAction.scala new file mode 100644 index 000000000..031dc1ce3 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/SearchLabelAction.scala @@ -0,0 +1,59 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import org.apache.linkis.httpclient.request.GetAction + +class SearchLabelAction extends GetAction with DataAssetsAction{ + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels","search") + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} +object SearchLabelAction{ + def builder(): Builder = new Builder + + class Builder private[SearchLabelAction]() { + + private var query:String=_ + + private var limit:Int=10 + private var offset:Int=0 + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + + + def setQuery(query:String): Builder ={ + this.query = query + this + } + + + + def setLimit(limit:Int):Builder={ + this.limit=limit + this + } + + def setOffset(offset:Int):Builder={ + this.offset=offset + this + } + + def build(): SearchLabelAction = { + val action = new SearchLabelAction + if(query!=null) action.setParameter("query",query) + action.setParameter("limit",limit) + action.setParameter("offset",offset) + action.setUser(user) + action + } + } +} + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindLabelAction.scala new file mode 100644 index 000000000..1118c4bba --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindLabelAction.scala @@ -0,0 +1,86 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class UnBindLabelAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels", "unbind") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} + +object UnBindLabelAction { + def builder(): Builder = new Builder + + class Builder private[UnBindLabelAction] { + private var user: String = _ + + private var label: String = _ + + private var labelGuid: String = _ + + private var tableName: String = _ + + private var tableGuid: String = _ + + private var relationGuid: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName; + this + } + + def setLabel(label : String) :Builder={ + this.label = label + this + } + + def setTableGuid(tableGuid : String) : Builder = { + this.tableGuid = tableGuid + this + } + + def setLabelGuid(labelGuid : String) : Builder = { + this.labelGuid = labelGuid + this + } + + def setRelationGuid(relationGuid : String) : Builder = { + this.relationGuid = relationGuid + this + } + + def build(): UnBindLabelAction = { + var action = new UnBindLabelAction; + if ((tableName == null || label == null) && (labelGuid == null || tableGuid == null || relationGuid == null)) throw new DataAssetsClientBuilderException("tableName and label ,or tableGuid and labelGuid and relationGuid are needed!") + + action.setUser(user) + action.addRequestPayload("label", label) + action.addRequestPayload("tableName", tableName) + action.addRequestPayload("tableGuid", tableGuid) + action.addRequestPayload("labelGuid", labelGuid) + action.addRequestPayload("relationGuid", relationGuid) + action + } + } +} + + + + + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindModelTypeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindModelTypeAction.scala new file mode 100644 index 000000000..ab123b4c7 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UnBindModelTypeAction.scala @@ -0,0 +1,87 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class UnBindModelTypeAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + private var modelName: String = _ + + private var modelType: String = _ + + private var tableName: String = _ + + private var guid: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "model", "unbind") +} + +object UnBindModelTypeAction { + + def builder() = new Builder + + class Builder private[UnBindModelTypeAction] { + private var user: String = _ + + private var modelName: String = _ + + private var modelType: ClassificationConstant = _ + + private var tableName: String = _ + + private var guid: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setModelName(modelName: String): Builder = { + this.modelName = modelName; + this + } + + def setModelType(modelType: ClassificationConstant): Builder = { + this.modelType = modelType; + this + } + + def setTableName(tableName: String): Builder = { + this.tableName = tableName; + this + } + + def setGuid(guid: String): Builder = { + this.guid = guid; + this + } + + def build(): UnBindModelTypeAction = { + var action = new UnBindModelTypeAction; + if (tableName == null && guid == null) throw new DataAssetsClientBuilderException("tableName or guid is needed!") + if (modelType == null || modelName == null) throw new DataAssetsClientBuilderException("modelType and modelName is needed!") + action.setUser(user) + action.guid = guid + action.modelName = modelName + action.modelType = modelType.getTypeCode + action.tableName = tableName + action.addRequestPayload("guid", action.guid) + action.addRequestPayload("modelName", action.modelName) + action.addRequestPayload("modelType", action.modelType) + action.addRequestPayload("tableName", action.tableName) + action + } + } +} + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateLabelAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateLabelAction.scala new file mode 100644 index 000000000..e40e246ec --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateLabelAction.scala @@ -0,0 +1,57 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class UpdateLabelAction extends POSTAction with DataAssetsAction { + + private var user: String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "labels","modify") + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + +} +object UpdateLabelAction { + def builder(): Builder = new Builder + + class Builder private[UpdateLabelAction]() { + private var user: String = _ + private var name: String = _ + private var orgName: String = _ + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setName(name: String): Builder = { + this.name = name + this + } + + def setOrgName(orgName: String) : Builder = { + this.orgName = orgName + this + } + + def build(): UpdateLabelAction = { + val action = new UpdateLabelAction + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + if (orgName == null) throw new DataAssetsClientBuilderException("orgName is needed!") + action.setUser(user) + action.addRequestPayload("name", this.name) + action.addRequestPayload("orgName", this.orgName) + action + + } + } +} + + + diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateModelTypeAction.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateModelTypeAction.scala new file mode 100644 index 000000000..66819ad6d --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/request/UpdateModelTypeAction.scala @@ -0,0 +1,72 @@ +package com.webank.wedatasphere.dss.data.governance.request + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant +import com.webank.wedatasphere.dss.data.governance.exception.DataAssetsClientBuilderException +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.POSTAction + +class UpdateModelTypeAction extends POSTAction with DataAssetsAction{ + + + private var name:String= _ + + private var `type`:String= _ + + private var user:String = _ + + private var orgName:String = _ + + override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads) + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = user + + override def suffixURLs: Array[String] = Array("data-assets", "asset", "model","type","modify") +} + +object UpdateModelTypeAction{ + def builder(): Builder = new Builder + + class Builder private[UpdateModelTypeAction]() { + private var user: String = _ + private var name:String= _ + private var `type`:ClassificationConstant= _ + private var orgName:String = _ + def setUser(user: String): Builder ={ + this.user = user + this + } + + def setName(name:String):Builder = { + this.name = name + this + } + + def setOrgName(orgName:String):Builder = { + this.orgName = orgName + this + } + + def setType(`type`:ClassificationConstant):Builder = { + this.`type` = `type`; + this; + } + + def build(): UpdateModelTypeAction = { + val action = new UpdateModelTypeAction + if(`type` == null) throw new DataAssetsClientBuilderException("type is needed!") + if (name == null) throw new DataAssetsClientBuilderException("name is needed!") + if (orgName == null) throw new DataAssetsClientBuilderException("orgName is needed!") + action.name = name + action.`type` = `type`.getTypeCode + action.orgName = orgName + action.setUser(user) + action.addRequestPayload("name",action.name) + action.addRequestPayload("type",action.`type`) + action.addRequestPayload("orgName",action.orgName) + action + } + } + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindLabelResult.scala new file mode 100644 index 000000000..750148ceb --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindLabelResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels/bind") +class BindLabelResult extends DWSResult{ + @BeanProperty var result: Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindModelTypeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindModelTypeResult.scala new file mode 100644 index 000000000..c933afaf1 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/BindModelTypeResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/model/bind") +class BindModelTypeResult extends DWSResult{ + @BeanProperty var result: Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateLabelResult.scala new file mode 100644 index 000000000..0184edda5 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateLabelResult.scala @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.CreateLabelInfo +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels") +class CreateLabelResult extends DWSResult{ + @BeanProperty var result: java.util.Map[String, Any] = _ + + + def getInfo : CreateLabelInfo ={ + val str = DWSHttpClient.jacksonJson.writeValueAsString(result) + DWSHttpClient.jacksonJson.readValue(str, classOf[CreateLabelInfo]) + } +} \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateModelTypeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateModelTypeResult.scala new file mode 100644 index 000000000..b7de74ce4 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/CreateModelTypeResult.scala @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.{CreateModelTypeInfo, HiveSimpleInfo} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/model/type") +class CreateModelTypeResult extends DWSResult{ + @BeanProperty var result: java.util.Map[String, Any] = _ + + + def getInfo : CreateModelTypeInfo ={ + val str = DWSHttpClient.jacksonJson.writeValueAsString(result) + DWSHttpClient.jacksonJson.readValue(str, classOf[CreateModelTypeInfo]) + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteLabelResult.scala new file mode 100644 index 000000000..619089093 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteLabelResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels/delete") +class DeleteLabelResult extends DWSResult{ + @BeanProperty var result:Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteModelTypeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteModelTypeResult.scala new file mode 100644 index 000000000..381538aa1 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/DeleteModelTypeResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/model/type/delete") +class DeleteModelTypeResult extends DWSResult{ + @BeanProperty var result:Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblBasicResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblBasicResult.scala new file mode 100644 index 000000000..7eb1dc6d9 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblBasicResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + + +import scala.beans.BeanProperty +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/(\\S+)/basic") +class GetHiveTblBasicResult extends DWSResult{ + @BeanProperty var result:Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblCreateResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblCreateResult.scala new file mode 100644 index 000000000..4089d4351 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblCreateResult.scala @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/(\\S+)/create") +class GetHiveTblCreateResult extends DWSResult{ + @BeanProperty var result:String = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartInfoByNameResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartInfoByNameResult.scala new file mode 100644 index 000000000..7f5db0c3f --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartInfoByNameResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.{HiveSimpleInfo, PartInfo} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/partition/name") +class GetHiveTblPartInfoByNameResult extends DWSResult{ + @BeanProperty var result:util.List[java.util.Map[String, Any]] = _ + + def getInfo: util.List[PartInfo] ={ + import scala.collection.JavaConverters._ + result.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[PartInfo]) + }).asJava + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartitionResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartitionResult.scala new file mode 100644 index 000000000..ec7280f13 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/GetHiveTblPartitionResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/(\\S+)/partition") +class GetHiveTblPartitionResult extends DWSResult{ + @BeanProperty var result:util.List[java.util.Map[String, Any]] = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblSizeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblSizeResult.scala new file mode 100644 index 000000000..fcd7a0edc --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblSizeResult.scala @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/size") +class HiveTblSizeResult extends DWSResult{ + @BeanProperty var result: Long = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblStatsResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblStatsResult.scala new file mode 100644 index 000000000..07ec55fcf --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/HiveTblStatsResult.scala @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.{CreateModelTypeInfo, HiveTblStatsDTO} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/stats") +class HiveTblStatsResult extends DWSResult{ + @BeanProperty var result: java.util.Map[String, Any] = _ + + + def getInfo : HiveTblStatsDTO ={ + val str = DWSHttpClient.jacksonJson.writeValueAsString(result) + DWSHttpClient.jacksonJson.readValue(str, classOf[HiveTblStatsDTO]) + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveDbResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveDbResult.scala new file mode 100644 index 000000000..b3760fc36 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveDbResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.HiveSimpleInfo +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveDb/search") +class SearchHiveDbResult extends DWSResult{ + @BeanProperty var result:util.List[java.util.Map[String, Any]] = _ + + def getHiveList: util.List[HiveSimpleInfo] ={ + import scala.collection.JavaConverters._ + result.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[HiveSimpleInfo]) + }).asJava + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveTblResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveTblResult.scala new file mode 100644 index 000000000..d79db9951 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchHiveTblResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.HiveSimpleInfo +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/hiveTbl/search") +class SearchHiveTblResult extends DWSResult{ + @BeanProperty var result:util.List[java.util.Map[String, Any]] = _ + + def getHiveList: util.List[HiveSimpleInfo] ={ + import scala.collection.JavaConverters._ + result.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[HiveSimpleInfo]) + }).asJava + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchLabelResult.scala new file mode 100644 index 000000000..51f17913c --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/SearchLabelResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.{HiveSimpleInfo, SearchLabelInfo} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels/search") +class SearchLabelResult extends DWSResult{ + @BeanProperty var result:util.List[java.util.Map[String, Any]] = _ + + def getLabelList: util.List[SearchLabelInfo] ={ + import scala.collection.JavaConverters._ + result.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[SearchLabelInfo]) + }).asJava + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindLabelResult.scala new file mode 100644 index 000000000..a0b1fb712 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindLabelResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels/unbind") +class UnBindLabelResult extends DWSResult{ + @BeanProperty var result: Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindModelTypeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindModelTypeResult.scala new file mode 100644 index 000000000..a0be9615c --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UnBindModelTypeResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/model/unbind") +class UnBindModelTypeResult extends DWSResult{ + @BeanProperty var result: Object = _ +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateLabelResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateLabelResult.scala new file mode 100644 index 000000000..913ee3adb --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateLabelResult.scala @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.UpdateLabelInfo +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/labels/modify") +class UpdateLabelResult extends DWSResult{ + @BeanProperty var result: java.util.Map[String, Any] = _ + + + def getInfo : UpdateLabelInfo ={ + val str = DWSHttpClient.jacksonJson.writeValueAsString(result) + DWSHttpClient.jacksonJson.readValue(str, classOf[UpdateLabelInfo]) + } +} \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateModelTypeResult.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateModelTypeResult.scala new file mode 100644 index 000000000..2d9359e5c --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/main/scala/com/webank/wedatasphere/dss/data/governance/response/UpdateModelTypeResult.scala @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.data.governance.response + +import com.webank.wedatasphere.dss.data.governance.entity.{CreateModelTypeInfo, UpdateModelTypeInfo} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/data-assets/asset/model/type/modify") +class UpdateModelTypeResult extends DWSResult{ + @BeanProperty var result: java.util.Map[String, Any] = _ + + + def getInfo : UpdateModelTypeInfo ={ + val str = DWSHttpClient.jacksonJson.writeValueAsString(result) + DWSHttpClient.jacksonJson.readValue(str, classOf[UpdateModelTypeInfo]) + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-client/src/test/scala/com/webank/wedatasphere/dss/data/governance/TestDataAssetsRemoteClient.scala b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/test/scala/com/webank/wedatasphere/dss/data/governance/TestDataAssetsRemoteClient.scala new file mode 100644 index 000000000..67a61673f --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-client/src/test/scala/com/webank/wedatasphere/dss/data/governance/TestDataAssetsRemoteClient.scala @@ -0,0 +1,108 @@ +package com.webank.wedatasphere.dss.data.governance + +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient +import com.webank.wedatasphere.dss.data.governance.request.{GetHiveTblPartitionAction, GetTblPartInfoByNameAction} +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder + +import java.util.concurrent.TimeUnit +import scala.Console.println + + +object TestDataAssetsRemoteClient { + def main(args: Array[String]): Unit = { + val clientConfig = DWSClientConfigBuilder.newBuilder() + .addServerUrl("http://localhost:20082") + .connectionTimeout(30000) + .discoveryEnabled(false) + .discoveryFrequency(1,TimeUnit.MINUTES) + .loadbalancerEnabled(true) + .maxConnectionSize(5) + .retryEnabled(false) + .readTimeout(30000) + .setAuthenticationStrategy(null) + .setAuthTokenKey("hdfs") + .setAuthTokenValue("hdfs") + .setDWSVersion("v1") + .build() + + val dataAssetsClient = new LinkisDataAssetsRemoteClient(clientConfig) +// +// val searchHiveTblResult = dataAssetsClient.searchHiveTbl(SearchHiveTblAction.builder().setUser("hdfs").setQuery("").setLimit(10).setOffset(0).setOwner("undefined").build()).getHiveList +// println(searchHiveTblResult) +// +// val searchHiveDbResult = dataAssetsClient.searchHiveDb(SearchHiveDbAction.builder().setUser("hdfs").setQuery("").setLimit(10).setOffset(0).setOwner("undefined").build()).getHiveList +// println(searchHiveDbResult) +// +// val hiveTblBasicResult = dataAssetsClient +// .getHiveTblBasic(GetHiveTblBasicAction.builder().setUser("hdfs").setGuid("27920dc8-1eef-4d7d-9423-b5967d9e2d33").build()) +// .result +// println(hiveTblBasicResult) +// + val hiveTblPartitionResult = dataAssetsClient.getHiveTblPartition(GetHiveTblPartitionAction.builder().setUser("hdfs").setGuid("a3be4a97-6465-4c3d-adee-76dfa662e531").build()).result + println(hiveTblPartitionResult) +// +// val hiveTblCreateResult = dataAssetsClient.getHiveTblCreate(GetHiveTblCreateAction.builder().setUser("hdfs").setGuid("a3be4a97-6465-4c3d-adee-76dfa662e531").build()).result +// println(hiveTblCreateResult) +// +// val deleteModelTypeResult = dataAssetsClient.deleteModelType(DeleteModelTypeAction.builder().setUser("hdfs").setType(ClassificationConstant.INDICATOR).setName("test004").build()) +// println(deleteModelTypeResult.getResult) +// +// val createModelTypeResult = dataAssetsClient.createModelType(CreateModelTypeAction.builder().setUser("hdfs").setType(ClassificationConstant.INDICATOR).setName("test004").build()).getInfo +// println(createModelTypeResult) +// +// val updateModelTypeResult =dataAssetsClient.updateModelType(UpdateModelTypeAction.builder().setUser("hdfs").setType(ClassificationConstant.INDICATOR).setName("test000NEW").setOrgName("test000").build()) +// println(updateModelTypeResult.getInfo.getGuid) +// println(updateModelTypeResult.getInfo.getName) +// +// val bindResult = dataAssetsClient.bindModelType(BindModelTypeAction.builder() +// .setUser("hdfs") +// .setTableName("default.test02") +// .setModelName("test001") +// .setModelType(ClassificationConstant.INDICATOR).build()) +// println(bindResult.getResult) + +// val unBindResult = dataAssetsClient.unBindModelType(UnBindModelTypeAction.builder() +// .setUser("hdfs") +// .setTableName("default.test02") +// .setModelName("test001") +// .setModelType(ClassificationConstant.INDICATOR).build()) +// println(unBindResult.getResult) + +// val hiveTableSizeResult = dataAssetsClient.searchHiveTblSize(HiveTblSizeAction.builder() +// .setUser("hdfs") +// .setTableName("test04") +// .setDbName("default").build()) +// println(hiveTableSizeResult.getResult) +// val hiveTableStatsResult = dataAssetsClient.searchHiveTblStats(HiveTblStatsAction.builder() +// .setUser("hdfs") +// .setTableName("test04") +// .setDbName("default").build()) +// println(hiveTableStatsResult.getResult) + +// val searchLabelResult = dataAssetsClient.searchLabel(SearchLabelAction.builder().setUser("hdfs").setQuery("t").build()); +// println(searchLabelResult.getLabelList) +// +// val createLabelResult = dataAssetsClient.createLabel(CreateLabelAction.builder().setUser("hdfs").setName("label007").build()) +// println(createLabelResult.getInfo) +// +// TimeUnit.SECONDS.sleep(5) +// +// val bindLabelResult = dataAssetsClient.bindLabel(BindLabelAction.builder().setUser("hdfs").setLabel("term1").setTableName("linkis_db.linkis_test01").build()) +// println(bindLabelResult.getResult) +//// +// val unbindLabelResult = dataAssetsClient.unBindLabel(UnBindLabelAction.builder().setUser("hdfs").setLabel("term1").setTableName("linkis_db.linkis_test01").build()) +// println(unbindLabelResult.getResult) +// +// val updateLabelResult = dataAssetsClient.updateLabel(UpdateLabelAction.builder().setUser("hdfs").setName("label008").setOrgName("label007").build()) +// println(updateLabelResult.getInfo) +// +// val deleteLabelResult = dataAssetsClient.deleteLabel(DeleteLabelAction.builder().setUser("hdfs").setName("label008").build()) +// println(deleteLabelResult.getResult) + +// +// println(hiveTableStatsResult.getResult) + + val partInfo = dataAssetsClient.getHiveTblPartInfoByNameResult(GetTblPartInfoByNameAction.builder().setUser("hdfs").setDbName("linkis_db").setTableName("linkis_partitions").build()) + println(partInfo.getInfo) + } +} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/pom.xml b/dss-apps/dss-dataasset-management/dss-data-assets-server/pom.xml similarity index 69% rename from dss-apps/dss-data-governance/dss-data-governance-common/pom.xml rename to dss-apps/dss-dataasset-management/dss-data-assets-server/pom.xml index e67ec05f4..0f43acbf4 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-common/pom.xml +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/pom.xml @@ -3,18 +3,22 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - dss + dss-dataasset-management com.webank.wedatasphere.dss 1.1.0 - ../../../pom.xml 4.0.0 - dss-data-governance-common + dss-data-assets-server - 2.1.0 + 2.2.0 + 8 + 8 + 2.7.2 + 1.1.2 + org.apache.linkis @@ -30,8 +34,36 @@ spring-cloud-starter-netflix-eureka-client org.springframework.cloud + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-core + + + com.sun.jersey + jersey-server + + + org.apache.commons + commons-math3 + + + xstream + com.thoughtworks.xstream + + + + org.apache.linkis + linkis-mybatis + ${linkis.version} + + + org.apache.atlas atlas-client-v2 @@ -42,26 +74,37 @@ guava - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-core + com.sun.jersey + jersey-server + org.projectlombok lombok 1.18.16 compile + com.alibaba druid 1.1.9 + + + com.webank.wedatasphere.dss + dss-framework-workspace-client + ${dss.version} + + + + mysql + mysql-connector-java + 5.1.49 + + @@ -124,16 +167,15 @@ **/*.xml - - - - - - - - + + + + + + + + - \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/assembly/distribution.xml b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/assembly/distribution.xml similarity index 94% rename from dss-apps/dss-data-governance/dss-data-governance-common/src/main/assembly/distribution.xml rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/assembly/distribution.xml index 46d83d32f..de98a179b 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/assembly/distribution.xml +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/assembly/distribution.xml @@ -20,12 +20,12 @@ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.3 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> - dss-data-asset-server + dss-data-assets-server dir true - dss-data-asset-server + dss-data-assets-server @@ -40,7 +40,5 @@ - - diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasClient.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasClient.java new file mode 100644 index 000000000..a9f5f1f46 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasClient.java @@ -0,0 +1,287 @@ +package com.webank.wedatasphere.dss.data.governance.atlas; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.sun.jersey.core.util.MultivaluedMapImpl; +import com.webank.wedatasphere.dss.data.governance.entity.GlossaryConstant; +import org.apache.atlas.AtlasClientV2; +import org.apache.atlas.AtlasServiceException; +import org.apache.atlas.model.discovery.SearchParameters; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; +import org.apache.atlas.model.glossary.relations.AtlasGlossaryHeader; +import org.apache.atlas.model.instance.AtlasRelatedObjectId; +import org.apache.atlas.model.lineage.AtlasLineageInfo; +import org.apache.atlas.model.typedef.AtlasClassificationDef; +import org.apache.atlas.model.typedef.AtlasTypesDef; +import org.apache.commons.configuration.Configuration; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + + +public class AtlasClient extends AtlasClientV2 { + // Entities APIs + public static final String ENTITIES_API = BASE_URI + "entities/"; + public static final String UPDATE_ENTITY_ATTR_API = ENTITY_API + "guid/"; + public static final String SET_ENTITY_LABELS_BY_GUID_TEMPLATE = ENTITY_API + "/guid/%s/labels"; + public static final String GET_ENTITY_HEADER_BY_GUID_TEMPLATE = ENTITY_API + "/guid/{guid}/header"; + private final Gson gson = new Gson(); + + public AtlasClient(Configuration configuration,String[] baseUrl, String[] basicAuthUserNamePassword) { + super(configuration,baseUrl, basicAuthUserNamePassword); + } + + /** + * 获取所有的hive db实体 + */ + public String getHiveDbs() throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add("type", "hive_db"); + return callAPI(API_V3.GET_ENTITIES, String.class, queryParams); + } + + + public String getHiveDbsName(Integer limit, Integer offset) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(QUERY, "hive_db"); + queryParams.add(LIMIT, limit+""); + queryParams.add(OFFSET, offset+""); + return callAPI(API_V2.DSL_SEARCH, String.class, queryParams); + } + + + /** + * 获取所有的hive table实体 + */ + public String getHiveTables() throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add("type", "hive_table"); + return callAPI(API_V3.GET_ENTITIES, String.class, queryParams); + } + + /** + * 获取表实体的血缘信息 + */ + public String getLineageInfoForString(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add("direction", direction.toString()); + queryParams.add("depth", String.valueOf(depth)); + + return callAPI(API_V2.LINEAGE_INFO, String.class, queryParams, guid); + } + + /** + * 获取实体信息 + */ + public String getEntityByGuidForString(String guid) throws AtlasServiceException { + return getEntityByGuidForString(guid, false, false); + } + + /** + * 获取实体信息 + */ + public String getEntityByGuidForString(String guid, boolean minExtInfo, boolean ignoreRelationships) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + + queryParams.add("minExtInfo", String.valueOf(minExtInfo)); + queryParams.add("ignoreRelationships", String.valueOf(ignoreRelationships)); + + return callAPI(API_V2.GET_ENTITY_BY_GUID, String.class, queryParams, guid); + } + + public String getEntitiesByGuidsForString(List guids) throws AtlasServiceException { + return getEntitiesByGuidsForString(guids, false, false); + } + + public String getEntitiesByGuidsForString(List guids, boolean minExtInfo, boolean ignoreRelationships) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + + queryParams.put("guid", guids); + queryParams.add("minExtInfo", String.valueOf(minExtInfo)); + queryParams.add("ignoreRelationships", String.valueOf(ignoreRelationships)); + + return callAPI(API_V2.GET_ENTITIES_BY_GUIDS, String.class, queryParams); + } + + /** + * 获取实体基本信息 + */ + public String getHeaderByIdForString(String guid) throws AtlasServiceException { + API api = new API(String.format(GET_ENTITY_HEADER_BY_GUID_TEMPLATE, guid), HttpMethod.GET, Response.Status.OK); + return callAPI(api, String.class,null); + } + + /** + * 根据关键字检索实体 + */ + public String basicSearchForString(final String typeName, final String classification, final String query, + final boolean excludeDeletedEntities, final int limit, final int offset) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add("typeName", typeName); + queryParams.add("classification", classification); + queryParams.add(QUERY, query); + queryParams.add("excludeDeletedEntities", String.valueOf(excludeDeletedEntities)); + queryParams.add(LIMIT, String.valueOf(limit)); + queryParams.add(OFFSET, String.valueOf(offset)); + + return callAPI(API_V2.BASIC_SEARCH, String.class, queryParams); + } + + + /** + * 创建子类型 + * @param name + * @param superType + * @return + * @throws AtlasServiceException + */ + public String createSubClassification(String name, String superType) throws AtlasServiceException { + AtlasClassificationDef atlasClassificationDef = new AtlasClassificationDef(); + atlasClassificationDef.setName(name); + atlasClassificationDef.setSuperTypes(Sets.newHashSet(superType)); + AtlasTypesDef atlasTypesDef = new AtlasTypesDef(); + atlasTypesDef.setClassificationDefs(Lists.newArrayList(atlasClassificationDef)); + MultivaluedMap params = new MultivaluedMapImpl(); + params.add("type","classification"); + return callAPI(AtlasClientV2.API_V2.CREATE_TYPE_DEFS, String.class, gson.toJson(atlasTypesDef),params); + } + + // Glossary APIs + public String getAllGlossaries() throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + + queryParams.add(LIMIT, "99999"); + queryParams.add(OFFSET, "0"); + + return callAPI(API_V2.GET_ALL_GLOSSARIES, String.class, queryParams); + } + + /** + * 新建分词 + * @param name + * @param rootGuid + * @return + * @throws AtlasServiceException + */ + public String createGlossaryTerm(String name,String rootGuid) throws AtlasServiceException { + AtlasGlossaryTerm glossaryTerm = new AtlasGlossaryTerm(); + glossaryTerm.setName(name); + AtlasGlossaryHeader anchor = new AtlasGlossaryHeader(); + anchor.setGlossaryGuid(rootGuid); + glossaryTerm.setAnchor(anchor); + return callAPI(API_V2.CREATE_GLOSSARY_TERM, String.class, gson.toJson(glossaryTerm)); + } + + /** + * 根据名称 查询分词详情 + * @param glossaryConstant + * @param name + * @return + * @throws AtlasServiceException + */ + public String attributeSearchByName(GlossaryConstant glossaryConstant, String name) throws AtlasServiceException { + return attributeSearch0(glossaryConstant.getAtlasType(),glossaryConstant.formatQuery(name), GlossaryConstant.ARR,1,0); + } + + public String attributeSearch0(String typeName, String name, String attrName, Integer limit, Integer offset) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + + queryParams.add("attrName", attrName); + queryParams.add("attrValuePrefix",name); + queryParams.add("typeName", typeName); + queryParams.add(LIMIT, limit+""); + queryParams.add(OFFSET, offset+""); + + return callAPI(API_V2.ATTRIBUTE_SEARCH, String.class, queryParams); + } + + + /** + * 实体绑定分词 + * @param termGuid + * @param entityGuids + * @throws AtlasServiceException + */ + public void assignTermToEntities0(String termGuid, List entityGuids) throws AtlasServiceException { + List relatedObjectIds = entityGuids.stream().map(entityGuid->{AtlasRelatedObjectId atlasRelatedObjectId = new AtlasRelatedObjectId(); + atlasRelatedObjectId.setGuid(entityGuid); + return atlasRelatedObjectId; + }).collect(Collectors.toList()); + callAPI(formatPathParameters(API_V2.ASSIGN_TERM_TO_ENTITIES, termGuid), (Class) null, gson.toJson(relatedObjectIds)); + } + + /** + * 解绑实体 + * @param termGuid + * @param + * @throws AtlasServiceException + */ + public void disassociateTermFromEntities0(String termGuid, List relatedObjectIds) throws AtlasServiceException { + callAPI(formatPathParameters(API_V2.DISASSOCIATE_TERM_FROM_ENTITIES, termGuid), (Class) null, gson.toJson(relatedObjectIds)); + } + + /** + * 根据关键字检索实体 + */ + public String basicSearchPostForString(final String typeName, final String classification, final String query,final String termName, + final boolean excludeDeletedEntities, final int limit, final int offset) throws AtlasServiceException { + SearchParameters searchParameters = new SearchParameters(); + Set returnColumnsParams = Sets.newHashSet("aliases", "parameters", "lastAccessTime","comment"); + searchParameters.setTypeName(typeName); + searchParameters.setClassification(classification); + searchParameters.setQuery(query); + searchParameters.setLimit(limit); + searchParameters.setTermName(termName); + searchParameters.setOffset(offset); + searchParameters.setIncludeSubClassifications(true); + searchParameters.setIncludeSubTypes(true); + searchParameters.setIncludeClassificationAttributes(true); + searchParameters.setExcludeDeletedEntities(excludeDeletedEntities); + searchParameters.setAttributes(returnColumnsParams); + return callAPI(AtlasClientV2.API_V2.FACETED_SEARCH, String.class, gson.toJson(searchParameters),new MultivaluedMapImpl()); + } + + /** + * 修改实体的注释 + */ + public String modifyComment(String guid,String commentStr) throws AtlasServiceException { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add("name", "comment"); + + return callAPI(API_V3.UPDATE_ENTITY_ATTR,String.class,commentStr,queryParams,guid); + } + + /** + * 获取分词详情 + * @param termGuid + * @return + * @throws AtlasServiceException + */ + public String getGlossaryTerm0(String termGuid) throws AtlasServiceException { + + return callAPI(API_V2.GET_GLOSSARY_TERM, String.class, null, termGuid); + } + + /** + * 设置实体的标签 + */ + public void setLabels(String guid, Set labels) throws AtlasServiceException { + API api = new API(String.format(SET_ENTITY_LABELS_BY_GUID_TEMPLATE, guid), HttpMethod.POST, Response.Status.NO_CONTENT); + callAPI(api, (Class)null, labels); + } + + public static class API_V3 extends API { + public static final API_V3 GET_ENTITIES = new API_V3(ENTITIES_API, HttpMethod.GET, Response.Status.OK); + public static final API_V3 UPDATE_ENTITY_ATTR = new API_V3(UPDATE_ENTITY_ATTR_API,HttpMethod.PUT,Response.Status.OK); + + private API_V3(String path, String method, Response.Status status) { + super(path, method, status); + } + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasService.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasService.java new file mode 100644 index 000000000..210465fa2 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/atlas/AtlasService.java @@ -0,0 +1,365 @@ +package com.webank.wedatasphere.dss.data.governance.atlas; + +import com.google.common.collect.Lists; +import com.google.gson.*; +import com.google.gson.reflect.TypeToken; +import com.sun.jersey.core.util.MultivaluedMapImpl; +import com.webank.wedatasphere.dss.data.governance.conf.GovernanceConf; +import com.webank.wedatasphere.dss.data.governance.entity.GlossaryConstant; +import com.webank.wedatasphere.dss.data.governance.entity.RelatedObjectId; +import com.webank.wedatasphere.dss.data.governance.exception.DataGovernanceException; +import org.apache.atlas.ApplicationProperties; +import org.apache.atlas.AtlasClientV2; +import org.apache.atlas.AtlasException; +import org.apache.atlas.AtlasServiceException; +import org.apache.atlas.model.AtlasBaseModelObject; +import org.apache.atlas.model.discovery.AtlasSearchResult; +import org.apache.atlas.model.glossary.AtlasGlossary; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; +import org.apache.atlas.model.instance.*; +import org.apache.atlas.model.lineage.AtlasLineageInfo; +import org.apache.atlas.model.typedef.AtlasClassificationDef; +import org.apache.atlas.model.typedef.AtlasTypesDef; +import org.apache.commons.configuration.Configuration; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.lang.reflect.Type; +import java.util.*; +import java.util.stream.Collectors; + + +@Service("atlasService") +public class AtlasService { + private final AtlasClient atlasClient; + private final Gson gson; + + public AtlasService() throws AtlasException { + Configuration configuration = ApplicationProperties.get("atlas-application.properties"); + String[] urls = new String[]{GovernanceConf.ATLAS_REST_ADDRESS.getValue()}; + String[] basicAuthUsernamePassword = new String[]{GovernanceConf.ATLAS_USERNAME.getValue(), GovernanceConf.ATLAS_PASSWORD.getValue()}; + + atlasClient = new AtlasClient(configuration, urls, basicAuthUsernamePassword); + + + GsonBuilder builder = new GsonBuilder(); + // Register an adapter to manage the date types as long values + builder.registerTypeAdapter(Date.class, new JsonDeserializer() { + @Override + public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + return new Date(json.getAsJsonPrimitive().getAsLong()); + } + }); + + gson = builder.create(); + } + + /** + * hive db数量 + */ + public Long getHiveDbCnt() throws AtlasServiceException { + String jsonStr = atlasClient.getHiveDbs(); + if (jsonStr != null && jsonStr.trim() != "") { + JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class); + if (jsonObject != null) { + return jsonObject.get("count").getAsLong(); + } else { + return 0l; + } + } else { + return 0l; + } + } + + /** + * hive db + */ + public String getHiveDbsName(Integer limit, Integer offset) throws AtlasServiceException { + return atlasClient.getHiveDbsName(limit,offset); + } + + /** + * hive table数量 + */ + public long getHiveTableCnt() throws AtlasServiceException { + String jsonStr = atlasClient.getHiveTables(); + if (jsonStr != null && jsonStr.trim() != "") { + JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class); + if (jsonObject != null) { + return jsonObject.get("count").getAsLong(); + } else { + return 0l; + } + } else { + return 0l; + } + } + + + /** + * 根据关键字搜索hive table + */ + public List searchHiveTable(String classification, String query, + boolean excludeDeletedEntities, int limit, int offset) throws AtlasServiceException { + String jsonStr = atlasClient.basicSearchForString("hive_table", classification, query, excludeDeletedEntities, limit, offset); + AtlasSearchResult atlasSearchResult = gson.fromJson(jsonStr, AtlasSearchResult.class); + + return atlasSearchResult.getEntities(); + } + + /** + * 根据关键字搜索hive table + */ + public List searchHiveTable0(String classification, String query, String termName, + boolean excludeDeletedEntities, int limit, int offset) throws AtlasServiceException { + + String jsonStr = atlasClient.basicSearchPostForString("hive_table", classification, query, termName , excludeDeletedEntities, limit, offset); + AtlasSearchResult atlasSearchResult = gson.fromJson(jsonStr, AtlasSearchResult.class);//atlasClient.facetedSearch(searchParameters); + + //实体绑定类型 + //atlasClient.addClassification(); + //创建子类型 + //atlasClient.createAtlasTypeDefs() + return atlasSearchResult.getEntities(); + } + + /** + * 创建子类型 + * + * @param name + * @param superType + * @return + * @throws AtlasServiceException + */ + public AtlasClassificationDef createSubClassification(String name, String superType) throws AtlasServiceException { + String jsonStr = atlasClient.createSubClassification(name, superType); + AtlasTypesDef atlasTypesDef = gson.fromJson(jsonStr, AtlasTypesDef.class); + return atlasTypesDef.getClassificationDefs().get(0); + } + + /** + * 删除指定模型类型 + * + * @param name + * @throws AtlasServiceException + */ + public void deleteClassification(String name) throws AtlasServiceException { + atlasClient.deleteTypeByName(name); + } + + + /** + * 绑定类型 + * + * @param typeName + * @param guid + * @throws AtlasServiceException + */ + public void addClassification(String typeName, String guid, boolean propagate) throws AtlasServiceException { + AtlasClassification atlasClassification = new AtlasClassification(); + atlasClassification.setTypeName(typeName); + atlasClassification.setPropagate(propagate); + atlasClassification.setRemovePropagationsOnEntityDelete(false); + + ClassificationAssociateRequest request = new ClassificationAssociateRequest(Lists.newArrayList(guid), atlasClassification); + atlasClient.callAPI(AtlasClientV2.API_V2.ADD_CLASSIFICATION, (Class) null, gson.toJson(request), new MultivaluedMapImpl()); + } + + /** + * 解绑类型 + * + * @param guid + * @param typeName + * @throws AtlasServiceException + */ + public void deleteClassification(String guid, String typeName) throws AtlasServiceException { + atlasClient.deleteClassification(guid, typeName); + } + + /** + * 获取hive table对象 + */ + public AtlasEntity getHiveTbl(String guid) throws AtlasServiceException { + String jsonStr = atlasClient.getEntityByGuidForString(guid, false, false); + + AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); + + return atlasEntityWithExtInfo.getEntity(); + } + + /** + * 获取hive column对象 + */ + public AtlasEntity getHiveColumn(String guid) throws AtlasServiceException { + String jsonStr = atlasClient.getEntityByGuidForString(guid, true, true); + + AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); + + return atlasEntityWithExtInfo.getEntity(); + } + + /** + * 获取多个hive column对象 + */ + public List getHiveColumnsByGuids(List guids) throws AtlasServiceException { + String jsonStr = atlasClient.getEntitiesByGuidsForString(guids, true, true); + AtlasEntity.AtlasEntitiesWithExtInfo atlasEntitiesWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntitiesWithExtInfo.class); + + return atlasEntitiesWithExtInfo.getEntities(); + } + + + /** + * 修改实体的注释 + */ + public void modifyComment(String guid, String commentStr) throws AtlasServiceException { + atlasClient.modifyComment(guid, commentStr); + } + + /** + * 设置实体的标签 + */ + public void setLabels(String guid, Set labels) throws AtlasServiceException { + atlasClient.setLabels(guid, labels); + } + + /** + * 获取根glossary guid + * + * @return + * @throws AtlasServiceException + */ + public Optional getRootGlossaryGuid(GlossaryConstant glossaryConstant) throws AtlasServiceException { + String result = atlasClient.getAllGlossaries(); + List glossaries = gson.fromJson(result, new TypeToken>() { + }.getType()); + Optional root = glossaries.stream().filter(atlasGlossary -> StringUtils.equals(atlasGlossary.getName(), glossaryConstant.getRoot())).findFirst(); + return root.map(AtlasBaseModelObject::getGuid); + } + + /** + * 新建标签 + * + * @param labelName + * @return + * @throws AtlasServiceException + */ + public AtlasGlossaryTerm createLabel(String labelName) throws AtlasServiceException { + String result = atlasClient.createGlossaryTerm(labelName, getRootGlossaryGuid(GlossaryConstant.LABEL).get()); + return gson.fromJson(result, AtlasGlossaryTerm.class); + } + + /** + * 绑定标签 + * @param termGuid + * @param entityGuids + * @throws AtlasServiceException + */ + public void assignTermToEntities(String termGuid,List entityGuids) throws AtlasServiceException{ + atlasClient.assignTermToEntities0(termGuid,entityGuids); + } + + /** + * 解绑实体 + * @param termGuid + * @param + * @throws AtlasServiceException + */ + public void disassociateTermFromEntities(String termGuid, List relatedObjectIds) throws AtlasServiceException { + atlasClient.disassociateTermFromEntities0(termGuid,relatedObjectIds.stream().map( + relatedObjectId -> { + AtlasRelatedObjectId atlasRelatedObjectId = new AtlasRelatedObjectId(); + atlasRelatedObjectId.setGuid(relatedObjectId.getGuid()); + atlasRelatedObjectId.setRelationshipGuid(relatedObjectId.getRelationshipGuid()); + return atlasRelatedObjectId; + } + ).collect(Collectors.toList())); + } + + + + /** + * 删除标签 + * @param labelName + * @throws AtlasServiceException + */ + public void deleteLabel(String labelName) throws Exception{ + Optional optional = getTermGuid(GlossaryConstant.LABEL,labelName); + if (!optional.isPresent()){ + throw new DataGovernanceException(23000, labelName + "标签不存在"); + } + atlasClient.deleteGlossaryTermByGuid(optional.get()); + } + + /** + * 获取分词guid + * @param glossaryConstant + * @param name + * @return + * @throws AtlasServiceException + */ + public Optional getTermGuid(GlossaryConstant glossaryConstant, String name) throws AtlasServiceException { + String result = atlasClient.attributeSearchByName(glossaryConstant, name); + AtlasSearchResult atlasSearchResult = gson.fromJson(result, AtlasSearchResult.class); + return !CollectionUtils.isEmpty(atlasSearchResult.getEntities()) ? + Optional.ofNullable(atlasSearchResult.getEntities().get(0).getGuid()) : Optional.empty(); + } + + public List listLabels(String query,Integer limit,Integer offset) throws AtlasServiceException{ + String result = atlasClient.attributeSearch0(GlossaryConstant.LABEL.getAtlasType(),query,GlossaryConstant.ARR,limit,offset); + AtlasSearchResult atlasSearchResult = gson.fromJson(result, AtlasSearchResult.class); + return !CollectionUtils.isEmpty(atlasSearchResult.getEntities())?atlasSearchResult.getEntities():Lists.newArrayList(); + } + + + /** + * 血缘信息 + */ + public AtlasLineageInfo getLineageInfo(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws AtlasServiceException { + String jsonStr = atlasClient.getLineageInfoForString(guid, direction, depth); + AtlasLineageInfo atlasLineageInfo = gson.fromJson(jsonStr, AtlasLineageInfo.class); + return atlasLineageInfo; + } + + /** + * 根据guid来获取hive tbl名称: db.table + */ + public String getHiveTblNameById(String guid) throws AtlasServiceException { + String jsonStr = atlasClient.getHeaderByIdForString(guid); + AtlasEntityHeader atlasEntityHeader = gson.fromJson(jsonStr, AtlasEntityHeader.class); + + return atlasEntityHeader.getAttribute("qualifiedName").toString().split("@")[0]; + } + + /** + * 根据guid来获取hive tbl名称 和 是否分区表 + */ + public Map getHiveTblNameAndIsPartById(String guid) throws AtlasServiceException { + Map result = new HashMap<>(2); + + String jsonStr = atlasClient.getEntityByGuidForString(guid, true, false); + AtlasEntity.AtlasEntityWithExtInfo atlasEntityWithExtInfo = gson.fromJson(jsonStr, AtlasEntity.AtlasEntityWithExtInfo.class); + + result.put("tblName", atlasEntityWithExtInfo.getEntity().getAttribute("qualifiedName").toString().split("@")[0]); + result.put("isPartition", ((List) atlasEntityWithExtInfo.getEntity().getAttribute("partitionKeys")).size() > 0); + + return result; + } + + /** + * 获取hive db对象 + */ + public List searchHiveDb(String classification, String query, + boolean excludeDeletedEntities, int limit, int offset) throws AtlasServiceException { + String jsonStr = atlasClient.basicSearchPostForString("hive_db", classification, query,null, excludeDeletedEntities, limit, offset); + AtlasSearchResult atlasSearchResult = gson.fromJson(jsonStr, AtlasSearchResult.class); + + return atlasSearchResult.getEntities(); + } + + public AtlasGlossaryTerm getGlossaryTermDetail(String termGuid) throws AtlasServiceException { + String detail = atlasClient.getGlossaryTerm0(termGuid); + return gson.fromJson(detail,AtlasGlossaryTerm.class); + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientCommonConfig.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientCommonConfig.java new file mode 100644 index 000000000..2a91c3882 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientCommonConfig.java @@ -0,0 +1,34 @@ +package com.webank.wedatasphere.dss.data.governance.conf; + +import com.webank.wedatasphere.dss.framework.workspace.client.impl.LinkisWorkSpaceRemoteClient; +import org.apache.linkis.httpclient.authentication.AuthenticationStrategy; +import org.apache.linkis.httpclient.dws.config.DWSClientConfig; +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.TimeUnit; + +@Configuration +public class ClientCommonConfig { + + @Bean + public LinkisWorkSpaceRemoteClient linkisWorkSpaceRemoteClient() throws Exception { + AuthenticationStrategy authenticationStrategy = (AuthenticationStrategy) Class.forName(DataWorkspaceRemoteConfig.AUTHENTICATION_STRATEGY.getValue()).newInstance(); + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) DWSClientConfigBuilder.newBuilder() + .addServerUrl(DataWorkspaceRemoteConfig.SERVER_URL.getValue()) + .connectionTimeout(DataWorkspaceRemoteConfig.CONNECTION_TIMEOUT.getValue()) + .discoveryEnabled(DataWorkspaceRemoteConfig.DISCOVERY_ENABLED.getValue()) + .discoveryFrequency(DataWorkspaceRemoteConfig.DISCOVERY_FREQUENCY_PERIOD.getValue(), TimeUnit.MINUTES) + .loadbalancerEnabled(DataWorkspaceRemoteConfig.LOAD_BALANCER_ENABLED.getValue()) + .maxConnectionSize(DataWorkspaceRemoteConfig.MAX_CONNECTION_SIZE.getValue()) + .retryEnabled(DataWorkspaceRemoteConfig.RETRY_ENABLED.getValue()) + .readTimeout(DataWorkspaceRemoteConfig.READ_TIMEOUT.getValue()) + .setAuthenticationStrategy(authenticationStrategy) + .setAuthTokenKey(DataWorkspaceRemoteConfig.AUTHTOKEN_KEY.getValue()) + .setAuthTokenValue(DataWorkspaceRemoteConfig.AUTHTOKEN_VALUE.getValue()) + ).setDWSVersion(DataWorkspaceRemoteConfig.DWS_VERSION.getValue()) + .build(); + return new LinkisWorkSpaceRemoteClient(clientConfig); + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientStrategy.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientStrategy.java new file mode 100644 index 000000000..6f1ab65d6 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/ClientStrategy.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.data.governance.conf; + + +public enum ClientStrategy { + TOKEN("token"), + STATIC("static"); + + private final String code; + + ClientStrategy(String code) { + this.code = code; + } + + public String getCode() { + return code; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/DataWorkspaceRemoteConfig.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/DataWorkspaceRemoteConfig.java new file mode 100644 index 000000000..9eba05e76 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/DataWorkspaceRemoteConfig.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.data.governance.conf; + + +import org.apache.linkis.common.conf.CommonVars; + +public class DataWorkspaceRemoteConfig { + public static final CommonVars SERVER_URL = CommonVars.apply("wds.workspace.client.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.workspace.client.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.workspace.client.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.workspace.client.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.workspace.client.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.workspace.client.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.workspace.client.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.workspace.client.readtimeout", 30000L); + public static final CommonVars AUTHENTICATION_STRATEGY = CommonVars.apply("wds.workspace.client.authenticationStrategy", ""); + + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.workspace.client.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.workspace.client.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.workspace.client.dws.version", ""); + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/GovernanceConf.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/GovernanceConf.java new file mode 100644 index 000000000..9769d0548 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/conf/GovernanceConf.java @@ -0,0 +1,44 @@ +/* + * + * * Copyright 2019 WeBank + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + */ + +package com.webank.wedatasphere.dss.data.governance.conf; + +import org.apache.linkis.common.conf.CommonVars; + + +public interface GovernanceConf { + CommonVars ATLAS_REST_ADDRESS = CommonVars.apply("atlas.rest.address"); + CommonVars ATLAS_USERNAME = CommonVars.apply("atlas.username"); + CommonVars ATLAS_PASSWORD = CommonVars.apply("atlas.password"); + //CommonVars METASTORE_DATASOURCE_PASSWORD = CommonVars.apply("atlas.client.readTimeoutMSecs"); + //CommonVars METASTORE_DATASOURCE_PASSWORD = CommonVars.apply("atlas.client.connectTimeoutMSecs"); + CommonVarsATLAS_ROOT_INDICATOR = CommonVars.apply("atlas.root.indicator"); + CommonVarsATLAS_ROOT_MEASURE = CommonVars.apply("atlas.root.measure"); + CommonVarsATLAS_ROOT_DIMENSION = CommonVars.apply("atlas.root.dimension"); + CommonVarsATLAS_ROOT_LAYER = CommonVars.apply("atlas.root.layer"); + CommonVarsATLAS_ROOT_THEME = CommonVars.apply("atlas.root.theme"); + + CommonVarsATLAS_ROOT_LABEL = CommonVars.apply("atlas.root.label"); + CommonVarsATLAS_ROOT_COLLECTION = CommonVars.apply("atlas.root.collection"); + + + CommonVars METASTORE_DATASOURCE_DRIVER = CommonVars.apply("metastore.datasource.driver", "com.mysql.jdbc.Driver"); + CommonVars METASTORE_DATASOURCE_URL = CommonVars.apply("metastore.datasource.url"); + CommonVars METASTORE_DATASOURCE_USERNAME = CommonVars.apply("metastore.datasource.username"); + CommonVars METASTORE_DATASOURCE_PASSWORD = CommonVars.apply("metastore.datasource.password"); +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/MetaInfoMapper.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/MetaInfoMapper.java new file mode 100644 index 000000000..9641cef8e --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/MetaInfoMapper.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.data.governance.dao; + +import com.webank.wedatasphere.dss.data.governance.entity.PartInfo; +import com.webank.wedatasphere.dss.data.governance.entity.TableInfo; +import com.webank.wedatasphere.dss.data.governance.exception.DAOException; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.sql.SQLException; +import java.util.List; + + +@Mapper +public interface MetaInfoMapper { + Long getTableStorage() throws DAOException; + List getTop10Table() throws DAOException; + int getTableInfo(@Param("dbName") String dbName,@Param("tableName") String tableName,@Param("isPartTable") Boolean isPartTable) throws DAOException; + List getPartInfo(@Param("dbName") String dbName, @Param("tableName") String tableName) throws DAOException; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableColumnCountQueryMapper.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableColumnCountQueryMapper.java new file mode 100644 index 000000000..c96bad9a6 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableColumnCountQueryMapper.java @@ -0,0 +1,28 @@ +package com.webank.wedatasphere.dss.data.governance.dao; + + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.webank.wedatasphere.dss.data.governance.entity.TableColumnCount; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface TableColumnCountQueryMapper extends BaseMapper { + + String querySql = "select tbl_db.db_name as db_name,tbl_db.tbl_name as tbl_name,tbl_db.tbl_id as tbl_id , count(*) as column_count \n" + + "from COLUMNS_V2 as col\n" + + " left join CDS C on C.CD_ID = col.CD_ID\n" + + " right join (select t.TBL_NAME as tbl_name,t.TBL_ID as tbl_id, s.CD_ID as cd_id ,d.DB_ID as db_id ,d.NAME as db_name from TBLS as t left join SDS as s on t.SD_ID = s.SD_ID left join DBS d on t.DB_ID = d.DB_ID) as tbl_db\n" + + " on tbl_db.cd_id = col.CD_ID\n" + + " ${ew.customSqlSegment} " + + " group by tbl_db.tbl_id "; + + String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}"; + + + @Select(querySql) + List query(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizeInfoMapper.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizeInfoMapper.java new file mode 100644 index 000000000..2d0d52605 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizeInfoMapper.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.dao; + + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.webank.wedatasphere.dss.data.governance.entity.TableSizeInfo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface TableSizeInfoMapper extends BaseMapper { + String querySql = "select tbls.TBL_ID as id,d.NAME as db_name,tbls.TBL_NAME as tbl_name, tp.PARAM_KEY as param_key, tp.PARAM_VALUE as param_value\n" + + "from TBLS as tbls left join TABLE_PARAMS as tp on tbls.TBL_ID = tp.TBL_ID left join DBS d on tbls.DB_ID = d.DB_ID \n";; + + String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}"; + + + @Select(wrapperSql) + List query(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizePartitionInfoMapper.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizePartitionInfoMapper.java new file mode 100644 index 000000000..8c00d7076 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/TableSizePartitionInfoMapper.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.data.governance.dao; + + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.webank.wedatasphere.dss.data.governance.entity.TablePartitionSizeInfo; +import com.webank.wedatasphere.dss.data.governance.entity.TableSizeInfo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface TableSizePartitionInfoMapper extends BaseMapper { + + String querySql = "select tbl_db.TBL_ID as id, tbl_db.tbl_name as tbl_name, tbl_db.db_name as db_name, p.PART_ID as part_id,p.LAST_ACCESS_TIME as last_access_time,p.SD_ID as sd_id,pp.PARAM_KEY as param_key,pp.PARAM_VALUE as param_value from PARTITIONS AS p left join PARTITION_PARAMS pp on pp.PART_ID = p.PART_ID left join\n" + + "(select tbls.TBL_ID as tbl_id, tbls.TBL_NAME as tbl_name, db.NAME as db_name from TBLS as tbls, DBS as db where tbls.DB_ID = db.DB_ID ) as tbl_db on tbl_db.tbl_id = p.TBL_ID\n"; + + String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}"; + + + @Select(wrapperSql) + List query(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/WorkspaceInfoMapper.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/WorkspaceInfoMapper.java similarity index 63% rename from dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/WorkspaceInfoMapper.java rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/WorkspaceInfoMapper.java index 69091da49..33c9c97ff 100644 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/dao/WorkspaceInfoMapper.java +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/WorkspaceInfoMapper.java @@ -1,16 +1,18 @@ -package com.webank.wedatasphere.dss.data.asset.dao; +package com.webank.wedatasphere.dss.data.governance.dao; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; - import java.util.List; + @Mapper public interface WorkspaceInfoMapper { - @Select("select distinct username from dss_workspace_user_role where workspace_id= #{workspaceId} and username like #{search} ") + @Select("select username from dss_workspace_user where workspace_id= #{workspaceId} and username like #{search} ") List getWorkspaceUsersName (@Param("workspaceId") int workspaceId,@Param("search") String search); + + } diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/impl/MetaInfoMapperImpl.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/impl/MetaInfoMapperImpl.java new file mode 100644 index 000000000..6ec20f2b0 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dao/impl/MetaInfoMapperImpl.java @@ -0,0 +1,140 @@ +package com.webank.wedatasphere.dss.data.governance.dao.impl; + +import com.webank.wedatasphere.dss.data.governance.dao.MetaInfoMapper; +import com.webank.wedatasphere.dss.data.governance.entity.PartInfo; +import com.webank.wedatasphere.dss.data.governance.entity.TableInfo; +import com.webank.wedatasphere.dss.data.governance.exception.DAOException; +import com.webank.wedatasphere.dss.data.governance.utils.DataSourceUtil; +import com.webank.wedatasphere.dss.data.governance.utils.DateUtil; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + + +public class MetaInfoMapperImpl implements MetaInfoMapper { + @Override + public Long getTableStorage() throws DAOException { + DataSource dataSource = DataSourceUtil.getDataSource(); + + long num = 0; + PreparedStatement ps = null; + ResultSet rs = null; + try (Connection con = dataSource.getConnection()) { + String sql = "select SUM(PARAM_VALUE) from TABLE_PARAMS WHERE PARAM_KEY='totalSize'"; + ps = con.prepareStatement(sql); + rs = ps.executeQuery(); + while (rs.next()) { + num = rs.getLong(1); + } + String sql2 = "select SUM(PARAM_VALUE) from PARTITION_PARAMS WHERE PARAM_KEY='totalSize'"; + ps = con.prepareStatement(sql2); + rs = ps.executeQuery(); + while (rs.next()) { + num = num + rs.getLong(1); + } + } catch (SQLException e) { + throw new DAOException(23001, e.getMessage()); + } + return num; + } + + @Override + public List getTop10Table() throws DAOException { + DataSource dataSource = DataSourceUtil.getDataSource(); + + PreparedStatement ps = null; + ResultSet rs = null; + List tableInfos = new ArrayList<>(); + try (Connection con = dataSource.getConnection();) { + String sql = "select DBS.NAME ,TBLS.TBL_NAME,TABLE_PARAMS.PARAM_VALUE as totalSize from DBS, TBLS,TABLE_PARAMS where TBLS.TBL_ID=TABLE_PARAMS.TBL_ID AND TBLS.DB_ID=DBS.DB_ID AND TABLE_PARAMS.PARAM_KEY='totalSize' order by totalSize DESC limit 10"; + ps = con.prepareStatement(sql); + rs = ps.executeQuery(); + while (rs.next()) { + TableInfo tableinfo = new TableInfo(); + tableinfo.setTableName(rs.getString(1) + "." + rs.getString(2)); + tableinfo.setStorage(rs.getString(3)); + tableInfos.add(tableinfo); + } + String sql2 = "select DBS.NAME ,TBLS.TBL_NAME,SUM(PARTITION_PARAMS.PARAM_VALUE) as totalSize from DBS,TBLS,PARTITIONS ,PARTITION_PARAMS where DBS.DB_ID=TBLS.DB_ID AND TBLS.TBL_ID=PARTITIONS.TBL_ID AND PARTITIONS.PART_ID =PARTITION_PARAMS.PART_ID AND PARTITION_PARAMS.PARAM_KEY='totalSize' group by TBLS.TBL_NAME order by totalSize desc limit 10"; + ps = con.prepareStatement(sql2); + rs = ps.executeQuery(); + while (rs.next()) { + TableInfo tableinfo = new TableInfo(); + tableinfo.setTableName(rs.getString(1) + "." + rs.getString(2)); + tableinfo.setStorage(rs.getString(3)); + tableInfos.add(tableinfo); + } + + tableInfos.sort((o1, o2) -> { + long result = Long.parseLong(o2.getStorage()) - Long.parseLong(o1.getStorage()); + return Long.compare(result, 0L); + }); + } catch (SQLException e) { + throw new DAOException(23001, e.getMessage()); + } + + return tableInfos.stream().limit(10).collect(Collectors.toList()); + } + + @Override + public int getTableInfo(String dbName, String tableName, Boolean isPartTable) throws DAOException { + DataSource dataSource = DataSourceUtil.getDataSource(); + PreparedStatement ps = null; + ResultSet rs = null; + int res = 0; + try (Connection con = dataSource.getConnection()) { + String sql = null; + if (isPartTable == false) { + sql = "select TABLE_PARAMS.PARAM_VALUE as totalSize from DBS, TBLS,TABLE_PARAMS where TBLS.TBL_ID=TABLE_PARAMS.TBL_ID AND TBLS.DB_ID=DBS.DB_ID AND TABLE_PARAMS.PARAM_KEY='totalSize' AND DBS.NAME=" + "'" + dbName + "' AND TBLS.TBL_NAME=" + "'" + tableName + "'"; + } else { + + sql = "select SUM(PARTITION_PARAMS.PARAM_VALUE) as totalSize from DBS,TBLS,PARTITIONS ,PARTITION_PARAMS where DBS.DB_ID=TBLS.DB_ID AND TBLS.TBL_ID=PARTITIONS.TBL_ID AND PARTITIONS.PART_ID =PARTITION_PARAMS.PART_ID AND PARTITION_PARAMS.PARAM_KEY='totalSize' AND DBS.NAME=" + "'" + dbName + "' AND TBLS.TBL_NAME=" + "'" + tableName + "' group by TBLS.TBL_NAME"; + } + ps = con.prepareStatement(sql); + rs = ps.executeQuery(); + while (rs.next()) { + res = rs.getInt(1); + } + } catch (SQLException e) { + throw new DAOException(23001, e.getMessage()); + } + return res; + } + + @Override + public List getPartInfo(String dbName, String tableName) throws DAOException { + DataSource dataSource = DataSourceUtil.getDataSource(); + + PreparedStatement ps = null; + ResultSet rs = null; + List PartInfos = new ArrayList<>(); + try (Connection con = dataSource.getConnection()) { + String sql = "select b.PART_NAME,b.CREATE_TIME,MAX(CASE c.PARAM_KEY WHEN 'transient_lastDdlTime' THEN c.PARAM_VALUE ELSE null END) transient_lastDdlTime ,MAX(CASE c.PARAM_KEY WHEN 'numRows' THEN c.PARAM_VALUE ELSE null END) numRows,MAX(CASE c.PARAM_KEY WHEN 'totalSize' THEN c.PARAM_VALUE ELSE null END) totalSize, MAX(CASE c.PARAM_KEY WHEN 'numFiles' THEN c.PARAM_VALUE ELSE null END) numFiles from TBLS a,PARTITIONS b,PARTITION_PARAMS c,DBS d where a.TBL_NAME=" + "'" + tableName + "'" + "AND d.NAME=" + "'" + dbName + "'" + "AND a.TBL_ID=b.TBL_ID AND a.DB_ID=d.DB_ID AND b.PART_ID=c.PART_ID GROUP BY c.PART_ID"; + ps = con.prepareStatement(sql); + rs = ps.executeQuery(); + while (rs.next()) { + PartInfo part = new PartInfo(); + part.setPartName(rs.getString(1)); + part.setCreateTime(DateUtil.unixToTimeStr(Long.valueOf(rs.getInt(2)) * 1000)); + part.setLastAccessTime(DateUtil.unixToTimeStr(Long.valueOf(rs.getInt(3)) * 1000)); + part.setReordCnt(rs.getInt(4)); + part.setStore(rs.getInt(5)); + part.setFileCount(rs.getInt(6)); + PartInfos.add(part); + } + + } catch (SQLException e) { + throw new DAOException(23001, e.getMessage()); + } + + return PartInfos; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/HiveTblStatsDTO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/HiveTblStatsDTO.java new file mode 100644 index 000000000..56f4a2abe --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/HiveTblStatsDTO.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.dto; + + +import lombok.Data; + +@Data +public class HiveTblStatsDTO { + + private Integer columnCount = 0; + + private Long totalSize = 0L; + + private Integer numFiles = 0; + + private Integer partitionCount = 0; + + private Integer accessCount = 0; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/SearchLabelDTO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/SearchLabelDTO.java new file mode 100644 index 000000000..e7cfdc6cf --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/dto/SearchLabelDTO.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.dto; + + +import lombok.Data; +import org.apache.atlas.model.instance.AtlasEntityHeader; + +@Data +public class SearchLabelDTO { + private String name; + private String guid; + + public static SearchLabelDTO from(AtlasEntityHeader atlasEntityHeader){ + SearchLabelDTO dto = new SearchLabelDTO(); + dto.setGuid(atlasEntityHeader.getGuid()); + dto.setName(atlasEntityHeader.getAttribute("name").toString()); + return dto; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java new file mode 100644 index 000000000..a3ab80348 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/ClassificationConstant.java @@ -0,0 +1,116 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import com.webank.wedatasphere.dss.data.governance.conf.GovernanceConf; +import org.apache.commons.lang3.StringUtils; + +import java.util.Optional; + +public enum ClassificationConstant { + /** + * 指标 + */ + INDICATOR(1, "indicator_", GovernanceConf.ATLAS_ROOT_INDICATOR.getValue(),"indicator"), + /** + * 度量 + */ + MEASURE(2, "measure_", GovernanceConf.ATLAS_ROOT_MEASURE.getValue(),"measure"), + /** + * 维度 + */ + DIMENSION(0, "dimension_", GovernanceConf.ATLAS_ROOT_DIMENSION.getValue(),"dimension"), + /** + * 主题 + */ + THEME(3, "theme_", GovernanceConf.ATLAS_ROOT_THEME.getValue(),"theme"), + /** + * 分层 + */ + LAYER(4, "layer_", GovernanceConf.ATLAS_ROOT_LAYER.getValue(),"layer"); + + private int type; + + private String prefix; + + private String root; + + private String typeCode; + + ClassificationConstant(int type, String prefix, String root,String typeCode) { + this.type = type; + this.prefix = prefix; + this.root = root; + this.typeCode = typeCode; + } + + public static boolean isTypeScope(int type) { + return type >= 0 && type < values().length; + } + + public static boolean isTypeScope(String type) { + return getClassificationConstantByTypeCode(type).isPresent(); + } + + public static Optional getClassificationConstantByTypeCode(String typeCode) { + for (ClassificationConstant c : values()) { + if (StringUtils.equals(c.typeCode,typeCode)) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + public static Optional getClassificationConstantByType(int type) { + for (ClassificationConstant c : values()) { + if (c.type == type) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + public static Optional formatName(int type, String name){ + return Optional.of(getPrefix(type).get() + name); + } + + public static Optional formatName(String typeCode, String name){ + return Optional.of(getPrefix(typeCode).get() + name); + } + + public static Optional getRoot(int type) { + Optional optional = getClassificationConstantByType(type); + return optional.map(ClassificationConstant::getRoot); + } + + public static Optional getRoot(String typeCode) { + Optional optional = getClassificationConstantByTypeCode(typeCode); + return optional.map(ClassificationConstant::getRoot); + } + + public static Optional getPrefix(int type) { + Optional optional = getClassificationConstantByType(type); + return optional.map(ClassificationConstant::getPrefix); + } + + public static Optional getPrefix(String typeCode) { + Optional optional = getClassificationConstantByTypeCode(typeCode); + return optional.map(ClassificationConstant::getPrefix); + } + + + public int getType() { + return type; + } + + public String getPrefix() { + return prefix; + } + + public String getRoot() { + return root; + } + + public String getTypeCode() { + return typeCode; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java new file mode 100644 index 000000000..e8aaca5ad --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateLabelInfo.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; + +@Data +public class CreateLabelInfo { + private String name; + + private String guid; + + public static CreateLabelInfo from(AtlasGlossaryTerm term) { + CreateLabelInfo info = new CreateLabelInfo(); + info.setName(term.getName()); + info.setGuid(term.getGuid()); + return info; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java new file mode 100644 index 000000000..da26e0000 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/CreateModelTypeInfo.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; + +@Data +public class CreateModelTypeInfo { + + private String name; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/GlossaryConstant.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/GlossaryConstant.java new file mode 100644 index 000000000..280e744fd --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/GlossaryConstant.java @@ -0,0 +1,55 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import com.webank.wedatasphere.dss.data.governance.conf.GovernanceConf; + +public enum GlossaryConstant { + LABEL(0,"label","AtlasGlossaryTerm", GovernanceConf.ATLAS_ROOT_LABEL.getValue()), + COLLECTION(1,"collection","AtlasGlossaryTerm",GovernanceConf.ATLAS_ROOT_COLLECTION.getValue()); + + private int type; + + + private String typeCode; + + private String atlasType; + + private String root; + + public static final String SEPARATOR = "@"; + + + + public static final String ARR = "qualifiedName"; + + GlossaryConstant(int type, String typeCode,String atlasType, String root) { + this.type = type; + this.atlasType = atlasType; + this.typeCode = typeCode; + this.root = root; + } + + public int getType() { + return type; + } + + public String getTypeCode() { + return typeCode; + } + + public String getAtlasType() { + return atlasType; + } + + public String getRoot() { + return root; + } + + public String formatQuery(String query){ + return query+SEPARATOR+this.getRoot(); + } + + public String endWith(){ + return SEPARATOR+this.getRoot(); + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblDetailInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblDetailInfo.java new file mode 100644 index 000000000..97cae23c0 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblDetailInfo.java @@ -0,0 +1,33 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Set; + + +@Data +public class HiveTblDetailInfo implements Serializable { + private HiveTblBasicInfo basic; + private List columns; + private List partitionKeys; + + + @Data + public static class HiveTblBasicInfo extends HiveTblSimpleInfo { + private String store; + private String comment; + private Set labels; + private Boolean isParTbl; + } + + @Data + public static class HiveColumnInfo { + private String name; + private String type; + private String guid; + private String comment; + } + +} diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblSimpleInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblSimpleInfo.java similarity index 50% rename from dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblSimpleInfo.java rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblSimpleInfo.java index 9ae3f3373..0a6d7afd6 100644 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/java/com/webank/wedatasphere/dss/data/asset/entity/HiveTblSimpleInfo.java +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/HiveTblSimpleInfo.java @@ -1,20 +1,21 @@ -package com.webank.wedatasphere.dss.data.asset.entity; +package com.webank.wedatasphere.dss.data.governance.entity; import lombok.Data; import java.util.List; -import java.util.Set; + @Data public class HiveTblSimpleInfo { private String guid; private String name; - private String dbName; private String qualifiedName; - private List columns; private String createTime; private String owner; + private String aliases; + private String lastAccessTime; private String comment; - private Set labels; - private List classifications; + private List classifications; + private String totalSize; + private String external; } diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java new file mode 100644 index 000000000..1a5d85685 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/PartInfo.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + + +@Data +public class PartInfo { + private String partName; + private int reordCnt; + private int store; + private String createTime; + private String lastAccessTime; + private int fileCount; +} \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java new file mode 100644 index 000000000..f54a0e6cd --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/QueryType.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +public enum QueryType { + PRECISE(1), + FUZZY(0); + private int code; + + QueryType(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/RelatedObjectId.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/RelatedObjectId.java new file mode 100644 index 000000000..53437b59d --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/RelatedObjectId.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class RelatedObjectId { + private String guid; + public String relationshipGuid; + + public static RelatedObjectId from(String guid,String relationshipGuid){ + RelatedObjectId relatedObjectId = new RelatedObjectId(); + relatedObjectId.setGuid(guid); + relatedObjectId.setRelationshipGuid(relationshipGuid); + return relatedObjectId; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableColumnCount.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableColumnCount.java new file mode 100644 index 000000000..e5b20bf93 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableColumnCount.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class TableColumnCount { + private String dbName; + private String tblName; + private Long tblId; + private Integer columnCount; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableInfo.java new file mode 100644 index 000000000..8c971dc15 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableInfo.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + + +@Data +public class TableInfo { + private String tableName; + private String storage; +} \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TablePartitionSizeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TablePartitionSizeInfo.java new file mode 100644 index 000000000..fb5cb3441 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TablePartitionSizeInfo.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; + +@Data +public class TablePartitionSizeInfo { + private Long id; + private Long parId; + private Long lastAccessTime; + private Long sdId; + private String dbName; + private String tblName; + private String paramKey; + private String paramValue; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableSizeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableSizeInfo.java new file mode 100644 index 000000000..8355cdc54 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/TableSizeInfo.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class TableSizeInfo { + private Long id; + private String dbName; + private String tblName; + private String paramKey; + private String paramValue; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java new file mode 100644 index 000000000..8c302549d --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateLabelInfo.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + +import lombok.Data; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; + +@Data +public class UpdateLabelInfo { + private String name; + + private String guid; + + public static UpdateLabelInfo from(AtlasGlossaryTerm term) { + UpdateLabelInfo info = new UpdateLabelInfo(); + info.setName(term.getName()); + info.setGuid(term.getGuid()); + return info; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java new file mode 100644 index 000000000..8fc0ec1a0 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/entity/UpdateModelTypeInfo.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.entity; + + +import lombok.Data; + +@Data +public class UpdateModelTypeInfo { + private String name; + + private String guid; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DAOException.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DAOException.java new file mode 100644 index 000000000..9a5e54fe0 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DAOException.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.data.governance.exception; + + +import org.apache.linkis.common.exception.ErrorException; + +public class DAOException extends ErrorException { + + public DAOException(int errCode, String desc) { + super(errCode, desc); + } + + public DAOException(int errCode, String desc, String ip, int port, String serviceKind) { + super(errCode, desc, ip, port, serviceKind); + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DataGovernanceException.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DataGovernanceException.java new file mode 100644 index 000000000..b36fddd91 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/exception/DataGovernanceException.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.data.governance.exception; + + +import org.apache.linkis.common.exception.ErrorException; + +public class DataGovernanceException extends ErrorException { + + public DataGovernanceException(int errCode, String desc) { + super(errCode, desc); + } + + public DataGovernanceException(int errCode, String desc, String ip, int port, String serviceKind) { + super(errCode, desc, ip, port, serviceKind); + } + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/restful/DSSDataGovernanceAssetRestful.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/restful/DSSDataGovernanceAssetRestful.java new file mode 100644 index 000000000..364c367b9 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/restful/DSSDataGovernanceAssetRestful.java @@ -0,0 +1,467 @@ +package com.webank.wedatasphere.dss.data.governance.restful; + +import com.webank.wedatasphere.dss.data.governance.entity.*; +import com.webank.wedatasphere.dss.data.governance.service.AssetService; +import com.webank.wedatasphere.dss.data.governance.service.AuthenticationClientStrategy; +import com.webank.wedatasphere.dss.data.governance.service.WorkspaceInfoService; +import com.webank.wedatasphere.dss.data.governance.vo.*; +import com.webank.wedatasphere.dss.framework.workspace.client.impl.LinkisWorkSpaceRemoteClient; +import com.webank.wedatasphere.dss.framework.workspace.client.request.GetWorkspaceUsersAction; +import com.webank.wedatasphere.dss.framework.workspace.client.response.GetWorkspaceUsersResult; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.atlas.model.lineage.AtlasLineageInfo; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + + +@RequestMapping(path = "/data-assets/asset", produces = {"application/json"}) +@RestController +public class DSSDataGovernanceAssetRestful implements AuthenticationClientStrategy { + private static final Logger logger = LoggerFactory.getLogger(DSSDataGovernanceAssetRestful.class); + + private static final String DEFAULT_DIRECTION = "BOTH"; + private static final String DEFAULT_DEPTH = "3"; + private static final String DEFAULT_LIMIT = "25"; + private static final String DEFAULT_OFFSET = "0"; + + @Autowired + private AssetService assetService; + @Autowired + private WorkspaceInfoService workspaceInfoService; + + @Resource + private LinkisWorkSpaceRemoteClient linkisWorkSpaceRemoteClient; + + /** + * 获取数据资产概要:hivedb数、hivetable数据、总存储量 + */ + @RequestMapping(value = "/hiveSummary",method = RequestMethod.GET) + public Message getHiveSummary(HttpServletRequest req) throws Exception { + + return Message.ok().data("result", assetService.getHiveSummary()); + } + + @RequestMapping(value = "/getHiveDbsName",method = RequestMethod.GET) + public Message getHiveDbsName(HttpServletRequest req, + @RequestParam(value="limit",defaultValue = DEFAULT_LIMIT) int limit, + @RequestParam(value="offset",defaultValue = DEFAULT_OFFSET) int offset) throws Exception { + return Message.ok().data("result", assetService.getHiveDbsName(limit,offset)); + } + /** + * 搜索hive表 + */ + + @RequestMapping(value = "/hiveTbl/search",method = RequestMethod.GET) + public Message searchHiveTbl(@RequestParam(value = "classification",required = false) String classification, + @RequestParam(value="query",required = false) String query, + @RequestParam(value="label",required = false) String label, + @RequestParam(value="type",required = false) String type, + @RequestParam(value="precise",defaultValue = "0") int precise, + @RequestParam(value="owner",defaultValue = "") String owner, + @RequestParam(value="limit",defaultValue = DEFAULT_LIMIT) int limit, + @RequestParam(value="offset",defaultValue = DEFAULT_OFFSET) int offset) throws Exception { + + //适配模型 + if (ClassificationConstant.isTypeScope(type)) { + if (StringUtils.isNotBlank(classification)) { + classification = ClassificationConstant.getPrefix(type).orElse(null) + classification; + } else { + classification = ClassificationConstant.getRoot(type).orElse(null); + } + } + //适配标签 + if (!StringUtils.isBlank(label)){ + label = GlossaryConstant.LABEL.formatQuery(label); + } + //判断是否精确查询 + if (QueryType.PRECISE.getCode()!=precise){ + query = "*" + query + "*"; + } + List hiveTblBasicList = assetService.searchHiveTable(classification, query,label,limit, offset); + if (StringUtils.isBlank(owner) || owner.equals("undefined")|| CollectionUtils.isEmpty(hiveTblBasicList)) { + return Message.ok().data("result", hiveTblBasicList); + } else { + List res = new ArrayList<>(); + for (HiveTblSimpleInfo hiveTblSimpleInfo : hiveTblBasicList) { + if (hiveTblSimpleInfo.getOwner().equals(owner)) { + res.add(hiveTblSimpleInfo); + } + } + return Message.ok().data("result", res); + } + } + + /** + * 搜索hive表统计信息 + */ + @RequestMapping(value = "/hiveTbl/stats",method = RequestMethod.GET) + public Message searchHiveTblStats(@RequestParam(value="dbName",required = false) String dbName, + @RequestParam(value="tableName",required = false) String tableName, + @RequestParam(value="guid",required = false) String guid) throws Exception { + logger.info("searchHiveTblStats dbName : {}, tableName : {}, guid : {}", dbName, tableName, guid); + return Message.ok().data("result", assetService.hiveTblStats(dbName, tableName, guid)); + + } + + /** + * 搜索hive表容量 + */ + @RequestMapping(value = "/hiveTbl/size",method = RequestMethod.GET) + public Message searchHiveTblSize(@RequestParam(value="dbName",required = false) String dbName, + @RequestParam(value="tableName",required = false) String tableName, + @RequestParam(value="guid",required = false) String guid) throws Exception { + logger.info("searchHiveTblSize dbName : {}, tableName : {}, guid : {}", dbName, tableName, guid); + return Message.ok().data("result", assetService.hiveTblSize(dbName, tableName, guid)); + + } + + + /** + * 搜索hive库 + */ + @RequestMapping(value = "/hiveDb/search",method = RequestMethod.GET) + public Message searchHiveDb(@RequestParam(value="classification",required = false) String classification, + @RequestParam(value="query",required = false) String query, + @RequestParam(value="owner",defaultValue="")String owner, + @RequestParam(value="limit",defaultValue=DEFAULT_LIMIT) int limit, + @RequestParam(value="offset",defaultValue=DEFAULT_OFFSET) int offset) throws Exception { + + List hiveTblBasicList = assetService.searchHiveDb(classification, '*' + query + '*', limit, offset); + if (StringUtils.isBlank(owner) || owner.equals("undefined")) { + return Message.ok().data("result", hiveTblBasicList); + } else { + List res = new ArrayList<>(); + for (HiveTblSimpleInfo hiveTblSimpleInfo : hiveTblBasicList) { + if (hiveTblSimpleInfo.getOwner().equals(owner)) { + res.add(hiveTblSimpleInfo); + } + } + return Message.ok().data("result", res); + } + } + + /** + * 获取单个表的详细信息,包括:基本信息、字段信息 + */ + @RequestMapping(value = "/hiveTbl/{guid}/basic",method = RequestMethod.GET) + public Message getHiveTblBasic(@PathVariable("guid") String guid) throws Exception { + return Message.ok().data("result", assetService.getHiveTblDetail(guid)); + } + + /** + * 获取表分区信息 + */ + @RequestMapping(value = "/hiveTbl/{guid}/partition",method = RequestMethod.GET) + public Message getHiveTblPartition(@PathVariable("guid") String guid) throws Exception { + List hiveTblPartition = assetService.getHiveTblPartition(guid); + if (hiveTblPartition.size() > 0) { + return Message.ok().data("result", hiveTblPartition); + } else { + return Message.ok().data("result", null); + } + } + + /** + * 根据表名获取表分区信息 + */ + @RequestMapping(value = "/hiveTbl/partition/name",method = RequestMethod.GET) + public Message getHiveTblPartitionByName(@RequestParam("dbName") String dbName,@RequestParam("tableName") String tableName) throws Exception { + logger.info("getHiveTblPartitionByName dbName : {}, tableName : {}", dbName, tableName); + List hiveTblPartition = assetService.getHiveTblPartitionByName(dbName,tableName); + return Message.ok().data("result", hiveTblPartition); + } + + /** + * 获取表的血缘信息 + */ + @RequestMapping(value = "/hiveTbl/{guid}/lineage",method = RequestMethod.GET) + public Message getHiveTblLineage(@PathVariable("guid") String guid, + @RequestParam(value="direction",defaultValue =DEFAULT_DIRECTION ) AtlasLineageInfo.LineageDirection direction, + @RequestParam(value="depth",defaultValue = DEFAULT_DEPTH) int depth) throws Exception { + return Message.ok().data("result", assetService.getHiveTblLineage(guid, direction, depth)); + } + + /** + * 获取表的select语句 + */ + @RequestMapping(value = "/hiveTbl/{guid}/select",method = RequestMethod.GET) + public Message getHiveTblSelect(@PathVariable("guid") String guid) throws Exception { + + + return Message.ok().data("result", assetService.getTbSelect(guid)); + + } + + /** + * 获取表的create语句 + */ + @RequestMapping(value = "/hiveTbl/{guid}/create",method = RequestMethod.GET) + public Message getHiveTblCreate(@PathVariable("guid") String guid) throws Exception { + return Message.ok().data("result", assetService.getTbCreate(guid)); + + } + + /** + * 获取存储量前10的表信息 + */ + @RequestMapping(value = "/hiveTbl/topStorage",method = RequestMethod.GET) + public Message getTop10Storage(HttpServletRequest req) throws Exception { + List top10Table = assetService.getTop10Table(); + return Message.ok().data("result", top10Table); + } + + /** + * 修改单个表或单个列注释 + */ + + @RequestMapping(value = "/comment/{guid}",method = RequestMethod.PUT) + public Message modifyComment(@PathVariable("guid") String guid,@RequestParam("comment") String comment) throws Exception { + comment = "\"" + comment + "\""; + assetService.modifyComment(guid, comment); + return Message.ok().data("result", "修改成功"); + } + + /** + * 批量修改多个个表或列注释 + */ + @RequestMapping(value = "/comment/bulk",method = RequestMethod.PUT) + public Message modifyComment(@RequestBody Map commentMap) throws Exception { + for (Map.Entry stringStringEntry : commentMap.entrySet()) { + stringStringEntry.setValue("\"" + stringStringEntry.getValue() + "\""); + } + assetService.bulkModifyComment(commentMap); + return Message.ok().data("result", "修改成功"); + } + + /** + * 创建模型 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/model/type",method = RequestMethod.POST) + public Message createModelType(HttpServletRequest req, @RequestBody CreateModelTypeVO vo) throws Exception { + logger.info("createModelType : {}", vo); + return Message.ok().data("result", assetService.createModelType(vo)); + } + + /** + * 删除模型 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/model/type/delete",method = RequestMethod.POST) + public Message deleteModelType(HttpServletRequest req, @RequestBody DeleteModelTypeVO vo) throws Exception { + logger.info("deleteModelTypeVO : {}", vo); + assetService.deleteModelType(vo); + return Message.ok().data("result", "删除成功"); + } + + + /** + * 绑定模型 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/model/bind",method = RequestMethod.POST) + public Message bindModelType(HttpServletRequest req, @RequestBody BindModelVO vo) throws Exception { + logger.info("bindModelVO : {}", vo); + assetService.bindModelType(vo); + return Message.ok().data("result", "绑定成功"); + } + + /** + * 解绑模型 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/model/unbind",method = RequestMethod.POST) + public Message unBindModelType(HttpServletRequest req, @RequestBody UnBindModelVO vo) throws Exception { + logger.info("unBindModelVO : {}", vo); + assetService.unBindModel(vo); + return Message.ok().data("result", "解绑成功"); + } + + + /** + * 更新模型 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/model/type/modify",method = RequestMethod.POST) + public Message updateModelType(HttpServletRequest req, @RequestBody UpdateModelTypeVO vo) throws Exception { + logger.info("updateModelTypeVO : {}", vo); + return Message.ok().data("result", assetService.updateModelType(vo)); + } + + /** + * 创建标签 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels",method = RequestMethod.POST) + public Message createLabel(HttpServletRequest req, @RequestBody CreateLabelVO vo) throws Exception { + logger.info("createLabel vo : {}", vo); + return Message.ok().data("result", assetService.createLabel(vo)); + } + + /** + * 更新标签 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels/modify",method = RequestMethod.POST) + public Message updateLabel(HttpServletRequest req, @RequestBody UpdateLabelVO vo) throws Exception { + logger.info("updateLabel vo : {}", vo); + return Message.ok().data("result", assetService.updateLabel(vo)); + } + + /** + * 删除标签 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels/delete",method = RequestMethod.POST) + public Message deleteLabel(HttpServletRequest req, @RequestBody DeleteLabelVO vo) throws Exception { + logger.info("deleteLabel vo : {}", vo); + assetService.deleteLabel(vo); + return Message.ok().data("result", "删除成功"); + } + + /** + * 实体绑定标签 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels/bind",method = RequestMethod.POST) + public Message bindLabel(HttpServletRequest req, @RequestBody BindLabelVO vo) throws Exception { + logger.info("bindLabel vo : {}", vo); + assetService.bindLabel(vo); + return Message.ok().data("result", "绑定成功"); + } + + + /** + * 实体解绑标签 + * + * @param req + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels/unbind",method = RequestMethod.POST) + public Message unBindLabel(HttpServletRequest req, @RequestBody UnBindLabelVO vo) throws Exception { + logger.info("unBindLabel vo : {}", vo); + assetService.unBindLabel(vo); + return Message.ok().data("result", "解绑成功"); + } + + + /** + * 搜索标签 + * + * @param req + * @param query + * @return + * @throws Exception + */ + @RequestMapping(value = "/labels/search",method = RequestMethod.GET) + public Message searchLabel(HttpServletRequest req + ,@RequestParam(value="query",required = false) String query + ,@RequestParam(value="limit",defaultValue = DEFAULT_LIMIT) int limit + ,@RequestParam(value = "offset",defaultValue =DEFAULT_OFFSET ) int offset) throws Exception { + logger.info("searchLabel query : {}", query); + return Message.ok().data("result",assetService.listLabels(query,limit,offset)); + } + + /** + * 设置单个表或单个列的标签 + */ + @RequestMapping(value = "/label/{guid}",method = RequestMethod.POST) + public Message setLabels(@PathVariable("guid") String guid, @RequestBody Set labels) throws Exception { + logger.info("setLabels guid : {}, labels : {}", guid, labels); + assetService.setLabels(guid, labels); + + return Message.ok().data("result", "设置成功"); + } + + /** + * 获取工作空间下所有用户名 + */ + + @RequestMapping(value = "/getWorkspaceUsers/{workspaceId}/{search}",method = RequestMethod.GET) + public Message getWorkspaceUsers(@PathVariable("workspaceId") int workspaceId, @PathVariable("search") String search) throws Exception { + String searchs = "%" + search + "%"; + List workspaceUsers = workspaceInfoService.getWorkspaceUsers(workspaceId, searchs); + return Message.ok().data("result", workspaceUsers); + + } + + /** + * 查询用户 + * + * @param req + * @param workspaceId + * @return + */ + @RequestMapping(value = "/users/{workspaceId}",method = RequestMethod.GET) + public Message users(HttpServletRequest req, @PathVariable("workspaceId") String workspaceId) throws ErrorException { + logger.info("users workspaceId : {}", workspaceId); + GetWorkspaceUsersResult result = linkisWorkSpaceRemoteClient.getWorkspaceUsers(GetWorkspaceUsersAction.builder().setUser(getStrategyUser(req)).setWorkspaceId(workspaceId).build()); + return Message.ok().data("users", result.getWorkspaceUserList()); + } + + + /** + * 查询角色 + * + * @param req + * @param workspaceId + * @return + */ + @RequestMapping(value = "/roles/{workspaceId}",method = RequestMethod.GET) + public Message roles(HttpServletRequest req, @PathVariable("workspaceId") String workspaceId) throws ErrorException { + logger.info("roles workspaceId : {}", workspaceId); + GetWorkspaceUsersResult result = linkisWorkSpaceRemoteClient.getWorkspaceUsers(GetWorkspaceUsersAction.builder().setUser(getStrategyUser(req)).setWorkspaceId(workspaceId).build()); + return Message.ok().data("users", result.getWorkspaceRoleList()); + } + + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AssetService.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AssetService.java new file mode 100644 index 000000000..7ccdb2692 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AssetService.java @@ -0,0 +1,173 @@ +package com.webank.wedatasphere.dss.data.governance.service; + + +import com.google.gson.JsonObject; +import com.webank.wedatasphere.dss.data.governance.dto.HiveTblStatsDTO; +import com.webank.wedatasphere.dss.data.governance.dto.SearchLabelDTO; +import com.webank.wedatasphere.dss.data.governance.entity.*; +import com.webank.wedatasphere.dss.data.governance.exception.DAOException; +import com.webank.wedatasphere.dss.data.governance.exception.DataGovernanceException; +import com.webank.wedatasphere.dss.data.governance.vo.*; +import org.apache.atlas.AtlasServiceException; +import org.apache.atlas.model.lineage.AtlasLineageInfo; + +import java.sql.SQLException; +import java.util.List; +import java.util.Map; +import java.util.Set; + + +public interface AssetService { + public Map getHiveSummary() throws DataGovernanceException; + + public String getHiveDbsName(Integer limit, Integer offset) throws AtlasServiceException; + + public List searchHiveTable(String classification, String query,String termName, + int limit, int offset) throws DataGovernanceException; + + public List searchHiveDb(String classification, String query, + int limit, int offset) throws DataGovernanceException; + + public HiveTblDetailInfo getHiveTblDetail(String guid) throws DataGovernanceException ; + + public List getHiveTblPartition(String guid) throws DataGovernanceException; + + public String getTbSelect(String guid) throws DataGovernanceException; + + public String getTbCreate(String guid) throws DataGovernanceException; + + public void modifyComment(String guid, String commentStr) throws DataGovernanceException ; + + public void bulkModifyComment(Map commentMap) throws DataGovernanceException ; + + public void setLabels(String guid, Set labels) throws DataGovernanceException; + + /** + * 获取表实体的血缘信息 + */ + public AtlasLineageInfo getHiveTblLineage(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws DataGovernanceException; + + public List getTop10Table () throws DataGovernanceException, SQLException, DAOException; + + + /** + * 创建模型 + * @param vo + * @return + */ + CreateModelTypeInfo createModelType(CreateModelTypeVO vo) throws DataGovernanceException, AtlasServiceException; + + + /** + * 删除模型 + * @param vo + * @throws Exception + */ + void deleteModelType(DeleteModelTypeVO vo) throws Exception; + + + + /** + * 更新模型 + * @param vo + * @return + */ + UpdateModelTypeInfo updateModelType(UpdateModelTypeVO vo) throws Exception; + + + /** + * 绑定模型 + * @param vo + * @throws Exception + */ + void bindModelType(BindModelVO vo) throws Exception; + + + /** + * 解绑模型 + * @param vo + * @throws Exception + */ + void unBindModel(UnBindModelVO vo) throws Exception; + + + + /** + * 表统计信息 + * @param dbName + * @param tableName + * @param guid + * @return + */ + HiveTblStatsDTO hiveTblStats(String dbName, String tableName, String guid) throws AtlasServiceException, Exception; + + + /** + * 表统计信息 + * @param dbName + * @param tableName + * @param guid + * @return + */ + Long hiveTblSize(String dbName, String tableName, String guid) throws Exception; + + + /** + * 新建标签 + * @param vo + * @return + * @throws Exception + */ + CreateLabelInfo createLabel(CreateLabelVO vo) throws Exception; + + + /** + * 删除标签 + * @param vo + * @return + * @throws Exception + */ + void deleteLabel(DeleteLabelVO vo) throws Exception; + + + /** + * 删除标签 + * @param vo + * @return + * @throws Exception + */ + UpdateLabelInfo updateLabel(UpdateLabelVO vo) throws Exception; + + + /** + * 绑定标签 + * @param vo + * @throws Exception + */ + void bindLabel(BindLabelVO vo) throws Exception; + + + /** + * 解绑实体 + * @param vo + * @throws Exception + */ + void unBindLabel(UnBindLabelVO vo) throws Exception; + + /** + * 标签搜索列表 + * @param query + * @param limit + * @param offset + * @return + */ + List listLabels(String query, Integer limit, Integer offset) throws AtlasServiceException, Exception; + /* + * 根据名称查询分区 + * @param name + * @return + * @throws Exception + */ + List getHiveTblPartitionByName(String dbName, String tableName) throws Exception; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AuthenticationClientStrategy.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AuthenticationClientStrategy.java new file mode 100644 index 000000000..4e478e6a2 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/AuthenticationClientStrategy.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.data.governance.service; + + + +import com.webank.wedatasphere.dss.data.governance.conf.ClientStrategy; +import org.apache.linkis.common.conf.CommonVars; +import org.apache.linkis.server.security.SecurityFilter; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; + +public interface AuthenticationClientStrategy { + + CommonVars CLIENT_STRATEGY = CommonVars.apply("wds.wedatasphere.data.assert.client.strategy", ""); + + default String getStrategyUser(HttpServletRequest req){ + if (StringUtils.equals(ClientStrategy.TOKEN.getCode(),CLIENT_STRATEGY.getValue())){ + return SecurityFilter.getLoginUsername(req); + } + return "hadoop"; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/WorkspaceInfoService.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/WorkspaceInfoService.java new file mode 100644 index 000000000..2cd9e4344 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/WorkspaceInfoService.java @@ -0,0 +1,31 @@ +/* + * + * * Copyright 2019 WeBank + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + */ + +package com.webank.wedatasphere.dss.data.governance.service; + + +import com.webank.wedatasphere.dss.data.governance.exception.DataGovernanceException; + +import java.util.List; + + +public interface WorkspaceInfoService { + + public List getWorkspaceUsers(int workspaceId,String search) throws DataGovernanceException; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/AssetServiceImpl.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/AssetServiceImpl.java new file mode 100644 index 000000000..0b57e7aa1 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/AssetServiceImpl.java @@ -0,0 +1,847 @@ +package com.webank.wedatasphere.dss.data.governance.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.gson.JsonObject; +import com.google.gson.internal.LinkedTreeMap; +import com.webank.wedatasphere.dss.data.governance.atlas.AtlasService; +import com.webank.wedatasphere.dss.data.governance.dao.*; +import com.webank.wedatasphere.dss.data.governance.dao.impl.MetaInfoMapperImpl; +import com.webank.wedatasphere.dss.data.governance.dto.HiveTblStatsDTO; +import com.webank.wedatasphere.dss.data.governance.dto.SearchLabelDTO; +import com.webank.wedatasphere.dss.data.governance.entity.*; +import com.webank.wedatasphere.dss.data.governance.exception.DAOException; +import com.webank.wedatasphere.dss.data.governance.exception.DataGovernanceException; +import com.webank.wedatasphere.dss.data.governance.service.AssetService; +import com.webank.wedatasphere.dss.data.governance.utils.DateUtil; +import com.webank.wedatasphere.dss.data.governance.vo.*; +import org.apache.atlas.AtlasServiceException; +import org.apache.atlas.model.glossary.AtlasGlossaryTerm; +import org.apache.atlas.model.glossary.relations.AtlasTermAssignmentHeader; +import org.apache.atlas.model.instance.AtlasEntity; +import org.apache.atlas.model.instance.AtlasEntityHeader; +import org.apache.atlas.model.instance.AtlasStruct; +import org.apache.atlas.model.lineage.AtlasLineageInfo; +import org.apache.atlas.model.typedef.AtlasClassificationDef; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + + +@Service +public class AssetServiceImpl implements AssetService { + private static final Logger logger = LoggerFactory.getLogger(AssetServiceImpl.class); + private AtlasService atlasService; + private MetaInfoMapper metaInfoMapper; + private WorkspaceInfoMapper workspaceInfoMapper; + + @Resource + private TableColumnCountQueryMapper tableColumnCountQueryMapper; + + @Resource + private TableSizeInfoMapper tableSizeInfoMapper; + + @Resource + private TableSizePartitionInfoMapper tableSizePartitionInfoMapper; + + public AssetServiceImpl(AtlasService atlasService) { + this.atlasService = atlasService; + this.metaInfoMapper = new MetaInfoMapperImpl(); + } + + @Override + public Map getHiveSummary() throws DataGovernanceException { + try { + Map result = new HashMap<>(); + + result.put("hiveDb", atlasService.getHiveDbCnt()); + result.put("hiveTable", atlasService.getHiveTableCnt()); + result.put("hiveStore", metaInfoMapper.getTableStorage()); + + return result; + } catch (AtlasServiceException | DAOException exception) { + throw new DataGovernanceException(23000, exception.getMessage()); + } + } + + @Override + public String getHiveDbsName(Integer limit, Integer offset) throws AtlasServiceException { + return atlasService.getHiveDbsName(limit,offset); + } + @Override + public CreateModelTypeInfo createModelType(CreateModelTypeVO vo) throws DataGovernanceException { + if (!ClassificationConstant.isTypeScope(vo.getType())) { + throw new DataGovernanceException(23000, "不支持此类型" + vo.getType()); + } + try { + AtlasClassificationDef atlasClassificationDef = atlasService.createSubClassification(ClassificationConstant.formatName(vo.getType(), vo.getName()).get(), ClassificationConstant.getRoot(vo.getType()).get()); + CreateModelTypeInfo dto = new CreateModelTypeInfo(); + dto.setGuid(atlasClassificationDef.getGuid()); + dto.setName(atlasClassificationDef.getName()); + return dto; + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + + @Override + public void deleteModelType(DeleteModelTypeVO vo) throws Exception { + if (!ClassificationConstant.isTypeScope(vo.getType())) { + throw new DataGovernanceException(23000, "不支持此类型" + vo.getType()); + } + try { + atlasService.deleteClassification(ClassificationConstant.formatName(vo.getType(), vo.getName()).get()); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public UpdateModelTypeInfo updateModelType(UpdateModelTypeVO vo) throws Exception { + if (!ClassificationConstant.isTypeScope(vo.getType())) { + throw new DataGovernanceException(23000, "不支持此类型" + vo.getType()); + } + String newName = ClassificationConstant.formatName(vo.getType(), vo.getName()).get(); + String root = ClassificationConstant.getRoot(vo.getType()).get(); + String orgName = ClassificationConstant.formatName(vo.getType(), vo.getOrgName()).get(); + AtlasClassificationDef atlasClassificationDef = null; + //首先尝试创建 + try { + atlasClassificationDef = atlasService.createSubClassification(newName, root); + } catch (AtlasServiceException ex) { + //创建失败直接回退 + throw new DataGovernanceException(23000, ex.getMessage()); + } + + //尝试原类型 + try { + atlasService.deleteClassification(orgName); + } catch (AtlasServiceException ex) { + //回滚删除创建的新类型 + try { + atlasService.deleteClassification(newName); + } catch (AtlasServiceException ex1) { + throw new DataGovernanceException(23000, ex1.getMessage()); + } + throw new DataGovernanceException(23000, ex.getMessage()); + } + UpdateModelTypeInfo info = new UpdateModelTypeInfo(); + info.setGuid(atlasClassificationDef.getGuid()); + info.setName(atlasClassificationDef.getName()); + return info; + } + + + @Override + public void bindModelType(BindModelVO vo) throws Exception { + if (!ClassificationConstant.isTypeScope(vo.getModelType())) { + throw new DataGovernanceException(23000, "不支持此类型" + vo.getModelType()); + } + String tableGuid = vo.getGuid(); + + if (StringUtils.isBlank(tableGuid)) { + tableGuid = getGuid(vo.getTableName()); + } + + try { + atlasService.addClassification(ClassificationConstant.formatName(vo.getModelType(), vo.getModelName()).get(), tableGuid, false); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + + } + + @Override + public void unBindModel(UnBindModelVO vo) throws Exception { + if (!ClassificationConstant.isTypeScope(vo.getModelType())) { + throw new DataGovernanceException(23000, "不支持此类型" + vo.getModelType()); + } + String tableGuid = vo.getGuid(); + + if (StringUtils.isBlank(tableGuid)) { + tableGuid = getGuid(vo.getTableName()); + } + + try { + atlasService.deleteClassification(tableGuid, ClassificationConstant.formatName(vo.getModelType(), vo.getModelName()).get()); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + + } + + private String getGuid(String tableName) throws DataGovernanceException { + + //首先搜索指定表,查找guid + List atlasEntityHeaders = null; + try { + atlasEntityHeaders = atlasService.searchHiveTable0(null, tableName, null,true, 1, 0); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + if (CollectionUtils.isEmpty(atlasEntityHeaders)) { + throw new DataGovernanceException(23000, "table " + tableName + " not find"); + } + + if (atlasEntityHeaders.size() > 1) { + throw new DataGovernanceException(23000, "table " + tableName + " duplicate " + atlasEntityHeaders); + } + return atlasEntityHeaders.get(0).getGuid(); + } + + @Override + public List searchHiveTable(String classification, String query, String termName, + int limit, int offset) throws DataGovernanceException { + List atlasEntityHeaders = null; + try { + atlasEntityHeaders = atlasService.searchHiveTable0(classification, query, termName,true, limit, offset); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + + if (atlasEntityHeaders != null) { + return atlasEntityHeaders.parallelStream().map(atlasEntityHeader -> { + HiveTblSimpleInfo hiveTblBasic = new HiveTblSimpleInfo(); + hiveTblBasic.setGuid(atlasEntityHeader.getGuid()); + hiveTblBasic.setName(atlasEntityHeader.getAttribute("name").toString()); + hiveTblBasic.setQualifiedName(atlasEntityHeader.getAttribute("qualifiedName").toString()); + hiveTblBasic.setOwner(atlasEntityHeader.getAttribute("owner").toString()); + Object createTime = atlasEntityHeader.getAttribute("createTime"); + if (createTime != null) { + hiveTblBasic.setCreateTime(DateUtil.unixToTimeStr((Double) createTime)); + } + hiveTblBasic.setClassifications(atlasEntityHeader.getClassificationNames()); + + Object comment = atlasEntityHeader.getAttribute("comment"); + if (comment != null) { + hiveTblBasic.setComment(comment.toString()); + } + + Object aliases = atlasEntityHeader.getAttribute("aliases"); + if (aliases != null) { + hiveTblBasic.setAliases(aliases.toString()); + } + + Object lastAccessTime = atlasEntityHeader.getAttribute("lastAccessTime"); + if (lastAccessTime != null) { + hiveTblBasic.setLastAccessTime(DateUtil.unixToTimeStr((Double) lastAccessTime)); + } + + Object parameters = atlasEntityHeader.getAttribute("parameters"); + if (parameters != null) { + Map mapParameters = (Map) parameters; + Object totalSize = mapParameters.get("totalSize"); + if (totalSize != null) { + hiveTblBasic.setTotalSize(totalSize.toString()); + } + } + + return hiveTblBasic; + }).collect(Collectors.toList()); + } + return null; + } + + @Override + public List searchHiveDb(String classification, String query, int limit, int offset) throws DataGovernanceException { + List atlasEntityHeaders = null; + try { + atlasEntityHeaders = atlasService.searchHiveDb(classification, query, true, limit, offset); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + + if (atlasEntityHeaders != null) { + return atlasEntityHeaders.parallelStream().map(atlasEntityHeader -> { + HiveTblSimpleInfo hiveTblBasic = new HiveTblSimpleInfo(); + hiveTblBasic.setGuid(atlasEntityHeader.getGuid()); + hiveTblBasic.setName(atlasEntityHeader.getAttribute("name").toString()); + hiveTblBasic.setQualifiedName(atlasEntityHeader.getAttribute("qualifiedName").toString()); + hiveTblBasic.setOwner(atlasEntityHeader.getAttribute("owner").toString()); + + + Object createTime = atlasEntityHeader.getAttribute("createTime"); + if (createTime != null) { + hiveTblBasic.setCreateTime(DateUtil.unixToTimeStr((Double) createTime)); + } + + + return hiveTblBasic; + }).collect(Collectors.toList()); + } + return null; + } + + @Override + public HiveTblDetailInfo getHiveTblDetail(String guid) throws DataGovernanceException { + try { + HiveTblDetailInfo hiveTblDetailInfo = new HiveTblDetailInfo(); + + AtlasEntity atlasEntity = atlasService.getHiveTbl(guid); + Map hiveTblNameAndIsPartById = atlasService.getHiveTblNameAndIsPartById(guid); + Boolean isPartTable = (Boolean) hiveTblNameAndIsPartById.get("isPartition"); + int storage = 0; + String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; + String tableName = db_name.split("\\.")[1]; + String dbName = db_name.split("\\.")[0]; + try { + storage = metaInfoMapper.getTableInfo(dbName, tableName, isPartTable); + } catch (DAOException e) { + e.printStackTrace(); + } + List guids = new ArrayList<>(); + List> columns = (List>) atlasEntity.getAttributes().get("columns"); + for (LinkedTreeMap column : columns) { + guids.add(column.get("guid")); + } + List hiveColumnInfos = new ArrayList<>(); + if (guids.size() > 0) { + List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); + for (AtlasEntity hiveColumnsByGuid : hiveColumnsByGuids) { + HiveTblDetailInfo.HiveColumnInfo hiveColumnInfo = new HiveTblDetailInfo.HiveColumnInfo(); + hiveColumnInfo.setName(String.valueOf(hiveColumnsByGuid.getAttributes().get("name"))); + hiveColumnInfo.setType(String.valueOf(hiveColumnsByGuid.getAttributes().get("type"))); + hiveColumnInfo.setComment(String.valueOf(hiveColumnsByGuid.getAttributes().get("comment"))); + hiveColumnInfo.setGuid(hiveColumnsByGuid.getGuid()); + hiveColumnInfos.add(hiveColumnInfo); + } + } + List partguids = new ArrayList<>(); + List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); + for (LinkedTreeMap column : partitionKeys) { + partguids.add(column.get("guid")); + } + List partitionColumns = new ArrayList<>(); + if (partguids.size() > 0) { + List hivePartColumnsByGuids = atlasService.getHiveColumnsByGuids(partguids); + for (AtlasEntity hiveColumnsByGuid : hivePartColumnsByGuids) { + HiveTblDetailInfo.HiveColumnInfo hiveColumnInfo = new HiveTblDetailInfo.HiveColumnInfo(); + hiveColumnInfo.setName(String.valueOf(hiveColumnsByGuid.getAttributes().get("name"))); + hiveColumnInfo.setType(String.valueOf(hiveColumnsByGuid.getAttributes().get("type"))); + hiveColumnInfo.setComment(String.valueOf(hiveColumnsByGuid.getAttributes().get("comment"))); + hiveColumnInfo.setGuid(hiveColumnsByGuid.getGuid()); + partitionColumns.add(hiveColumnInfo); + } + } + HiveTblDetailInfo.HiveTblBasicInfo basic = new HiveTblDetailInfo.HiveTblBasicInfo(); + basic.setName(tableName); + basic.setQualifiedName(atlasEntity.getAttribute("qualifiedName").toString()); + basic.setOwner(String.valueOf(atlasEntity.getAttributes().get("owner"))); + basic.setCreateTime(new java.text.SimpleDateFormat("yyyy MM-dd HH:mm:ss").format(atlasEntity.getCreateTime())); + basic.setStore(String.valueOf(storage)); + //设置标签 + Set labels = Sets.newHashSet(); + List> meanings =(List>) atlasEntity.getRelationshipAttributes().get("meanings"); + if (!CollectionUtils.isEmpty(meanings)) { + labels = meanings.stream() + .filter(label->isLabel(label.get("guid"))) + .map(label->(label.get("displayText"))) + .collect(Collectors.toSet()); + } + basic.setLabels(labels); + basic.setIsParTbl(isPartTable); + basic.setGuid(guid); + + if (!CollectionUtils.isEmpty(atlasEntity.getClassifications())) { + basic.setClassifications(atlasEntity.getClassifications().stream().map(AtlasStruct::getTypeName).collect(Collectors.toList())); + } + Object comment = atlasEntity.getAttribute("comment"); + if (comment != null) { + basic.setComment(comment.toString()); + } + + Object aliases = atlasEntity.getAttribute("aliases"); + if (aliases != null) { + basic.setAliases(aliases.toString()); + } + + Object lastAccessTime = atlasEntity.getAttribute("lastAccessTime"); + if (lastAccessTime != null) { + basic.setLastAccessTime(DateUtil.unixToTimeStr((Double) lastAccessTime)); + } + + Object parameters = atlasEntity.getAttribute("parameters"); + if (parameters != null) { + Map mapParameters = (Map) parameters; + Object totalSize = mapParameters.get("totalSize"); + if (totalSize != null) { + basic.setTotalSize(totalSize.toString()); + } + + } + + Object external = atlasEntity.getAttribute("tableType"); + if (external != null) { + basic.setExternal(external.toString()); + } + + + hiveTblDetailInfo.setColumns(hiveColumnInfos); + hiveTblDetailInfo.setBasic(basic); + hiveTblDetailInfo.setPartitionKeys(partitionColumns); + + + return hiveTblDetailInfo; + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public List getHiveTblPartition(String guid) throws DataGovernanceException { + try { + AtlasEntity atlasEntity = atlasService.getHiveTbl(guid); + String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; + return getPartInfos(db_name); + + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + private List getPartInfos(String db_name) { + String tableName = db_name.split("\\.")[1]; + String dbName = db_name.split("\\.")[0]; + List partInfo = new ArrayList<>(); + try { + partInfo = metaInfoMapper.getPartInfo(dbName, tableName); + } catch (DAOException e) { + e.printStackTrace(); + } + return partInfo; + } + + @Override + public String getTbSelect(String guid) throws DataGovernanceException { + try { + AtlasEntity atlasEntity = atlasService.getHiveTbl(guid); + String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; + String tableName = db_name.split("\\.")[1]; + List guids = new ArrayList<>(); + List> columns = (List>) atlasEntity.getAttributes().get("columns"); + for (LinkedTreeMap column : columns) { + guids.add(column.get("guid")); + } + List fields = new ArrayList<>(); + List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); + for (AtlasEntity hiveColumnsByGuid : hiveColumnsByGuids) { + fields.add((String) hiveColumnsByGuid.getAttributes().get("name")); + } + Map hiveTblNameAndIsPartById = atlasService.getHiveTblNameAndIsPartById(guid); + Boolean isPartTable = (Boolean) hiveTblNameAndIsPartById.get("isPartition"); + if (isPartTable == true) { + List partguids = new ArrayList<>(); + List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); + for (LinkedTreeMap column : partitionKeys) { + partguids.add(column.get("guid")); + } + List hiveColumnsByGuids1 = atlasService.getHiveColumnsByGuids(partguids); + for (AtlasEntity entity : hiveColumnsByGuids1) { + fields.add((String) entity.getAttributes().get("name")); + } + } + StringBuilder sql = new StringBuilder(); + sql.append("SELECT @$ "); + for (int i = 0; i < fields.size() - 1; i++) { + sql.append(fields.get(i)).append(", @$ "); + } + sql.append(fields.get(fields.size() - 1)).append(" @$ from ").append(tableName); + return sql.toString(); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public String getTbCreate(String guid) throws DataGovernanceException { + try { + StringBuilder sql = new StringBuilder(); + AtlasEntity atlasEntity = atlasService.getHiveTbl(guid); + String db_name = String.valueOf(atlasEntity.getAttributes().get("qualifiedName")).split("@")[0]; + String tableName = db_name.split("\\.")[1]; + List guids = new ArrayList<>(); + List> columns = (List>) atlasEntity.getAttributes().get("columns"); + for (LinkedTreeMap column : columns) { + guids.add(column.get("guid")); + } + sql.append("CREATE TABLE IF NOT EXISTS ").append(tableName).append(" @$ ( @$ "); + List fields = new ArrayList<>(); + List hiveColumnsByGuids = atlasService.getHiveColumnsByGuids(guids); + for (int i = 0; i < hiveColumnsByGuids.size(); i++) { + if (i < hiveColumnsByGuids.size() - 1) { + AtlasEntity hiveColumnsByGuid = hiveColumnsByGuids.get(i); + StringBuilder sb = new StringBuilder(); + sb.append((String) hiveColumnsByGuid.getAttributes().get("name")).append(" ").append((String) hiveColumnsByGuid.getAttributes().get("type")); + if (hiveColumnsByGuid.getAttributes().get("comment") == null) { + sb.append(", "); + } else { + sb.append(" COMMENT '").append(hiveColumnsByGuid.getAttributes().get("comment")).append("',"); + } + fields.add(sb.append(" @$ ").toString()); + } else { + AtlasEntity hiveColumnsByGuid = hiveColumnsByGuids.get(i); + StringBuilder sb = new StringBuilder(); + sb.append((String) hiveColumnsByGuid.getAttributes().get("name")).append(" ").append((String) hiveColumnsByGuid.getAttributes().get("type")); + if (hiveColumnsByGuid.getAttributes().get("comment") == null) { + sb.append(" "); + } else { + sb.append(" COMMENT '").append(hiveColumnsByGuid.getAttributes().get("comment")).append("' "); + } + fields.add(sb.append(" @$ ").toString()); + } + } + for (String field : fields) { + sql.append(field); + } + sql.append(") @$ "); + Map hiveTblNameAndIsPartById = atlasService.getHiveTblNameAndIsPartById(guid); + Boolean isPartTable = (Boolean) hiveTblNameAndIsPartById.get("isPartition"); + if (isPartTable == true) { + sql.append("PARTITIONED BY @$ ( @$ "); + List partguids = new ArrayList<>(); + List> partitionKeys = (List>) atlasEntity.getAttributes().get("partitionKeys"); + for (LinkedTreeMap column : partitionKeys) { + partguids.add(column.get("guid")); + } + List keyFields = new ArrayList<>(); + List hiveColumnsByGuids1 = atlasService.getHiveColumnsByGuids(partguids); + for (int i = 0; i < hiveColumnsByGuids1.size(); i++) { + if (i < hiveColumnsByGuids1.size() - 1) { + AtlasEntity entity = hiveColumnsByGuids1.get(i); + StringBuilder sb = new StringBuilder(); + sb.append((String) entity.getAttributes().get("name")).append(" ").append((String) entity.getAttributes().get("type")); + if (entity.getAttributes().get("comment") == null) { + sb.append(", "); + } else { + sb.append(" COMMENT '").append(entity.getAttributes().get("comment")).append("', "); + } + keyFields.add(sb.append(" @$ ").toString()); + } else { + AtlasEntity entity = hiveColumnsByGuids1.get(i); + StringBuilder sb = new StringBuilder(); + sb.append((String) entity.getAttributes().get("name")).append(" ").append((String) entity.getAttributes().get("type")); + if (entity.getAttributes().get("comment") == null) { + sb.append(" "); + } else { + sb.append(" COMMENT '").append(entity.getAttributes().get("comment")).append("' "); + } + keyFields.add(sb.append(" @$ ").toString()); + } + } + for (int i = 0; i < keyFields.size(); i++) { + sql.append(keyFields.get(i)); + } + sql.append(")"); + } + sql.append(")"); + return sql.toString(); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public void modifyComment(String guid, String commentStr) throws DataGovernanceException { + try { + atlasService.modifyComment(guid, commentStr); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public void bulkModifyComment(Map commentMap) throws DataGovernanceException { + commentMap.keySet().forEach(key -> { + try { + atlasService.modifyComment(key, commentMap.get(key)); + } catch (AtlasServiceException ex) { + + } + }); + } + + @Override + public void setLabels(String guid, Set labels) throws DataGovernanceException { + try { + atlasService.setLabels(guid, labels); + } catch (AtlasServiceException ex) { + throw new DataGovernanceException(23000, ex.getMessage()); + } + } + + @Override + public AtlasLineageInfo getHiveTblLineage(final String guid, final AtlasLineageInfo.LineageDirection direction, final int depth) throws DataGovernanceException { + try { + return atlasService.getLineageInfo(guid, direction, depth); + } catch (AtlasServiceException exception) { + throw new DataGovernanceException(23000, exception.getMessage()); + } + } + + @Override + public List getTop10Table() throws DAOException { + return metaInfoMapper.getTop10Table(); + } + + + @Override + public HiveTblStatsDTO hiveTblStats(String dbName, String tableName, String guid) throws Exception { + //如果有guid则使用guid + if (StringUtils.isNotBlank(guid)) { + String qualifiedName = getQualifiedName(guid); + dbName = StringUtils.substringBefore(qualifiedName, "."); + tableName = StringUtils.substringAfter(qualifiedName, "."); + } + + + HiveTblStatsDTO dto = new HiveTblStatsDTO(); + + //字段数量 + List columnCounts = tableColumnCountQueryMapper.query(Wrappers.lambdaQuery().eq(TableColumnCount::getDbName, dbName).eq(TableColumnCount::getTblName, tableName)); + if (!CollectionUtils.isEmpty(columnCounts)) { + dto.setColumnCount(columnCounts.get(0).getColumnCount()); + } + + //表容量 + List tableSizeInfos = tableSizeInfoMapper.query(Wrappers.lambdaQuery().eq(TableSizeInfo::getDbName, dbName).eq(TableSizeInfo::getTblName, tableName)); + if (!CollectionUtils.isEmpty(tableSizeInfos)) { + tableSizeInfos.forEach(tableSizeInfo -> { + if (StringUtils.equals("totalSize", tableSizeInfo.getParamKey())) { + dto.setTotalSize(Long.parseLong(tableSizeInfo.getParamValue())); + } + if (StringUtils.equals("numFiles", tableSizeInfo.getParamKey())) { + dto.setNumFiles(Integer.parseInt(tableSizeInfo.getParamValue())); + } + }); + } + //分区信息 + List tablePartitionSizeInfos = tableSizePartitionInfoMapper.query(Wrappers.lambdaQuery().eq(TablePartitionSizeInfo::getDbName, dbName).eq(TablePartitionSizeInfo::getTblName, tableName)); + if (!CollectionUtils.isEmpty(tablePartitionSizeInfos)) { + Set partIds = Sets.newHashSet(); + tablePartitionSizeInfos.forEach(tablePartitionSizeInfo -> { + partIds.add(tablePartitionSizeInfo.getParId()); + if (StringUtils.equals("totalSize", tablePartitionSizeInfo.getParamKey())) { + dto.setTotalSize(dto.getTotalSize() + Long.parseLong(tablePartitionSizeInfo.getParamValue())); + } + if (StringUtils.equals("numFiles", tablePartitionSizeInfo.getParamKey())) { + dto.setNumFiles(dto.getNumFiles() + Integer.parseInt(tablePartitionSizeInfo.getParamValue())); + } + }); + dto.setPartitionCount(partIds.size()); + } + return dto; + } + + private String getQualifiedName(String guid) throws AtlasServiceException { + AtlasEntity atlasEntity = atlasService.getHiveTbl(guid); + return StringUtils.substringBefore(String.valueOf(atlasEntity.getAttributes().get("qualifiedName")), "@"); + } + + @Override + public Long hiveTblSize(String dbName, String tableName, String guid) throws Exception { + //如果有guid则使用guid + if (StringUtils.isNotBlank(guid)) { + String qualifiedName = getQualifiedName(guid); + dbName = StringUtils.substringBefore(qualifiedName, "."); + tableName = StringUtils.substringAfter(qualifiedName, "."); + } + + AtomicReference size = new AtomicReference<>(0L); + //表容量 + List tableSizeInfos = tableSizeInfoMapper.query(Wrappers.lambdaQuery().eq(TableSizeInfo::getDbName, dbName).eq(TableSizeInfo::getTblName, tableName)); + if (!CollectionUtils.isEmpty(tableSizeInfos)) { + tableSizeInfos.forEach(tableSizeInfo -> { + if (StringUtils.equals("totalSize", tableSizeInfo.getParamKey())) { + size.set(Long.parseLong(tableSizeInfo.getParamValue())); + } + }); + } + //分区信息 + List tablePartitionSizeInfos = tableSizePartitionInfoMapper.query(Wrappers.lambdaQuery().eq(TablePartitionSizeInfo::getDbName, dbName).eq(TablePartitionSizeInfo::getTblName, tableName)); + if (!CollectionUtils.isEmpty(tablePartitionSizeInfos)) { + Set partIds = Sets.newHashSet(); + tablePartitionSizeInfos.forEach(tablePartitionSizeInfo -> { + partIds.add(tablePartitionSizeInfo.getParId()); + if (StringUtils.equals("totalSize", tablePartitionSizeInfo.getParamKey())) { + size.set(size.get() + Long.parseLong(tablePartitionSizeInfo.getParamValue())); + } + + }); + + } + return size.get(); + } + + + @Override + public CreateLabelInfo createLabel(CreateLabelVO vo) throws Exception { + try { + return CreateLabelInfo.from(atlasService.createLabel(vo.getName())); + } catch (AtlasServiceException exception) { + throw new DataGovernanceException(23000, exception.getMessage()); + } + + } + + + @Override + public void deleteLabel(DeleteLabelVO vo) throws Exception { + try { + atlasService.deleteLabel(vo.getName()); + } catch (Exception exception) { + throw new DataGovernanceException(23000, exception.getMessage()); + } + } + + + @Override + public UpdateLabelInfo updateLabel(UpdateLabelVO vo) throws Exception { + + if (StringUtils.equals(vo.getName(),vo.getOrgName())){ + throw new DataGovernanceException(23000, "修改标签名称前后相同"); + } + + Optional termGuidOptional = getTermGuidOptional(vo.getOrgName()); + if (!termGuidOptional.isPresent()){ + throw new DataGovernanceException(23000, "标签"+vo.getOrgName()+ "不存在"); + } + + AtlasGlossaryTerm atlasGlossaryTerm = null; + //首先新建标签 + try { + atlasGlossaryTerm = atlasService.createLabel(vo.getName()); + } catch (Exception exception) { + throw new DataGovernanceException(23000, exception.getMessage()); + } + //尝试删除原标签 + try { + atlasService.deleteLabel(vo.getOrgName()); + } catch (Exception exception) { + //休眠五秒,atlas新建分词有延迟 + logger.error("wait for 5 seconds to roll back term " + vo.getName()); + TimeUnit.SECONDS.sleep(5); + //回滚删除新建标签 + try { + atlasService.deleteLabel(vo.getName()); + } catch (Exception exception1) { + throw new DataGovernanceException(23000, exception1.getMessage()); + } + throw new DataGovernanceException(23000, exception.getMessage()); + } + + return UpdateLabelInfo.from(atlasGlossaryTerm); + } + + + @Override + public void bindLabel(BindLabelVO vo) throws Exception { + + if (StringUtils.isNotBlank(vo.getLabelGuid()) && StringUtils.isNotBlank(vo.getTableGuid())) { + try { + + atlasService.assignTermToEntities(vo.getLabelGuid(), Lists.newArrayList(vo.getTableGuid())); + } catch (AtlasServiceException exception1) { + throw new DataGovernanceException(23000, exception1.getMessage()); + } + } + + Optional termGuidOptional = getTermGuidOptional(vo.getLabel()); + List entityHeaders = getAtlasEntityHeaders(vo.getTableName()); + + try { + + atlasService.assignTermToEntities(termGuidOptional.get(), Lists.newArrayList(entityHeaders.get(0).getGuid())); + } catch (AtlasServiceException exception1) { + throw new DataGovernanceException(23000, exception1.getMessage()); + } + + } + + private Optional getTermGuidOptional(String label) throws AtlasServiceException, DataGovernanceException { + Optional termGuidOptional = atlasService.getTermGuid(GlossaryConstant.LABEL, label); + if (!termGuidOptional.isPresent()) { + throw new DataGovernanceException(23000, label + "标签不存在"); + } + return termGuidOptional; + } + + @Override + public void unBindLabel(UnBindLabelVO vo) throws Exception { + if (StringUtils.isNotBlank(vo.getLabelGuid()) && StringUtils.isNotBlank(vo.getTableGuid()) && StringUtils.isNotBlank(vo.getRelationGuid())) { + try { + atlasService.disassociateTermFromEntities(vo.getLabelGuid(), Lists.newArrayList(RelatedObjectId.from(vo.getTableGuid(), vo.getRelationGuid()))); + } catch (AtlasServiceException exception1) { + throw new DataGovernanceException(23000, exception1.getMessage()); + } + } + + Optional termGuidOptional = getTermGuidOptional(vo.getLabel()); + List entityHeaders = getAtlasEntityHeaders(vo.getTableName()); + + String termGuid = termGuidOptional.get(); + AtlasEntityHeader atlasEntityHeader = entityHeaders.get(0); + String tableGuid = atlasEntityHeader.getGuid(); + Optional termAssignmentHeaderOptional = atlasEntityHeader.getMeanings().stream().filter(atlasTermAssignmentHeader -> StringUtils.equals(termGuid, atlasTermAssignmentHeader.getTermGuid())).findFirst(); + if (!termAssignmentHeaderOptional.isPresent()){ + throw new DataGovernanceException(23000, vo.getTableName() + "表与标签" + vo.getLabel() +"未绑定"); + } + try { + atlasService.disassociateTermFromEntities(termGuidOptional.get(), Lists.newArrayList(RelatedObjectId.from(tableGuid, termAssignmentHeaderOptional.get().getRelationGuid()))); + } catch (AtlasServiceException exception1) { + throw new DataGovernanceException(23000, exception1.getMessage()); + } + } + + private List getAtlasEntityHeaders(String tableName) throws AtlasServiceException, DataGovernanceException { + List entityHeaders = atlasService.searchHiveTable0(null, tableName, null,true, 1, 0); + if (CollectionUtils.isEmpty(entityHeaders)) { + throw new DataGovernanceException(23000, tableName + "表不存在"); + } + return entityHeaders; + } + + @Override + public List listLabels(String query, Integer limit, Integer offset) throws Exception { + List atlasEntityHeaders = atlasService.listLabels(query, limit, offset); + Optional labelOptional = atlasService.getRootGlossaryGuid(GlossaryConstant.LABEL); + if (!labelOptional.isPresent()) { + throw new DataGovernanceException(23000, "需要创建 " + GlossaryConstant.LABEL.getRoot() + " glossary "); + } + return atlasEntityHeaders.stream() + .filter(atlasEntityHeader -> + StringUtils.endsWith(atlasEntityHeader.getAttribute("qualifiedName").toString(), GlossaryConstant.LABEL.endWith())) + .map(SearchLabelDTO::from).collect(Collectors.toList()); + } + + public List getHiveTblPartitionByName(String dbName,String tableName) throws Exception { + return metaInfoMapper.getPartInfo(dbName,tableName); + + } + + + private boolean isLabel(String termGuid) { + + AtlasGlossaryTerm term; + try { + term = atlasService.getGlossaryTermDetail(termGuid); + }catch (AtlasServiceException e){ + logger.error(e.getMessage(),e); + return false; + } + + if (term == null){ + return false; + } + return term.getQualifiedName().endsWith(GlossaryConstant.LABEL.endWith()); + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/WorkspaceInfoServiceImpl.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/WorkspaceInfoServiceImpl.java new file mode 100644 index 000000000..ce78735b7 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/service/impl/WorkspaceInfoServiceImpl.java @@ -0,0 +1,43 @@ +/* + * + * * Copyright 2019 WeBank + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + */ + +package com.webank.wedatasphere.dss.data.governance.service.impl; + +import com.webank.wedatasphere.dss.data.governance.dao.WorkspaceInfoMapper; +import com.webank.wedatasphere.dss.data.governance.exception.DataGovernanceException; +import com.webank.wedatasphere.dss.data.governance.service.WorkspaceInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class WorkspaceInfoServiceImpl implements WorkspaceInfoService { + + @Autowired + private WorkspaceInfoMapper workspaceInfoMapper; + + + @Override + public List getWorkspaceUsers(int workspaceId,String search) throws DataGovernanceException { + + List workspaceUsers = workspaceInfoMapper.getWorkspaceUsersName(workspaceId,search); + return workspaceUsers; + } +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DataSourceUtil.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DataSourceUtil.java new file mode 100644 index 000000000..92a4a2316 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DataSourceUtil.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.dss.data.governance.utils; + +import com.alibaba.druid.pool.DruidDataSource; +import com.webank.wedatasphere.dss.data.governance.conf.GovernanceConf; + + +public class DataSourceUtil { + private static DruidDataSource druidDataSource =null; + + private DataSourceUtil(){} + + public static DruidDataSource getDataSource(){ + if(druidDataSource ==null) { + synchronized (DataSourceUtil.class){ + if(druidDataSource ==null){ + druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName(GovernanceConf.METASTORE_DATASOURCE_DRIVER.getValue()); + druidDataSource.setUrl(GovernanceConf.METASTORE_DATASOURCE_URL.getValue()); + druidDataSource.setUsername(GovernanceConf.METASTORE_DATASOURCE_USERNAME.getValue()); + druidDataSource.setPassword(GovernanceConf.METASTORE_DATASOURCE_PASSWORD.getValue()); + } + } + } + return druidDataSource; + } + +} diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DateUtil.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DateUtil.java similarity index 93% rename from dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DateUtil.java rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DateUtil.java index c57c5b947..31a0cd07d 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/DateUtil.java +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/DateUtil.java @@ -1,6 +1,21 @@ -package com.webank.wedatasphere.dss.data.common.utils; - -import org.apache.atlas.SortOrder; +/* + * + * * Copyright 2019 WeBank + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + */ +package com.webank.wedatasphere.dss.data.governance.utils; import java.sql.Timestamp; import java.text.DecimalFormat; @@ -9,6 +24,7 @@ import java.util.Calendar; import java.util.Date; + public class DateUtil { /** @@ -352,7 +368,7 @@ public static Long strToTimeStamp(String date,String format) throws ParseExcepti } public static String unixToTimeStr(Long unixtime) { - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date (unixtime)); + return new SimpleDateFormat("yyyy MM-dd HH:mm:ss").format(new Date (unixtime)); } public static String unixToTimeStr(Double unixtime){ diff --git a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/HttpClientUtil.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/HttpClientUtil.java similarity index 93% rename from dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/HttpClientUtil.java rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/HttpClientUtil.java index e14fbe073..762a402ee 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-common/src/main/java/com/webank/wedatasphere/dss/data/common/utils/HttpClientUtil.java +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/utils/HttpClientUtil.java @@ -1,4 +1,22 @@ -package com.webank.wedatasphere.dss.data.common.utils; +/* + * + * * Copyright 2019 WeBank + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + */ + +package com.webank.wedatasphere.dss.data.governance.utils; import org.apache.http.Consts; import org.apache.http.HttpEntity; @@ -28,14 +46,11 @@ import java.net.URLEncoder; import java.security.cert.CertificateException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Random; +@SuppressWarnings("all") public final class HttpClientUtil { private final static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); public final static int connectTimeout = 5000; @@ -118,6 +133,11 @@ public static String postForm(String url, int timeout, Map heade return ""; } + /** + * 调用saltapi时 + * + * @author: XIEJIAN948@pingan.com.cn + */ public static String postJsonBody(String url, int timeout, Map headerMap, String paraData, String encoding) { @@ -329,6 +349,11 @@ public static String getNowDate() { return sdf.format(date); } + /** + * 调用saltapi时 + * + * @author: XIEJIAN948@pingan.com.cn + */ public static String postJsonBody2(String url, int timeout, Map headerMap, List paramsList, String encoding) { logger.info("successfully start post Json Body url{} ", url); @@ -377,6 +402,11 @@ public static String postJsonBody2(String url, int timeout, Map return ""; } + /** + * 调用saltapi时 + * + * @author: XIEJIAN948@pingan.com.cn + */ public static String postJsonBody3(String url, int timeout, Map headerMap, Map paramsList, String encoding) { HttpPost post = new HttpPost(url); diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindLabelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindLabelVO.java new file mode 100644 index 000000000..dd2d23095 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindLabelVO.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class BindLabelVO { + + private String label; + + private String tableName; + + private String labelGuid; + + private String tableGuid; + +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindModelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindModelVO.java new file mode 100644 index 000000000..572f15ca9 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/BindModelVO.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class BindModelVO { + + private String modelName; + + private String modelType; + + private String tableName; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateLabelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateLabelVO.java new file mode 100644 index 000000000..f25c96328 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateLabelVO.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class CreateLabelVO { + private String name; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateModelTypeVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateModelTypeVO.java new file mode 100644 index 000000000..53b33ed39 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/CreateModelTypeVO.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class CreateModelTypeVO { + + private String name; + + private String type; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteLabelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteLabelVO.java new file mode 100644 index 000000000..9488c26e5 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteLabelVO.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class DeleteLabelVO { + private String name; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteModelTypeVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteModelTypeVO.java new file mode 100644 index 000000000..0079ae6cb --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/DeleteModelTypeVO.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class DeleteModelTypeVO { + private String name; + + private String type; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindLabelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindLabelVO.java new file mode 100644 index 000000000..2f50ddcaa --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindLabelVO.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class UnBindLabelVO { + private String label; + + private String tableName; + + private String labelGuid; + + private String tableGuid; + + private String relationGuid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindModelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindModelVO.java new file mode 100644 index 000000000..d507df30f --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UnBindModelVO.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + +import lombok.Data; + +@Data +public class UnBindModelVO { + private String modelName; + + private String modelType; + + private String tableName; + + private String guid; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateLabelVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateLabelVO.java new file mode 100644 index 000000000..835ee3f84 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateLabelVO.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + +import lombok.Data; + +@Data +public class UpdateLabelVO { + private String name; + + private String orgName; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateModelTypeVO.java b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateModelTypeVO.java new file mode 100644 index 000000000..07840d41e --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/java/com/webank/wedatasphere/dss/data/governance/vo/UpdateModelTypeVO.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.data.governance.vo; + + +import lombok.Data; + +@Data +public class UpdateModelTypeVO { + private String name; + + private String orgName; + + private String type; +} diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/application.yml b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/application.yml new file mode 100644 index 000000000..764e27994 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/application.yml @@ -0,0 +1,22 @@ +server: + port: 20082 +spring: + application: + name: data-assets-server + mvc: + servlet: + path: +eureka: + client: + serviceUrl: + defaultZone: http://hdp:20303/eureka/ +management: + endpoints: + web: + exposure: + include: refresh,info +logging: + config: classpath:log4j2.xml +#mybatis-plus: +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/atlas-application.properties b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/atlas-application.properties new file mode 100644 index 000000000..e37bc792d --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/atlas-application.properties @@ -0,0 +1,67 @@ +# Generated by Apache Ambari. Sun Feb 27 10:44:18 2022 + +atlas.audit.hbase.tablename=ATLAS_ENTITY_AUDIT_EVENTS +atlas.audit.hbase.zookeeper.quorum=hdp +atlas.audit.zookeeper.session.timeout.ms=60000 +atlas.authentication.keytab=/etc/security/keytabs/atlas.service.keytab +atlas.authentication.method.file=true +atlas.authentication.method.file.filename=/home/hadoop/software/apache-atlas-2.0.0/conf/users-credentials.properties +atlas.authentication.method.kerberos=false +atlas.authentication.method.ldap=false +atlas.authentication.method.ldap.ad.base.dn= +atlas.authentication.method.ldap.ad.bind.dn= +atlas.authentication.method.ldap.ad.bind.password= +atlas.authentication.method.ldap.ad.default.role=ROLE_USER +atlas.authentication.method.ldap.ad.domain= +atlas.authentication.method.ldap.ad.referral=ignore +atlas.authentication.method.ldap.ad.url= +atlas.authentication.method.ldap.ad.user.searchfilter=(sAMAccountName={0}) +atlas.authentication.method.ldap.base.dn= +atlas.authentication.method.ldap.bind.dn= +atlas.authentication.method.ldap.bind.password= +atlas.authentication.method.ldap.default.role=ROLE_USER +atlas.authentication.method.ldap.groupRoleAttribute=cn +atlas.authentication.method.ldap.groupSearchBase= +atlas.authentication.method.ldap.groupSearchFilter= +atlas.authentication.method.ldap.referral=ignore +atlas.authentication.method.ldap.type=ldap +atlas.authentication.method.ldap.url= +atlas.authentication.method.ldap.user.searchfilter= +atlas.authentication.method.ldap.userDNpattern=uid= +atlas.authentication.principal=atlas +atlas.authorizer.impl=ranger +atlas.cluster.name=bigdata_all_in_one +atlas.enableTLS=false +atlas.graph.index.search.solr.mode=cloud +atlas.graph.index.search.solr.wait-searcher=true +atlas.graph.index.search.solr.zookeeper-url=hadoop:2181/infra-solr +atlas.graph.storage.hbase.table=atlas_janus +atlas.graph.storage.hostname=hdp +atlas.kafka.auto.commit.enable=false +atlas.kafka.bootstrap.servers=hadoop:6667 +atlas.kafka.hook.group.id=atlas +atlas.kafka.zookeeper.connect=hadoop:2181 +atlas.kafka.zookeeper.connection.timeout.ms=30000 +atlas.kafka.zookeeper.session.timeout.ms=60000 +atlas.kafka.zookeeper.sync.time.ms=20 +atlas.lineage.schema.query.hive_table=hive_table where __guid='%s'\, columns +atlas.lineage.schema.query.Table=Table where __guid='%s'\, columns +atlas.notification.create.topics=true +atlas.notification.embedded=false +atlas.notification.replicas=1 +atlas.notification.topics=ATLAS_HOOK,ATLAS_ENTITIES +atlas.proxyusers= +atlas.rest.address=http://hadoop:21000 +atlas.server.address.id1=hadoop:21000 +atlas.server.bind.address=0.0.0.0 +atlas.server.ha.enabled=false +atlas.server.http.port=21000 +atlas.server.https.port=21443 +atlas.server.ids=id1 +atlas.simple.authz.policy.file=/home/hadoop/software/apache-atlas-2.0.0/conf/atlas-simple-authz-policy.json +atlas.solr.kerberos.enable=false +atlas.ssl.exclude.protocols=TLSv1.2 +atlas.sso.knox.browser.useragent= +atlas.sso.knox.enabled=false +atlas.sso.knox.providerurl= +atlas.sso.knox.publicKey= diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/linkis.properties b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/linkis.properties new file mode 100644 index 000000000..cc2b65996 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/linkis.properties @@ -0,0 +1,82 @@ +# +# /* +# * Copyright 2019 WeBank +# * +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +# + +wds.linkis.test.mode=true +wds.linkis.log.clear=true +wds.linkis.server.version=v1 + + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://hdp:3306/hive?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username=root + +wds.linkis.server.mybatis.datasource.password=root + + + + + +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.data.governance.restful + +##mybatis +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/data/governance/dao/impl/*.xml + +wds.linkis.server.mybatis.typeAliasesPackage=com.webank.wedatasphere.dss.data.governance.entity + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.data.governance.dao + + +# atlas config +atlas.rest.address=http://hdp:21000 +atlas.username=admin +atlas.password=admin123 +atlas.client.readTimeoutMSecs=60000 +atlas.client.connectTimeoutMSecs=60000 + +# create root classification +atlas.root.indicator=datamodel_indicator +atlas.root.measure=datamodel_measure +atlas.root.dimension=datamodel_dimension +atlas.root.layer=datamodel_layer +atlas.root.theme=datamodel_theme + +# create root glossary +atlas.root.label=datamodel_label +atlas.root.collection=datamodel_collection + + +# hive metadata config +metastore.datasource.driver=com.mysql.jdbc.Driver +metastore.datasource.url=jdbc:mysql://hdp:3306/hive?characterEncoding=UTF-8 +metastore.datasource.username=root +metastore.datasource.password=root + + +wds.workspace.client.serverurl=http://hdp:29001 + +wds.workspace.client.authtoken.key=hdfs + +wds.workspace.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.workspace.client.discovery.enabled=false + +wds.workspace.client.authtoken.value=hdfs + +wds.workspace.client.dws.version=v1 + +wds.wedatasphere.data.assert.client.strategy=static \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j.properties b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j.properties similarity index 52% rename from dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j.properties rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j.properties index f88f949da..0807e6087 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/log4j.properties +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j.properties @@ -1,19 +1,18 @@ # -# /* -# * Copyright 2019 WeBank -# * -# * Licensed under the Apache License, Version 2.0 (the "License"); -# * you may not use this file except in compliance with the License. -# * You may obtain a copy of the License at -# * -# * http://www.apache.org/licenses/LICENSE-2.0 -# * -# * Unless required by applicable law or agreed to in writing, software -# * distributed under the License is distributed on an "AS IS" BASIS, -# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# * See the License for the specific language governing permissions and -# * limitations under the License. -# */ +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# # ### set log levels ### @@ -32,7 +31,7 @@ log4j.appender.com.webank.bdp.ide.core.Threshold=INFO log4j.additivity.com.webank.bdp.ide.core=false log4j.appender.com.webank.bdp.ide.core.layout=org.apache.log4j.PatternLayout log4j.appender.com.webank.bdp.ide.core.Append=true -log4j.appender.com.webank.bdp.ide.core.File=logs/dss-data-governance-server.log +log4j.appender.com.webank.bdp.ide.core.File=logs/linkis.log log4j.appender.com.webank.bdp.ide.core.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n -log4j.logger.org.springframework=INFO \ No newline at end of file +log4j.logger.org.springframework=INFO diff --git a/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j2.xml b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j2.xml new file mode 100644 index 000000000..3923cd9f3 --- /dev/null +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/resources/log4j2.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DSSDataGovernanceApplication.scala b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsApplication.scala similarity index 92% rename from dss-apps/dss-data-governance/dss-data-governance-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DSSDataGovernanceApplication.scala rename to dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsApplication.scala index 1fe794bff..da173966d 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DSSDataGovernanceApplication.scala +++ b/dss-apps/dss-dataasset-management/dss-data-assets-server/src/main/scala/com/webank/wedatasphere/dss/data/governance/DataAssetsApplication.scala @@ -1,4 +1,4 @@ - /* +/* * * * Copyright 2019 WeBank * * @@ -19,11 +19,13 @@ package com.webank.wedatasphere.dss.data.governance import com.webank.wedatasphere.dss.common.utils.DSSMainHelper -import org.apache.linkis.DataWorkCloudApplication import org.apache.linkis.common.utils.{Logging, Utils} +import org.apache.linkis.{DataWorkCloudApplication, LinkisBaseServerApp} -object DSSDataGovernanceApplication extends Logging { + +object DataAssetsApplication extends Logging { + val userName: String = System.getProperty("user.name") val hostName: String = Utils.getComputerName diff --git a/dss-apps/dss-dataasset-management/pom.xml b/dss-apps/dss-dataasset-management/pom.xml new file mode 100644 index 000000000..c598ea0e7 --- /dev/null +++ b/dss-apps/dss-dataasset-management/pom.xml @@ -0,0 +1,85 @@ + + + + dss + com.webank.wedatasphere.dss + 1.1.0 + ../../pom.xml + + 4.0.0 + + dss-dataasset-management + pom + + dss-data-assets-server + dss-data-assets-client + + + UTF-8 + 2.16 + 2.22.2 + 2.22.2 + 1.1.2 + + + + + + com.webank.wedatasphere.dss + dss-common + ${dss.version} + provided + + + org.apache.linkis + linkis-module + ${linkis.version} + + + asm + org.ow2.asm + + + hk2-api + org.glassfish.hk2 + + + jersey-common + org.glassfish.jersey.core + + + linkis-common + org.apache.linkis + + + + + org.apache.linkis + linkis-mybatis + ${linkis.version} + + + + org.modelmapper + modelmapper + 2.4.4 + + + + junit + junit + 4.12 + test + + + org.junit.platform + junit-platform-launcher + 1.5.2 + test + + + + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/pom.xml new file mode 100644 index 000000000..afc7b897f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/pom.xml @@ -0,0 +1,57 @@ + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + + 4.0.0 + + dss-datamodel-center-client + + + 8 + 8 + + + + + org.apache.linkis + linkis-gateway-httpclient-support + ${linkis.version} + + + org.projectlombok + lombok + 1.18.16 + compile + + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + + src/main/resources + + + ${project.artifactId}-${project.version} + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/ClassificationConstant.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/ClassificationConstant.java new file mode 100644 index 000000000..59555c77e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/ClassificationConstant.java @@ -0,0 +1,76 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.entity; + + +import org.apache.commons.lang3.StringUtils; + +import java.util.Optional; + +public enum ClassificationConstant { + /** + * 指标 + */ + INDICATOR(1, "indicator"), + /** + * 度量 + */ + MEASURE(2,"measure"), + /** + * 维度 + */ + DIMENSION(0, "dimension"), + /** + * 主题 + */ + THEME(3, "theme"), + /** + * 分层 + */ + LAYER(4, "layer"); + + private int type; + + + private String typeCode; + + ClassificationConstant(int type, String typeCode) { + this.type = type; + + this.typeCode = typeCode; + } + + public static boolean isTypeScope(int type) { + return type >= 0 && type < values().length; + } + + public static boolean isTypeScope(String type) { + return getClassificationConstantByTypeCode(type).isPresent(); + } + + public static Optional getClassificationConstantByTypeCode(String typeCode) { + for (ClassificationConstant c : values()) { + if (StringUtils.equals(c.typeCode,typeCode)) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + public static Optional getClassificationConstantByType(int type) { + for (ClassificationConstant c : values()) { + if (c.type == type) { + return Optional.of(c); + } + } + return Optional.empty(); + } + + + + public int getType() { + return type; + } + + public String getTypeCode() { + return typeCode; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/CreateModelTypeInfo.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/CreateModelTypeInfo.java new file mode 100644 index 000000000..e3a210f78 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/CreateModelTypeInfo.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.entity; + + +import lombok.Data; + +@Data +public class CreateModelTypeInfo { + private String name; + + private String guid; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/HiveSimpleInfo.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/HiveSimpleInfo.java new file mode 100644 index 000000000..36f363ac2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/HiveSimpleInfo.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +@Data +public class HiveSimpleInfo implements Serializable { + private String guid; + private String name; + private String qualifiedName; + private String createTime; + private String owner; + private String aliases; + private String lastAccessTime; + private String comment; + private List classifications; + private String totalSize; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/UpdateModelTypeInfo.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/UpdateModelTypeInfo.java new file mode 100644 index 000000000..a8b3ffa67 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/java/com/webank/wedatasphere/dss/datamodel/center/client/entity/UpdateModelTypeInfo.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.entity; + + +import lombok.Data; + +@Data +public class UpdateModelTypeInfo { + private String name; + + private String guid; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/AbstractRemoteClient.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/AbstractRemoteClient.scala new file mode 100644 index 000000000..90a2bc2f0 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/AbstractRemoteClient.scala @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.center.client + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result + +abstract class AbstractRemoteClient extends RemoteClient { + protected val dwsHttpClient:DWSHttpClient + + override def execute(action: Action): Result = action match { + case action: Action => dwsHttpClient.execute(action) + } + + override def close(): Unit = dwsHttpClient.close() +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/DatamodelCenterRemoteClient.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/DatamodelCenterRemoteClient.scala new file mode 100644 index 000000000..0632b2116 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/DatamodelCenterRemoteClient.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client + +import com.webank.wedatasphere.dss.datamodel.center.client.request._ +import com.webank.wedatasphere.dss.datamodel.center.client.response._ + +trait DatamodelCenterRemoteClient extends RemoteClient { + def themesReference(action: ThemesReferenceAction) : ThemesReferenceResult + def layersReference(action: LayersReferenceAction) : LayersReferenceResult + def modifiersReference(action: ModifiersReferenceAction):ModifiersReferenceResult + def cyclesReference(action:CyclesReferenceAction) : CyclesReferenceResult +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/RemoteClient.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/RemoteClient.scala new file mode 100644 index 000000000..614bcfa72 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/RemoteClient.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client + +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result +import java.io.Closeable + +trait RemoteClient extends Closeable{ + protected def execute(action: Action): Result + + override def close(): Unit +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/exception/DatamodelCenterClientBuilderException.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/exception/DatamodelCenterClientBuilderException.scala new file mode 100644 index 000000000..9ac06cd54 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/exception/DatamodelCenterClientBuilderException.scala @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.exception + +import org.apache.linkis.common.exception.ErrorException + +class DatamodelCenterClientBuilderException(errorDesc: String) extends ErrorException(212400, errorDesc) diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/impl/LinkisDatamodelCenterRemoteClient.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/impl/LinkisDatamodelCenterRemoteClient.scala new file mode 100644 index 000000000..7f2a67284 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/impl/LinkisDatamodelCenterRemoteClient.scala @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.impl + +import com.webank.wedatasphere.dss.datamodel.center.client.request.{CyclesReferenceAction, LayersReferenceAction, ModifiersReferenceAction, ThemesReferenceAction} +import com.webank.wedatasphere.dss.datamodel.center.client.response.{CyclesReferenceResult, LayersReferenceResult, ModifiersReferenceResult, ThemesReferenceResult} +import com.webank.wedatasphere.dss.datamodel.center.client.{AbstractRemoteClient, DatamodelCenterRemoteClient} +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.config.DWSClientConfig + +class LinkisDatamodelCenterRemoteClient(clientConfig: DWSClientConfig) extends AbstractRemoteClient with DatamodelCenterRemoteClient { + override protected val dwsHttpClient: DWSHttpClient = new DWSHttpClient(clientConfig, "Datamodel-center-Client") + + override def themesReference(action: ThemesReferenceAction): ThemesReferenceResult = execute(action).asInstanceOf[ThemesReferenceResult] + + override def layersReference(action: LayersReferenceAction): LayersReferenceResult = execute(action).asInstanceOf[LayersReferenceResult] + + override def modifiersReference(action: ModifiersReferenceAction): ModifiersReferenceResult = execute(action).asInstanceOf[ModifiersReferenceResult] + + override def cyclesReference(action: CyclesReferenceAction): CyclesReferenceResult = execute(action).asInstanceOf[CyclesReferenceResult] +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/CyclesReferenceAction.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/CyclesReferenceAction.scala new file mode 100644 index 000000000..ef267eefa --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/CyclesReferenceAction.scala @@ -0,0 +1,43 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.request + +import com.webank.wedatasphere.dss.datamodel.center.client.exception.DatamodelCenterClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class CyclesReferenceAction extends GetAction with DatamodelCenterAction{ + + private var name:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("datamodel", "cycles", "reference",name) +} +object CyclesReferenceAction{ + def builder(): Builder = new Builder + + class Builder private[CyclesReferenceAction]() { + private var name:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + def setName(name:String): Builder = { + this.name = name + this + } + + def build(): CyclesReferenceAction = { + val action = new CyclesReferenceAction + if(name == null) throw new DatamodelCenterClientBuilderException("name is needed!") + action.name = name + action.setUser(user) + action + } + } +} + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/DatamodelCenterAction.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/DatamodelCenterAction.scala new file mode 100644 index 000000000..5d238c773 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/DatamodelCenterAction.scala @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.request + +import org.apache.linkis.httpclient.dws.request.DWSHttpAction + +trait DatamodelCenterAction extends DWSHttpAction with org.apache.linkis.httpclient.request.UserAction diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/LayersReferenceAction.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/LayersReferenceAction.scala new file mode 100644 index 000000000..68ee6532f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/LayersReferenceAction.scala @@ -0,0 +1,43 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.request + +import com.webank.wedatasphere.dss.datamodel.center.client.exception.DatamodelCenterClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class LayersReferenceAction extends GetAction with DatamodelCenterAction{ + + private var name:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("datamodel", "layers", "reference",name) +} +object LayersReferenceAction{ + def builder(): Builder = new Builder + + class Builder private[LayersReferenceAction]() { + private var name:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + def setName(name:String): Builder = { + this.name = name + this + } + + def build(): LayersReferenceAction = { + val action = new LayersReferenceAction + if(name == null) throw new DatamodelCenterClientBuilderException("name is needed!") + action.name = name + action.setUser(user) + action + } + } +} + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ModifiersReferenceAction.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ModifiersReferenceAction.scala new file mode 100644 index 000000000..684b79265 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ModifiersReferenceAction.scala @@ -0,0 +1,42 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.request + +import com.webank.wedatasphere.dss.datamodel.center.client.exception.DatamodelCenterClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class ModifiersReferenceAction extends GetAction with DatamodelCenterAction{ + + private var name:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("datamodel", "modifiers", "reference",name) +} +object ModifiersReferenceAction{ + def builder(): Builder = new Builder + + class Builder private[ModifiersReferenceAction]() { + private var name:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + def setName(name:String): Builder = { + this.name = name + this + } + + def build(): ModifiersReferenceAction = { + val action = new ModifiersReferenceAction + if(name == null) throw new DatamodelCenterClientBuilderException("name is needed!") + action.name = name + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ThemesReferenceAction.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ThemesReferenceAction.scala new file mode 100644 index 000000000..484f0bb3f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/request/ThemesReferenceAction.scala @@ -0,0 +1,42 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.request + +import com.webank.wedatasphere.dss.datamodel.center.client.exception.DatamodelCenterClientBuilderException +import org.apache.linkis.httpclient.request.GetAction + +class ThemesReferenceAction extends GetAction with DatamodelCenterAction{ + + private var name:String=_ + + private var user:String = _ + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("datamodel", "themes", "reference",name) +} +object ThemesReferenceAction{ + def builder(): Builder = new Builder + + class Builder private[ThemesReferenceAction]() { + private var name:String = _ + private var user: String = _ + + def setUser(user: String): Builder ={ + this.user = user + this + } + def setName(name:String): Builder = { + this.name = name + this + } + + def build(): ThemesReferenceAction = { + val action = new ThemesReferenceAction + if(name == null) throw new DatamodelCenterClientBuilderException("name is needed!") + action.name = name + action.setUser(user) + action + } + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/CyclesReferenceResult.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/CyclesReferenceResult.scala new file mode 100644 index 000000000..125d0c6dc --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/CyclesReferenceResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/datamodel/cycles/reference/(\\S+)") +class CyclesReferenceResult extends DWSResult{ + @BeanProperty var result:Int = _ +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/LayersReferenceResult.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/LayersReferenceResult.scala new file mode 100644 index 000000000..916266be6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/LayersReferenceResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/datamodel/layers/reference/(\\S+)") +class LayersReferenceResult extends DWSResult{ + @BeanProperty var result:Int = _ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ModifiersReferenceResult.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ModifiersReferenceResult.scala new file mode 100644 index 000000000..fdcf81cb3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ModifiersReferenceResult.scala @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/datamodel/modifiers/reference/(\\S+)") +class ModifiersReferenceResult extends DWSResult{ + @BeanProperty var result:Int = _ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ThemesReferenceResult.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ThemesReferenceResult.scala new file mode 100644 index 000000000..a8111cee5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/main/scala/com/webank/wedatasphere/dss/datamodel/center/client/response/ThemesReferenceResult.scala @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.client.response + +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult + +import scala.beans.BeanProperty + +@DWSHttpMessageResult("/api/rest_j/v\\d+/datamodel/themes/reference/(\\S+)") +class ThemesReferenceResult extends DWSResult{ + @BeanProperty var result:Int = _ +} + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/test/scala/com/webank/wedatasphere/dss/datamodel/center/client/TestDatamodelCenterRemoteClient.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/test/scala/com/webank/wedatasphere/dss/datamodel/center/client/TestDatamodelCenterRemoteClient.scala new file mode 100644 index 000000000..06dd82451 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-client/src/test/scala/com/webank/wedatasphere/dss/datamodel/center/client/TestDatamodelCenterRemoteClient.scala @@ -0,0 +1,48 @@ +package com.webank.wedatasphere.dss.datamodel.center.client + +import com.webank.wedatasphere.dss.datamodel.center.client.impl.LinkisDatamodelCenterRemoteClient +import com.webank.wedatasphere.dss.datamodel.center.client.request.{CyclesReferenceAction, LayersReferenceAction, ModifiersReferenceAction, ThemesReferenceAction} +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder + +import java.util.concurrent.TimeUnit + +object TestDatamodelCenterRemoteClient { + def main(args: Array[String]): Unit = { + val clientConfig = DWSClientConfigBuilder.newBuilder() + .addServerUrl("http://localhost:9321") + .connectionTimeout(30000) + .discoveryEnabled(false) + .discoveryFrequency(1,TimeUnit.MINUTES) + .loadbalancerEnabled(true) + .maxConnectionSize(5) + .retryEnabled(false) + .readTimeout(30000) + .setAuthenticationStrategy(null) + .setAuthTokenKey("hdfs") + .setAuthTokenValue("hdfs") + .setDWSVersion("v1") + .build() + + val datamodelCenterClient = new LinkisDatamodelCenterRemoteClient(clientConfig) + + val themesResult = datamodelCenterClient + .themesReference(ThemesReferenceAction.builder().setUser("hdfs").setName("主题").build()) + .result + println(themesResult) + + val layersResult = datamodelCenterClient + .layersReference(LayersReferenceAction.builder().setUser("hdfs").setName("DWS").build()) + .result + println(layersResult) + + val cyclesResult = datamodelCenterClient + .cyclesReference(CyclesReferenceAction.builder().setUser("hdfs").setName("Once").build()) + .result + println(cyclesResult) + + val modifiersResult = datamodelCenterClient + .modifiersReference(ModifiersReferenceAction.builder().setUser("hdfs").setName("在商场").build()) + .result + println(modifiersResult) + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/pom.xml new file mode 100644 index 000000000..4a846586f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/pom.xml @@ -0,0 +1,101 @@ + + + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-center-common + + + + + org.apache.linkis + linkis-module + ${linkis.version} + + + org.apache.linkis + linkis-mybatis + ${linkis.version} + + + + com.webank.wedatasphere.dss + dss-data-warehouse-client + ${dss.version} + + + + org.apache.linkis + linkis-computation-client + ${linkis.version} + + + + com.webank.wedatasphere.dss + dss-data-assets-client + ${dss.version} + + + + com.webank.wedatasphere.dss + dss-framework-workspace-client + ${dss.version} + + + + + org.projectlombok + lombok + 1.18.16 + compile + + + + mysql + mysql-connector-java + 5.1.49 + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ClientStrategy.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ClientStrategy.java new file mode 100644 index 000000000..3f25d3262 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ClientStrategy.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import lombok.Data; + + +public enum ClientStrategy { + TOKEN("token"), + STATIC("static"); + + private final String code; + + ClientStrategy(String code) { + this.code = code; + } + + public String getCode() { + return code; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/CommonConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/CommonConfig.java new file mode 100644 index 000000000..2892e4771 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/CommonConfig.java @@ -0,0 +1,127 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.datamodel.center.common.filter.AuthFilter; +import com.webank.wedatasphere.dss.framework.workspace.client.impl.LinkisWorkSpaceRemoteClient; +import org.apache.linkis.httpclient.authentication.AuthenticationStrategy; +import org.apache.linkis.httpclient.dws.config.DWSClientConfig; +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder; +import org.apache.linkis.ujes.client.UJESClient; +import org.apache.linkis.ujes.client.UJESClientImpl; +import com.webank.wedatasphere.warehouse.client.GovernanceDwRemoteClient; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + + +@Configuration +public class CommonConfig { + + @Bean("myMetaObjectHandler") + public MetaObjectHandler myMetaObjectHandler() { + + //TODO 无法自动组装生效 + return new MyMetaObjectHandler(); + } + + @Bean + public GovernanceDwRemoteClient getGovernanceDwRemoteClient() throws Exception { + System.out.println("url: " + DataWarehouseGovernanceConfig.SERVER_URL.getValue()); + AuthenticationStrategy authenticationStrategy = (AuthenticationStrategy) Class.forName(DataWarehouseGovernanceConfig.AUTHENTICATION_STRATEGY.getValue()).newInstance(); + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) DWSClientConfigBuilder.newBuilder() + .addServerUrl(DataWarehouseGovernanceConfig.SERVER_URL.getValue()) + .connectionTimeout(DataWarehouseGovernanceConfig.CONNECTION_TIMEOUT.getValue()) + .discoveryEnabled(DataWarehouseGovernanceConfig.DISCOVERY_ENABLED.getValue()) + .discoveryFrequency(DataWarehouseGovernanceConfig.DISCOVERY_FREQUENCY_PERIOD.getValue(), TimeUnit.MINUTES) + .loadbalancerEnabled(DataWarehouseGovernanceConfig.LOAD_BALANCER_ENABLED.getValue()) + .maxConnectionSize(DataWarehouseGovernanceConfig.MAX_CONNECTION_SIZE.getValue()) + .retryEnabled(DataWarehouseGovernanceConfig.RETRY_ENABLED.getValue()) + .readTimeout(DataWarehouseGovernanceConfig.READ_TIMEOUT.getValue()) + .setAuthenticationStrategy(authenticationStrategy) + .setAuthTokenKey(DataWarehouseGovernanceConfig.AUTHTOKEN_KEY.getValue()) + .setAuthTokenValue(DataWarehouseGovernanceConfig.AUTHTOKEN_VALUE.getValue()) + ).setDWSVersion(DataWarehouseGovernanceConfig.DWS_VERSION.getValue()) + .build(); + return new GovernanceDwRemoteClient(clientConfig); + } + + @Bean + public LinkisDataAssetsRemoteClient linkisDataAssetsRemoteClient() throws Exception { + AuthenticationStrategy authenticationStrategy = (AuthenticationStrategy) Class.forName(DataWarehouseAssetsRemoteConfig.AUTHENTICATION_STRATEGY.getValue()).newInstance(); + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) DWSClientConfigBuilder.newBuilder() + .addServerUrl(DataWarehouseAssetsRemoteConfig.SERVER_URL.getValue()) + .connectionTimeout(DataWarehouseAssetsRemoteConfig.CONNECTION_TIMEOUT.getValue()) + .discoveryEnabled(DataWarehouseAssetsRemoteConfig.DISCOVERY_ENABLED.getValue()) + .discoveryFrequency(DataWarehouseAssetsRemoteConfig.DISCOVERY_FREQUENCY_PERIOD.getValue(), TimeUnit.MINUTES) + .loadbalancerEnabled(DataWarehouseAssetsRemoteConfig.LOAD_BALANCER_ENABLED.getValue()) + .maxConnectionSize(DataWarehouseAssetsRemoteConfig.MAX_CONNECTION_SIZE.getValue()) + .retryEnabled(DataWarehouseAssetsRemoteConfig.RETRY_ENABLED.getValue()) + .readTimeout(DataWarehouseAssetsRemoteConfig.READ_TIMEOUT.getValue()) + .setAuthenticationStrategy(authenticationStrategy) + .setAuthTokenKey(DataWarehouseAssetsRemoteConfig.AUTHTOKEN_KEY.getValue()) + .setAuthTokenValue(DataWarehouseAssetsRemoteConfig.AUTHTOKEN_VALUE.getValue()) + ).setDWSVersion(DataWarehouseAssetsRemoteConfig.DWS_VERSION.getValue()) + .build(); + return new LinkisDataAssetsRemoteClient(clientConfig); + } + + @Bean + public LinkisWorkSpaceRemoteClient linkisWorkSpaceRemoteClient() throws Exception { + AuthenticationStrategy authenticationStrategy = (AuthenticationStrategy) Class.forName(DataWorkspaceRemoteConfig.AUTHENTICATION_STRATEGY.getValue()).newInstance(); + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) DWSClientConfigBuilder.newBuilder() + .addServerUrl(DataWorkspaceRemoteConfig.SERVER_URL.getValue()) + .connectionTimeout(DataWorkspaceRemoteConfig.CONNECTION_TIMEOUT.getValue()) + .discoveryEnabled(DataWorkspaceRemoteConfig.DISCOVERY_ENABLED.getValue()) + .discoveryFrequency(DataWorkspaceRemoteConfig.DISCOVERY_FREQUENCY_PERIOD.getValue(), TimeUnit.MINUTES) + .loadbalancerEnabled(DataWorkspaceRemoteConfig.LOAD_BALANCER_ENABLED.getValue()) + .maxConnectionSize(DataWorkspaceRemoteConfig.MAX_CONNECTION_SIZE.getValue()) + .retryEnabled(DataWorkspaceRemoteConfig.RETRY_ENABLED.getValue()) + .readTimeout(DataWorkspaceRemoteConfig.READ_TIMEOUT.getValue()) + .setAuthenticationStrategy(authenticationStrategy) + .setAuthTokenKey(DataWorkspaceRemoteConfig.AUTHTOKEN_KEY.getValue()) + .setAuthTokenValue(DataWorkspaceRemoteConfig.AUTHTOKEN_VALUE.getValue()) + ).setDWSVersion(DataWorkspaceRemoteConfig.DWS_VERSION.getValue()) + .build(); + return new LinkisWorkSpaceRemoteClient(clientConfig); + } + + + + @Bean + public UJESClient ujesClient()throws Exception { + AuthenticationStrategy authenticationStrategy = (AuthenticationStrategy) Class.forName(LinkisJobConfiguration.AUTHENTICATION_STRATEGY.getValue()).newInstance(); + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) (DWSClientConfigBuilder.newBuilder().addServerUrl(LinkisJobConfiguration.LINKIS_SERVER_URL.getValue()) + .connectionTimeout(LinkisJobConfiguration.CONNECTION_TIMEOUT.getValue()) + .discoveryEnabled(LinkisJobConfiguration.DISCOVERY_ENABLED.getValue()) + .discoveryFrequency(LinkisJobConfiguration.DISCOVERY_FREQUENCY_PERIOD.getValue(), TimeUnit.MINUTES) + .loadbalancerEnabled(LinkisJobConfiguration.LOAD_BALANCER_ENABLED.getValue()) + .maxConnectionSize(LinkisJobConfiguration.MAX_CONNECTION_SIZE.getValue()) + .retryEnabled(LinkisJobConfiguration.RETRY_ENABLED.getValue()) + .readTimeout(LinkisJobConfiguration.READ_TIMEOUT.getValue()) + .setAuthenticationStrategy(authenticationStrategy) + .setAuthTokenKey(LinkisJobConfiguration.AUTHTOKEN_KEY.getValue()) + .setAuthTokenValue(LinkisJobConfiguration.AUTHTOKEN_VALUE.getValue()))) + .setDWSVersion(LinkisJobConfiguration.DWS_VERSION.getValue()).build(); + return new UJESClientImpl(clientConfig); + } + + @Resource + private AuthFilter authFilter; + + @Bean + public FilterRegistrationBean registrationBean(){ + //通过FilterRegistrationBean实例设置优先级可以生效 + //通过@WebFilter无效 + FilterRegistrationBean bean = new FilterRegistrationBean(); + bean.setFilter(authFilter);//注册自定义过滤器 + bean.setName("authFilter1");//过滤器名称 + bean.addUrlPatterns("/*");//过滤所有路径 + bean.setOrder(1);//优先级,最顶级 + return bean; + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseAssetsRemoteConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseAssetsRemoteConfig.java new file mode 100644 index 000000000..310a18722 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseAssetsRemoteConfig.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + + +import org.apache.linkis.common.conf.CommonVars; + +public class DataWarehouseAssetsRemoteConfig { + public static final CommonVars SERVER_URL = CommonVars.apply("wds.wedatasphere.assets.client.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.wedatasphere.assets.client.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.wedatasphere.assets.client.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.wedatasphere.assets.client.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.wedatasphere.assets.client.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.wedatasphere.assets.client.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.wedatasphere.assets.client.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.wedatasphere.assets.client.readtimeout", 30000L); + public static final CommonVars AUTHENTICATION_STRATEGY = CommonVars.apply("wds.wedatasphere.assets.client.authenticationStrategy", ""); + + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.wedatasphere.assets.client.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.wedatasphere.assets.client.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.wedatasphere.assets.client.dws.version", ""); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseGovernanceConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseGovernanceConfig.java new file mode 100644 index 000000000..2759099c3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWarehouseGovernanceConfig.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + + +import org.apache.linkis.common.conf.CommonVars; + +public class DataWarehouseGovernanceConfig { + public static final CommonVars SERVER_URL = CommonVars.apply("wds.wedatasphere.warehouse.client.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.wedatasphere.warehouse.client.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.wedatasphere.warehouse.client.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.wedatasphere.warehouse.client.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.wedatasphere.warehouse.client.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.wedatasphere.warehouse.client.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.wedatasphere.warehouse.client.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.wedatasphere.warehouse.client.readtimeout", 30000L); + public static final CommonVars AUTHENTICATION_STRATEGY = CommonVars.apply("wds.wedatasphere.warehouse.client.authenticationStrategy", "org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy"); + + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.wedatasphere.warehouse.client.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.wedatasphere.warehouse.client.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.wedatasphere.warehouse.client.dws.version", ""); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWorkspaceRemoteConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWorkspaceRemoteConfig.java new file mode 100644 index 000000000..ce5fe4a6e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/DataWorkspaceRemoteConfig.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + + +import org.apache.linkis.common.conf.CommonVars; + +public class DataWorkspaceRemoteConfig { + public static final CommonVars SERVER_URL = CommonVars.apply("wds.workspace.client.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.workspace.client.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.workspace.client.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.workspace.client.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.workspace.client.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.workspace.client.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.workspace.client.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.workspace.client.readtimeout", 30000L); + public static final CommonVars AUTHENTICATION_STRATEGY = CommonVars.apply("wds.workspace.client.authenticationStrategy", ""); + + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.workspace.client.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.workspace.client.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.workspace.client.dws.version", ""); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/LinkisJobConfiguration.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/LinkisJobConfiguration.java new file mode 100644 index 000000000..0f4b1719d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/LinkisJobConfiguration.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import org.apache.linkis.common.conf.CommonVars; + +public class LinkisJobConfiguration { + public static final CommonVars LINKIS_SERVER_URL = CommonVars.apply("wds.wedatasphere.linkis.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.wedatasphere.linkis.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.wedatasphere.linkis.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.wedatasphere.linkis.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.wedatasphere.linkis.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.wedatasphere.linkis.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.wedatasphere.linkis.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.wedatasphere.linkis.readtimeout", 30000L); + public static final CommonVars AUTHENTICATION_STRATEGY = CommonVars.apply("wds.wedatasphere.linkis.authenticationStrategy", ""); + + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.wedatasphere.linkis.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.wedatasphere.linkis.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.wedatasphere.linkis.dws.version", ""); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ModelMapperConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ModelMapperConfig.java new file mode 100644 index 000000000..7e0aa8ea7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ModelMapperConfig.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ModelMapperConfig { + + @Bean + public ModelMapper getModelMapper() { + ModelMapper modelMapper = new ModelMapper(); + modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + return modelMapper; + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MyMetaObjectHandler.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MyMetaObjectHandler.java new file mode 100644 index 000000000..4e5e981f5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MyMetaObjectHandler.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + + +public class MyMetaObjectHandler implements MetaObjectHandler { + + + @Override + public void insertFill(MetaObject metaObject) { + this.strictInsertFill(metaObject,"createTime",Date.class,new Date()); + this.strictInsertFill(metaObject,"updateTime",Date.class,new Date()); + } + + @Override + public void updateFill(MetaObject metaObject) { + this.strictUpdateFill(metaObject,"updateTime",Date.class,new Date()); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MybatisPlusConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MybatisPlusConfig.java new file mode 100644 index 000000000..91b13c1de --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/MybatisPlusConfig.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Configuration +public class MybatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + System.out.println("mybatisPlusInterceptor init"); + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + //interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁插件 + return interceptor; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ThreadPoolTaskConfig.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ThreadPoolTaskConfig.java new file mode 100644 index 000000000..fd56906c3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/config/ThreadPoolTaskConfig.java @@ -0,0 +1,34 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ThreadPoolExecutor; + +@Configuration +@EnableAsync +public class ThreadPoolTaskConfig { + private static final int corePoolSize = 10; // 核心线程数(默认线程数) + private static final int maxPoolSize = 100; // 最大线程数 + private static final int keepAliveTime = 10; // 允许线程空闲时间(单位:默认为秒) + private static final int queueCapacity = 200; // 缓冲队列数 + private static final String threadNamePrefix = "Async-Service-"; // 线程池名前缀 + + @Bean("taskExecutor") // bean的名称,默认为首字母小写的方法名 + public ThreadPoolTaskExecutor getAsyncExecutor(){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(corePoolSize); + executor.setMaxPoolSize(maxPoolSize); + executor.setQueueCapacity(queueCapacity); + executor.setKeepAliveSeconds(keepAliveTime); + executor.setThreadNamePrefix(threadNamePrefix); + + // 线程池对拒绝任务的处理策略 + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + // 初始化 + executor.initialize(); + return executor; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ColumnType.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ColumnType.java new file mode 100644 index 000000000..a959bc87f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ColumnType.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum ColumnType { + COLUMN(0), + PARTITION_KEY(1); + private Integer code; + + ColumnType(Integer code) { + this.code = code; + } + + public Integer getCode() { + return code; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ErrorCode.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ErrorCode.java new file mode 100644 index 000000000..ca55e0e03 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ErrorCode.java @@ -0,0 +1,56 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum ErrorCode { + + INDICATOR_VERSION_ADD_ERROR(212031), + INDICATOR_VERSION_ROLL_BACK_ERROR(212032), + + MEASURE_QUERY_ERROR(212101), + MEASURE_DELETE_ERROR(212102), + MEASURE_ADD_ERROR(212103), + MEASURE_UPDATE_ERROR(212104), + + DIMENSION_QUERY_ERROR(212201), + DIMENSION_DELETE_ERROR(212202), + DIMENSION_ADD_ERROR(212203), + DIMENSION_UPDATE_ERROR(212204), + + INDICATOR_ADD_ERROR(212001), + INDICATOR_QUERY_ERROR(212002), + INDICATOR_UPDATE_ERROR(212003), + INDICATOR_DELETE_ERROR(212004), + INDICATOR_CONTENT_ADD_ERROR(212011), + + + TABLE_ADD_ERROR(212301), + TABLE_UPDATE_ERROR(212302), + TABLE_QUERY_ERROR(212303), + TABLE_VERSION_ADD_ERROR(212304), + TABLE_VERSION_ROLL_BACK_ERROR(212305), + TABLE_COLLECT_ADD_ERROR(212306), + TABLE_COLUMN_ADD_ERROR(212307), + TABLE_CREATE_ERROR(212308), + TABLE_CREATE_SQL_ERROR(212309), + TABLE_CHECK_ERROR(212310), + TABLE_BIND_ERROR(212311), + TABLE_DELETE_ERROR(212312), + + LABEL_ADD_ERROR(212401), + LABEL_UPDATE_ERROR(212402), + LABEL_QUERY_ERROR(212403), + LABEL_DELETE_ERROR(212404); + + + + + private int code; + + ErrorCode(int i) { + code = i; + } + + public int getCode() { + return code; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/IndicatorSourceInfoConstant.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/IndicatorSourceInfoConstant.java new file mode 100644 index 000000000..b587c0bb8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/IndicatorSourceInfoConstant.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum IndicatorSourceInfoConstant { + cycle, + cycleEn, + + modifier, + modifierEn, + + dimension, + dimensionEn, + + measure, + measureEn, + + indicatorName, + indicatorNameEn +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/LabelConstant.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/LabelConstant.java new file mode 100644 index 000000000..70f5226f2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/LabelConstant.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum LabelConstant { + LABEL; + public static final String SEPARATOR=","; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ModeType.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ModeType.java new file mode 100644 index 000000000..f5ae5e5a6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ModeType.java @@ -0,0 +1,49 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; + +public enum ModeType { + + /** + * 指标 + */ + INDICATOR(ClassificationConstant.INDICATOR.getType(), ClassificationConstant.INDICATOR.getTypeCode()), + /** + * 度量 + */ + MEASURE(ClassificationConstant.MEASURE.getType(), ClassificationConstant.MEASURE.getTypeCode()), + /** + * 维度 + */ + DIMENSION(ClassificationConstant.INDICATOR.getType(), ClassificationConstant.INDICATOR.getTypeCode()); + + + private int type; + + + + private String typeCode; + + ModeType(int type, String typeCode) { + this.type = type; + + this.typeCode = typeCode; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getTypeCode() { + return typeCode; + } + + public void setTypeCode(String typeCode) { + this.typeCode = typeCode; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceExpression.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceExpression.java new file mode 100644 index 000000000..20844d11b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceExpression.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum ReferenceExpression { + + EXPRESSION; + + private final static String oriCode ="(\"%s\":)(\"|\".*,)(%s)(\"|,)"; + + private final static String regexpCode = " REGEXP '"+oriCode+"' "; + + private String getFormatExpCode(String key, String value){ + return String.format(oriCode,key,value); + } + + public String getSqlExpCode(String key,String value){ + return String.format(regexpCode,key,value); + } + + + public static void main(String[] args) { + System.out.println(ReferenceExpression.EXPRESSION.getSqlExpCode("warehouseLayerNameEn","year")); + } +} + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceKey.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceKey.java new file mode 100644 index 000000000..9688af471 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/ReferenceKey.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +public enum ReferenceKey { + label, + measure, + dimension, + indicatorName, + + //分层 + warehouseLayerName, + warehouseLayerNameEn, + + //主题 + warehouseThemeName, + warehouseThemeNameEn, + + //主题 + themeArea, + themeAreaEn, + + //分层 + layerArea, + layerAreaEn, + + //周期 + lifecycle, + lifecycleEn, + + //修饰词 + modifier, + modifierEn, + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/TabelExternalType.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/TabelExternalType.java new file mode 100644 index 000000000..aafee13a2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/constant/TabelExternalType.java @@ -0,0 +1,37 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.constant; + + +import org.apache.commons.lang3.StringUtils; + +import java.util.Optional; + +public enum TabelExternalType { + INNER(0,"MANAGED_TABLE"), + EXTERNAL(1,"EXTERNAL_TABLE"); + + private Integer code; + + private String type; + + TabelExternalType(Integer code, String type) { + this.code = code; + this.type = type; + } + + public Integer getCode() { + return code; + } + + public String getType() { + return type; + } + + public static Optional getByType(String type){ + for (TabelExternalType e : values()){ + if (StringUtils.equals(type,e.getType())){ + return Optional.of(e); + } + } + return Optional.empty(); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelAuthentication.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelAuthentication.java new file mode 100644 index 000000000..958db2041 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelAuthentication.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.context; + +import lombok.Data; + +@Data +public class DataModelAuthentication { + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContext.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContext.java new file mode 100644 index 000000000..c19cfce89 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContext.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.context; + + +import lombok.Data; + +@Data +public class DataModelSecurityContext { + private DataModelAuthentication dataModelAuthentication; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolder.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolder.java new file mode 100644 index 000000000..d4c0c17e7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolder.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.context; + + +public class DataModelSecurityContextHolder { + + private static DataModelSecurityContextHolderStrategy strategy; + + static { + initialize(); + } + + private static void initialize(){ + strategy = new ThreadLocalSecurityContextHolderStrategy(); + } + + + /** + * Explicitly clears the context value from the current thread. + */ + public static void clearContext() { + strategy.clearContext(); + } + + /** + * Obtain the current SecurityContext. + * @return the security context (never null) + */ + public static DataModelSecurityContext getContext() { + return strategy.getContext(); + } + + public static void setContext(DataModelSecurityContext context) { + strategy.setContext(context); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolderStrategy.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolderStrategy.java new file mode 100644 index 000000000..9c6f3b90a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/DataModelSecurityContextHolderStrategy.java @@ -0,0 +1,30 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.context; + + +public interface DataModelSecurityContextHolderStrategy { + + void clearContext(); + + /** + * Obtains the current context. + * @return a context (never null - create a default implementation if + * necessary) + */ + DataModelSecurityContext getContext(); + + /** + * Sets the current context. + * @param context to the new argument (should never be null, although + * implementations must check if null has been passed and throw an + * IllegalArgumentException in such cases) + */ + void setContext(DataModelSecurityContext context); + + /** + * Creates a new, empty context implementation, for use by + * SecurityContextRepository implementations, when creating a new context for + * the first time. + * @return the empty context. + */ + DataModelSecurityContext createEmptyContext(); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/ThreadLocalSecurityContextHolderStrategy.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/ThreadLocalSecurityContextHolderStrategy.java new file mode 100644 index 000000000..27769e47e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/context/ThreadLocalSecurityContextHolderStrategy.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.context; + + +import org.springframework.util.Assert; + +final class ThreadLocalSecurityContextHolderStrategy implements DataModelSecurityContextHolderStrategy{ + + private static final ThreadLocal contextHolder = new ThreadLocal<>(); + + @Override + public void clearContext() { + contextHolder.remove(); + } + + @Override + public DataModelSecurityContext getContext() { + DataModelSecurityContext ctx = contextHolder.get(); + if (ctx == null) { + ctx = createEmptyContext(); + contextHolder.set(ctx); + } + return ctx; + } + + @Override + public void setContext(DataModelSecurityContext context) { + Assert.notNull(context, "Only non-null SecurityContext instances are permitted"); + contextHolder.set(context); + } + + @Override + public DataModelSecurityContext createEmptyContext() { + return new DataModelSecurityContext(); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/CreateTableDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/CreateTableDTO.java new file mode 100644 index 000000000..0c053569a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/CreateTableDTO.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.dto; + + +import lombok.Data; + +@Data +public class CreateTableDTO { + private Integer status; + + private String taskId; + + private String sql; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/PreviewDataDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/PreviewDataDTO.java new file mode 100644 index 000000000..9d85b6594 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/dto/PreviewDataDTO.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.dto; + + +import lombok.Data; + +@Data +public class PreviewDataDTO { + private Object metadata; + + private Object data; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindLabelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindLabelEvent.java new file mode 100644 index 000000000..59bcbd7f9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindLabelEvent.java @@ -0,0 +1,36 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class BindLabelEvent extends ApplicationEvent { + + private String user; + + private String label; + + private String tableName; + + private String labelGuid; + + private String tableGuid; + + public BindLabelEvent(Object source, String user, String label, String tableName, String labelGuid, String tableGuid) { + super(source); + this.user = user; + this.label = label; + this.tableName = tableName; + this.labelGuid = labelGuid; + this.tableGuid = tableGuid; + } + + public BindLabelEvent(Object source, String user, String label, String tableName) { + super(source); + this.user = user; + this.label = label; + this.tableName = tableName; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindModelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindModelEvent.java new file mode 100644 index 000000000..182b04134 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/BindModelEvent.java @@ -0,0 +1,33 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.request.BindModelTypeAction; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class BindModelEvent extends ApplicationEvent { + + private String user; + + private String modelName; + + private ClassificationConstant modelType; + + private String tableName; + + private String guid; + + + public BindModelEvent(Object source,String user,String guid,String tableName,String modelName,ClassificationConstant modelType) { + super(source); + this.user = user; + this.guid = guid; + this.tableName = tableName; + this.modelName = modelName; + this.modelType = modelType; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateLabelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateLabelEvent.java new file mode 100644 index 000000000..bb301eddb --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateLabelEvent.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class CreateLabelEvent extends ApplicationEvent { + + private String user; + + private String name; + + public CreateLabelEvent(Object source, String user, String name) { + super(source); + this.user = user; + this.name = name; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateModelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateModelEvent.java new file mode 100644 index 000000000..8a1f52b98 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/CreateModelEvent.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; +@Getter +@ToString +public class CreateModelEvent extends ApplicationEvent { + + private String user; + + private ClassificationConstant type; + + private String name; + + public CreateModelEvent(Object source,String user, String name, ClassificationConstant type) { + super(source); + this.type = type; + this.name = name; + this.user = user; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteLabelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteLabelEvent.java new file mode 100644 index 000000000..a9ff076d3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteLabelEvent.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class DeleteLabelEvent extends ApplicationEvent { + private String user; + + private String name; + + public DeleteLabelEvent(Object source, String user, String name) { + super(source); + this.user = user; + this.name = name; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteModelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteModelEvent.java new file mode 100644 index 000000000..e2690c665 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/DeleteModelEvent.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class DeleteModelEvent extends ApplicationEvent { + private String user; + + private ClassificationConstant type; + + private String name; + + public DeleteModelEvent(Object source,String user, String name, ClassificationConstant type) { + super(source); + this.type = type; + this.name = name; + this.user = user; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindLabelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindLabelEvent.java new file mode 100644 index 000000000..5c8066aa1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindLabelEvent.java @@ -0,0 +1,40 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + +import javafx.application.Application; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class UnBindLabelEvent extends ApplicationEvent { + + private String user; + + private String label; + + private String tableName; + + private String labelGuid; + + private String tableGuid; + + private String relationGuid; + + public UnBindLabelEvent(Object source, String user, String label, String tableName, String labelGuid, String tableGuid, String relationGuid) { + super(source); + this.user = user; + this.label = label; + this.tableName = tableName; + this.labelGuid = labelGuid; + this.tableGuid = tableGuid; + this.relationGuid = relationGuid; + } + + public UnBindLabelEvent(Object source, String user, String label, String tableName) { + super(source); + this.user = user; + this.label = label; + this.tableName = tableName; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindModelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindModelEvent.java new file mode 100644 index 000000000..a75f30539 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UnBindModelEvent.java @@ -0,0 +1,32 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class UnBindModelEvent extends ApplicationEvent { + + private String user; + + private String modelName; + + private ClassificationConstant modelType; + + private String tableName; + + private String guid; + + + public UnBindModelEvent(Object source,String user,String guid,String tableName,String modelName,ClassificationConstant modelType) { + super(source); + this.user = user; + this.guid = guid; + this.tableName = tableName; + this.modelName = modelName; + this.modelType = modelType; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateLabelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateLabelEvent.java new file mode 100644 index 000000000..8c7831fb2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateLabelEvent.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class UpdateLabelEvent extends ApplicationEvent { + private String user; + + private String name; + + private String oriName; + + public UpdateLabelEvent(Object source, String user, String name, String oriName) { + super(source); + this.user = user; + this.name = name; + this.oriName = oriName; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateModelEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateModelEvent.java new file mode 100644 index 000000000..7e71bd08d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/event/UpdateModelEvent.java @@ -0,0 +1,29 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.event; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class UpdateModelEvent extends ApplicationEvent { + + private String name; + + private ClassificationConstant type; + + private String user; + + private String orgName; + + + public UpdateModelEvent(Object source,String user,String name,String orgName, ClassificationConstant type) { + super(source); + this.user = user; + this.type = type; + this.name = name; + this.orgName = orgName; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/exception/DSSDatamodelCenterException.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/exception/DSSDatamodelCenterException.java new file mode 100644 index 000000000..1e3b2464b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/exception/DSSDatamodelCenterException.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.exception; + +import org.apache.linkis.common.exception.ErrorException; + + +public class DSSDatamodelCenterException extends ErrorException { + + public DSSDatamodelCenterException(int errCode, String desc) { + super(errCode, desc); + } + + public DSSDatamodelCenterException(int errCode, String desc, String ip, int port, String serviceKind) { + super(errCode, desc, ip, port, serviceKind); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/filter/AuthFilter.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/filter/AuthFilter.java new file mode 100644 index 000000000..3cd168727 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/filter/AuthFilter.java @@ -0,0 +1,32 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.filter; + + +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelAuthentication; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AuthenticationClientStrategy; +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +@Component +public class AuthFilter implements Filter, AuthenticationClientStrategy { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @Override + public void destroy() { + + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + DataModelAuthentication dataModelAuthentication = new DataModelAuthentication(); + dataModelAuthentication.setUser(getStrategyUser((HttpServletRequest) servletRequest)); + DataModelSecurityContextHolder.getContext().setDataModelAuthentication(dataModelAuthentication); + filterChain.doFilter(servletRequest, servletResponse); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonDataModelJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonDataModelJobLauncher.java new file mode 100644 index 000000000..48593eb41 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonDataModelJobLauncher.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; + +public class CommonDataModelJobLauncher implements DataModelJobLauncher { + + @Override + public SubmittableInteractiveJob callBack(SubmittableInteractiveJob job) { + return job; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonExistsDataModelJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonExistsDataModelJobTask.java new file mode 100644 index 000000000..dbc55e828 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/CommonExistsDataModelJobTask.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +public class CommonExistsDataModelJobTask extends DataModelJobTask { + + @Override + public void formatCode(String orgCode) { + setCode(orgCode); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobLauncher.java new file mode 100644 index 000000000..7fe70468a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobLauncher.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +import org.apache.linkis.computation.client.ResultSetIterator; +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; + +public class DataExistsDataModelJobLauncher implements DataModelJobLauncher { + @Override + public Integer callBack(SubmittableInteractiveJob job) { + ResultSetIterator iterator = job.getResultSetIterables()[0].iterator(); + + System.out.println(iterator.getMetadata()); + + // 如果已数据返回1 + if (iterator.hasNext()) { + return 1; + } + return 0; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobTask.java new file mode 100644 index 000000000..a9f28eeb1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataExistsDataModelJobTask.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +public class DataExistsDataModelJobTask extends DataModelJobTask { + @Override + public void formatCode(String orgCode) { + setCode(String.format("select * from %s limit 1",orgCode)); + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobLauncher.java new file mode 100644 index 000000000..915e2700c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobLauncher.java @@ -0,0 +1,28 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +import com.webank.wedatasphere.dss.datamodel.center.common.config.LinkisJobConfiguration; +import org.apache.linkis.computation.client.LinkisJobClient; +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; + +public interface DataModelJobLauncher { + /** + * + * @param launchTask + * @return + */ + default E launch(DataModelJobTask launchTask){ + LinkisJobClient.config().setDefaultServerUrl(LinkisJobConfiguration.LINKIS_SERVER_URL.getValue()); + SubmittableInteractiveJob job = + LinkisJobClient.interactive().builder().setEngineType(launchTask.getEngineType()) + .setRunTypeStr(launchTask.getRunType()).setCreator(launchTask.getCreator()) + .setCode(launchTask.getCode()).addExecuteUser(launchTask.getExecuteUser()).build(); + // 3. Submit Job to Linkis + job.submit(); + // 4. Wait for Job completed + job.waitForCompleted(); + return callBack(job); + } + + E callBack(SubmittableInteractiveJob job); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTask.java new file mode 100644 index 000000000..cbc23adf1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTask.java @@ -0,0 +1,62 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + + +public abstract class DataModelJobTask { + + private String engineType; + + private String runType; + + private String code; + + private String creator; + + private String executeUser; + + public void setEngineType(String engineType) { + this.engineType = engineType; + } + + public void setRunType(String runType) { + this.runType = runType; + } + + public void setCode(String code) { + this.code = code; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public void setExecuteUser(String executeUser) { + this.executeUser = executeUser; + } + + public String getEngineType() { + return engineType; + } + + public String getRunType() { + return runType; + } + + public String getCode() { + return code; + } + + + public String getCreator() { + return creator; + } + + + public String getExecuteUser() { + return executeUser; + } + + + + public abstract void formatCode(String orgCode); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTaskBuilder.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTaskBuilder.java new file mode 100644 index 000000000..8a480d8bd --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/DataModelJobTaskBuilder.java @@ -0,0 +1,46 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +public class DataModelJobTaskBuilder { + + private DataModelJobTask dataModelJobTask; + + public DataModelJobTaskBuilder withDataExistsExchangisJobTask(){ + dataModelJobTask = new DataExistsDataModelJobTask(); + return this; + } + + public DataModelJobTaskBuilder withCommonExchangisJobTask(){ + dataModelJobTask = new CommonExistsDataModelJobTask(); + return this; + } + + public DataModelJobTaskBuilder creator(String creator){ + dataModelJobTask.setCreator(creator); + return this; + } + + public DataModelJobTaskBuilder engineType(String engineType){ + dataModelJobTask.setEngineType(engineType); + return this; + } + + public DataModelJobTaskBuilder runType(String runType){ + dataModelJobTask.setRunType(runType); + return this; + } + + public DataModelJobTaskBuilder executeUser(String executeUser){ + dataModelJobTask.setExecuteUser(executeUser); + return this; + } + + public DataModelJobTaskBuilder code(String code){ + dataModelJobTask.formatCode(code); + return this; + } + + public DataModelJobTask build(){ + return dataModelJobTask; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/PreviewDataModelJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/PreviewDataModelJobLauncher.java new file mode 100644 index 000000000..d637977b1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/launcher/PreviewDataModelJobLauncher.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.launcher; + + +import org.apache.linkis.computation.client.ResultSetIterator; +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; +import scala.collection.Map; + +import java.util.List; + +public class PreviewDataModelJobLauncher implements DataModelJobLauncher>>{ + + @Override + public List> callBack(SubmittableInteractiveJob job) { + ResultSetIterator iterator = job.getResultSetIterables()[0].iterator(); + + return null; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/listener/AssertsListener.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/listener/AssertsListener.java new file mode 100644 index 000000000..ce44875ca --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/listener/AssertsListener.java @@ -0,0 +1,136 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.listener; + + +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.*; +import com.webank.wedatasphere.dss.data.governance.response.*; +import com.webank.wedatasphere.dss.datamodel.center.common.event.*; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AssertsSyncService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class AssertsListener { + + private static final Logger LOGGER = LoggerFactory.getLogger(AssertsListener.class); + + + @Resource + private AssertsSyncService assertsSyncService; + + @EventListener + @Async("taskExecutor") + public void createModel(CreateModelEvent event) { + try { + CreateModelTypeResult result = assertsSyncService.syncCreateModel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + + } + + @EventListener + @Async("taskExecutor") + public void updateModel(UpdateModelEvent event) { + try { + UpdateModelTypeResult result = assertsSyncService.syncUpdateModel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void deleteModel(DeleteModelEvent event) { + LOGGER.info("deleteModel event : {}", event); + try { + DeleteModelTypeResult result = assertsSyncService.syncDeleteModel(event); + LOGGER.info("deleteModel result : {}", result.getResult()); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void bindModel(BindModelEvent event) { + LOGGER.info("bindModel event : {}", event); + try { + BindModelTypeResult result = assertsSyncService.syncBindModel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void unBindModel(UnBindModelEvent event) { + LOGGER.info("unBindModel event : {}", event); + try { + UnBindModelTypeResult result = assertsSyncService.syncUnBindModel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void createLabel(CreateLabelEvent event) { + LOGGER.info("createLabel event : {}", event); + try { + CreateLabelResult result = assertsSyncService.syncCreateLabel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void updateLabel(UpdateLabelEvent event) { + LOGGER.info("updateLabel event : {}", event); + try { + UpdateLabelResult result = assertsSyncService.syncUpdateLabel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void deleteLabel(DeleteLabelEvent event) { + LOGGER.info("deleteLabel event : {}", event); + try { + DeleteLabelResult result = assertsSyncService.syncDeleteLabel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void bindLabel(BindLabelEvent event) { + LOGGER.info("bindLabel event : {}", event); + try { + BindLabelResult result = assertsSyncService.syncBindLabel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @EventListener + @Async("taskExecutor") + public void unBindLabel(UnBindLabelEvent event) { + LOGGER.info("unBindLabel event : {}", event); + try { + UnBindLabelResult result = assertsSyncService.syncUnBindLabel(event); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AssertsSyncService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AssertsSyncService.java new file mode 100644 index 000000000..271c309d3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AssertsSyncService.java @@ -0,0 +1,208 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.*; +import com.webank.wedatasphere.dss.data.governance.response.*; +import com.webank.wedatasphere.dss.datamodel.center.common.event.*; +import com.webank.wedatasphere.dss.datamodel.center.common.listener.AssertsListener; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class AssertsSyncService { + @Resource + private LinkisDataAssetsRemoteClient client; + + private static final Logger LOGGER = LoggerFactory.getLogger(AssertsListener.class); + + + public CreateModelTypeResult syncCreateModel(CreateModelEvent event){ + LOGGER.info("createModel event : {}",event); + try { + CreateModelTypeResult result = client.createModelType(CreateModelTypeAction.builder() + .setUser(event.getUser()) + .setType(event.getType()) + .setName(event.getName()) + .build()); + LOGGER.info("createModel result : {}",result.getInfo()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + public UpdateModelTypeResult syncUpdateModel(UpdateModelEvent event){ + LOGGER.info("updateModel event : {}",event); + if(StringUtils.equals(event.getName(),event.getOrgName())){ + LOGGER.info("name is same ignore"); + return null; + } + try { + UpdateModelTypeResult result = client.updateModelType(UpdateModelTypeAction.builder() + .setUser(event.getUser()) + .setName(event.getName()) + .setType(event.getType()) + .setOrgName(event.getOrgName()) + .build()); + LOGGER.info("updateModel result : {}",result.getInfo()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public DeleteModelTypeResult syncDeleteModel(DeleteModelEvent event){ + LOGGER.info("deleteModel event : {}",event); + try { + DeleteModelTypeResult result = client.deleteModelType(DeleteModelTypeAction.builder() + .setUser(event.getUser()) + .setType(event.getType()) + .setName(event.getName()) + .build()); + LOGGER.info("deleteModel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public BindModelTypeResult syncBindModel(BindModelEvent event){ + LOGGER.info("bindModel event : {}",event); + try { + BindModelTypeResult result = client.bindModelType(BindModelTypeAction.builder() + .setUser(event.getUser()) + .setGuid(event.getGuid()) + .setModelName(event.getModelName()) + .setModelType(event.getModelType()) + .setTableName(event.getTableName()) + .build()); + LOGGER.info("bindModel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public UnBindModelTypeResult syncUnBindModel(UnBindModelEvent event){ + LOGGER.info("unBindModel event : {}", event); + try { + UnBindModelTypeResult result = client.unBindModelType(UnBindModelTypeAction.builder() + .setUser(event.getUser()) + .setGuid(event.getGuid()) + .setModelName(event.getModelName()) + .setModelType(event.getModelType()) + .setTableName(event.getTableName()) + .build()); + LOGGER.info("unBindModel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public CreateLabelResult syncCreateLabel(CreateLabelEvent event){ + LOGGER.info("createLabel event : {}", event); + try { + CreateLabelResult result = client.createLabel(CreateLabelAction.builder() + .setUser(event.getUser()) + .setName(event.getName()) + .build()); + LOGGER.info("createLabel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public UpdateLabelResult syncUpdateLabel(UpdateLabelEvent event){ + LOGGER.info("updateLabel event : {}", event); + if(StringUtils.equals(event.getName(),event.getOriName())){ + LOGGER.info("name is same ignore"); + return null; + } + try { + UpdateLabelResult result = client.updateLabel(UpdateLabelAction.builder() + .setUser(event.getUser()) + .setOrgName(event.getOriName()) + .setName(event.getName()) + .build()); + LOGGER.info("updateLabel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + public DeleteLabelResult syncDeleteLabel(DeleteLabelEvent event){ + LOGGER.info("deleteLabel event : {}", event); + try { + DeleteLabelResult result = client.deleteLabel(DeleteLabelAction.builder() + .setUser(event.getUser()) + .setName(event.getName()) + .build()); + LOGGER.info("deleteLabel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public BindLabelResult syncBindLabel(BindLabelEvent event){ + LOGGER.info("bindLabel event : {}", event); + try { + BindLabelResult result = client.bindLabel(BindLabelAction.builder() + .setUser(event.getUser()) + .setLabel(event.getLabel()) + .setTableName(event.getTableName()) + .setLabelGuid(event.getLabelGuid()) + .setTableGuid(event.getTableGuid()) + .build()); + LOGGER.info("bindLabel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + public UnBindLabelResult syncUnBindLabel(UnBindLabelEvent event){ + LOGGER.info("unBindLabel event : {}", event); + try { + UnBindLabelResult result = client.unBindLabel(UnBindLabelAction.builder() + .setUser(event.getUser()) + .setLabel(event.getLabel()) + .setTableName(event.getTableName()) + .setLabelGuid(event.getLabelGuid()) + .setTableGuid(event.getTableGuid()) + .setRelationGuid(event.getRelationGuid()) + .build()); + LOGGER.info("unBindLabel result : {}",result.getResult()); + return result; + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + } + } + + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AuthenticationClientStrategy.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AuthenticationClientStrategy.java new file mode 100644 index 000000000..8a5692713 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/AuthenticationClientStrategy.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +import com.webank.wedatasphere.dss.datamodel.center.common.config.ClientStrategy; +import org.apache.linkis.common.conf.CommonVars; +import org.apache.linkis.server.security.SecurityFilter; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; + +public interface AuthenticationClientStrategy { + + CommonVars CLIENT_STRATEGY = CommonVars.apply("wds.wedatasphere.data.model.client.strategy", ""); + + default String getStrategyUser(HttpServletRequest req){ + if (StringUtils.equals(ClientStrategy.TOKEN.getCode(),CLIENT_STRATEGY.getValue())){ + return SecurityFilter.getLoginUsername(req); + } + return "hadoop"; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/CycleReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/CycleReferenceService.java new file mode 100644 index 000000000..f0f72e4a2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/CycleReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface CycleReferenceService { + /** + * 周期被引用情况 + * @param name + * @return + */ + int cycleReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseDimensionReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseDimensionReferenceService.java new file mode 100644 index 000000000..c2412c343 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseDimensionReferenceService.java @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DataWarehouseDimensionReferenceService extends DimensionThemeReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseIndicatorReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseIndicatorReferenceService.java new file mode 100644 index 000000000..4f70599fe --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseIndicatorReferenceService.java @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DataWarehouseIndicatorReferenceService extends IndicatorThemeReferenceService,IndicatorModifierReferenceService,IndicatorCycleReferenceService,IndicatorLayerReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseLabelReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseLabelReferenceService.java new file mode 100644 index 000000000..45a7696fb --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseLabelReferenceService.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + +/** + * 标签引用数仓情况统计 + */ +public interface DataWarehouseLabelReferenceService extends LabelThemeReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseMeasuredReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseMeasuredReferenceService.java new file mode 100644 index 000000000..173904679 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseMeasuredReferenceService.java @@ -0,0 +1,6 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + + +public interface DataWarehouseMeasuredReferenceService extends MeasuredThemeReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseReferenceService.java new file mode 100644 index 000000000..891383d26 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseReferenceService.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + +/** + * 数仓被引用情况统计 + */ +public interface DataWarehouseReferenceService extends ThemeReferenceService,LayerReferenceService,CycleReferenceService,ModifierReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseTableReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseTableReferenceService.java new file mode 100644 index 000000000..d749b6aaa --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DataWarehouseTableReferenceService.java @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DataWarehouseTableReferenceService extends TableThemeReferenceService,TableCycleReferenceService,TableLayerReferenceService,TableModifierReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelIndicatorReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelIndicatorReferenceService.java new file mode 100644 index 000000000..ceac23203 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelIndicatorReferenceService.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + +/** + * 指标引用数据模型情况统计 + */ +public interface DatamodelIndicatorReferenceService extends IndicatorDimensionReferenceService,IndicatorMeasuredReferenceService,IndicatorIndicatorReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelReferencService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelReferencService.java new file mode 100644 index 000000000..81d772f8c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelReferencService.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +/** + * 数据模型被引用情况统计 + */ +public interface DatamodelReferencService extends IndicatorReferenceService,DimensionReferenceService,MeasureReferenceService,LabelReferenceService{ + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelTableReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelTableReferenceService.java new file mode 100644 index 000000000..7ab7141d3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DatamodelTableReferenceService.java @@ -0,0 +1,5 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DatamodelTableReferenceService extends TableIndicatorReferenceService,TableDimensionReferenceService,TableMeasuredReferenceService,TableLabelReferenceService{ +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionReferenceService.java new file mode 100644 index 000000000..251c34fcb --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DimensionReferenceService { + + /** + * 维度被引用情况 + * @param name + * @return + */ + int dimensionReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionThemeReferenceService.java new file mode 100644 index 000000000..7f0dd3b82 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/DimensionThemeReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface DimensionThemeReferenceService { + + /** + * 主题引用情况 + * @param name + * @return + */ + int dimensionThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorCycleReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorCycleReferenceService.java new file mode 100644 index 000000000..c1aa29899 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorCycleReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorCycleReferenceService { + /** + * 周期引用情况 + * @param name + * @return + */ + int indicatorCycleReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorDimensionReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorDimensionReferenceService.java new file mode 100644 index 000000000..8a7677a47 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorDimensionReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorDimensionReferenceService { + + /** + * 指标引用维度计数 + * @param name + * @return + */ + int indicatorDimensionReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorIndicatorReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorIndicatorReferenceService.java new file mode 100644 index 000000000..04603abe3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorIndicatorReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorIndicatorReferenceService { + /** + * 原子指标引用情况 + * @param name + * @return + */ + int indicatorIndicatorCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorLayerReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorLayerReferenceService.java new file mode 100644 index 000000000..ac9a7ad2a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorLayerReferenceService.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorLayerReferenceService { + + /** + * 分层引用情况 + * @param name + * @return + */ + int indicatorLayerReferenceCount(String name); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorMeasuredReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorMeasuredReferenceService.java new file mode 100644 index 000000000..e9606873f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorMeasuredReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorMeasuredReferenceService { + + /** + * 指标引用度量计数 + * @param name + * @return + */ + int indicatorMeasuredReference(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorModifierReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorModifierReferenceService.java new file mode 100644 index 000000000..edb7ccc58 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorModifierReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorModifierReferenceService { + /** + * 修饰词引用情况 + * @param name + * @return + */ + int indicatorModifierReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorReferenceService.java new file mode 100644 index 000000000..fea380544 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorReferenceService { + + /** + * 指标被引用情况 + * @param name + * @return + */ + int indicatorReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorThemeReferenceService.java new file mode 100644 index 000000000..d89e04b68 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/IndicatorThemeReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface IndicatorThemeReferenceService { + /** + * 主题引用情况 + * @param name + * @return + */ + int indicatorThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelReferenceService.java new file mode 100644 index 000000000..cbdca0dcf --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface LabelReferenceService { + /** + * 标签被引用情况 + * @param name + * @return + */ + int labelReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelThemeReferenceService.java new file mode 100644 index 000000000..2627ee4a9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LabelThemeReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface LabelThemeReferenceService { + /** + * 标签引用情况 + * @param name + * @return + */ + int labelThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LayerReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LayerReferenceService.java new file mode 100644 index 000000000..5d0228ab1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/LayerReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + + +public interface LayerReferenceService { + /** + * 分层被引用情况 + * @param name + * @return + */ + int layerReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasureReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasureReferenceService.java new file mode 100644 index 000000000..289eb1879 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasureReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface MeasureReferenceService { + /** + * 度量被引用情况 + * @param name + * @return + */ + int measureReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasuredThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasuredThemeReferenceService.java new file mode 100644 index 000000000..251a77c28 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/MeasuredThemeReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + + +public interface MeasuredThemeReferenceService { + /** + * 主题引用情况 + * @param name + * @return + */ + int measureThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ModifierReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ModifierReferenceService.java new file mode 100644 index 000000000..2e1328ed7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ModifierReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface ModifierReferenceService { + /** + * 修饰词被引用情况 + * @param name + * @return + */ + int modifierReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableCycleReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableCycleReferenceService.java new file mode 100644 index 000000000..bdfb48b77 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableCycleReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableCycleReferenceService { + /** + * 周期引用情况 + * @param name + * @return + */ + int tableCycleReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableDimensionReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableDimensionReferenceService.java new file mode 100644 index 000000000..02b00eda8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableDimensionReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableDimensionReferenceService { + + /** + * 表引用维度计数 + * @param name + * @return + */ + int tableDimensionReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableIndicatorReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableIndicatorReferenceService.java new file mode 100644 index 000000000..57c2541ad --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableIndicatorReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableIndicatorReferenceService { + + /** + * 表引用指标计数 + * @param name + * @return + */ + int tableIndicatorReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLabelReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLabelReferenceService.java new file mode 100644 index 000000000..58eac733a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLabelReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + + +public interface TableLabelReferenceService { + /** + * 表引用标签计数 + * @param name + * @return + */ + int tableLabelReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLayerReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLayerReferenceService.java new file mode 100644 index 000000000..2cfb2be05 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableLayerReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableLayerReferenceService { + /** + * 分层引用情况 + * @param name + * @return + */ + int tableLayerReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableMeasuredReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableMeasuredReferenceService.java new file mode 100644 index 000000000..8dcd53655 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableMeasuredReferenceService.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableMeasuredReferenceService { + + /** + * 表引用度量计数 + * @param name + * @return + */ + int tableMeasuredReferenceService(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableModifierReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableModifierReferenceService.java new file mode 100644 index 000000000..51f653416 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableModifierReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableModifierReferenceService { + /** + * 修饰词引用情况 + * @param name + * @return + */ + int tableModifierReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableThemeReferenceService.java new file mode 100644 index 000000000..ad72534aa --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/TableThemeReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface TableThemeReferenceService { + /** + * 主题引用情况 + * @param name + * @return + */ + int tableThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ThemeReferenceService.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ThemeReferenceService.java new file mode 100644 index 000000000..1d50fc5b8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/ThemeReferenceService.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service; + + +public interface ThemeReferenceService { + /** + * 主题被引用情况 + * @param name + * @return + */ + int themeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/impl/DatamodelReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/impl/DatamodelReferenceServiceImpl.java new file mode 100644 index 000000000..0f6f7355b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/service/impl/DatamodelReferenceServiceImpl.java @@ -0,0 +1,42 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.service.impl; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelIndicatorReferenceService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelReferencService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelTableReferenceService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DatamodelReferenceServiceImpl implements DatamodelReferencService { + + @Resource + private DatamodelIndicatorReferenceService datamodelIndicatorReferenceService; + + @Resource + private DatamodelTableReferenceService datamodelTableReferenceService; + + @Override + public int dimensionReferenceCount(String name) { + return datamodelIndicatorReferenceService.indicatorDimensionReferenceCount(name) + + datamodelTableReferenceService.tableDimensionReferenceCount(name); + } + + @Override + public int indicatorReferenceCount(String name) { + return datamodelTableReferenceService.tableIndicatorReferenceCount(name) + + datamodelIndicatorReferenceService.indicatorIndicatorCount(name); + } + + @Override + public int measureReferenceCount(String name) { + return datamodelIndicatorReferenceService.indicatorMeasuredReference(name) + + datamodelTableReferenceService.tableMeasuredReferenceService(name); + } + + @Override + public int labelReferenceCount(String name){ + return datamodelTableReferenceService.tableLabelReferenceCount(name); + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/DataModelUJESJobTaskBuilder.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/DataModelUJESJobTaskBuilder.java new file mode 100644 index 000000000..74f390f72 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/DataModelUJESJobTaskBuilder.java @@ -0,0 +1,32 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataModelUJESJobTask; + +public class DataModelUJESJobTaskBuilder { + + private DataModelUJESJobTask dataModelUJESJobTask; + + public DataModelUJESJobTaskBuilder(DataModelUJESJobTask dataModelUJESJobTask){ + this.dataModelUJESJobTask = dataModelUJESJobTask; + } + + public DataModelUJESJobTaskBuilder code(String code){ + dataModelUJESJobTask.formatCode(code); + return this; + } + + public DataModelUJESJobTaskBuilder count(Integer count){ + dataModelUJESJobTask.setCount(count); + return this; + } + + public DataModelUJESJobTaskBuilder user(String user){ + dataModelUJESJobTask.setUser(user); + return this; + } + + public DataModelUJESJobTask build(){ + return dataModelUJESJobTask; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/AbstractDataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/AbstractDataModelUJESJobLauncher.java new file mode 100644 index 000000000..ea9417b1c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/AbstractDataModelUJESJobLauncher.java @@ -0,0 +1,56 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataModelUJESJobTask; +import org.apache.linkis.common.utils.Utils; +import org.apache.linkis.ujes.client.UJESClient; +import org.apache.linkis.ujes.client.request.JobExecuteAction; +import org.apache.linkis.ujes.client.response.*; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Resource; + +public abstract class AbstractDataModelUJESJobLauncher implements DataModelUJESJobLauncher{ + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDataModelUJESJobLauncher.class); + + @Resource + protected UJESClient client; + + + protected void launch0(DataModelUJESJobTask task, JobExecuteResult jobExecuteResult){ + LOGGER.info("exec code : {}", task.getCode()); + //System.out.println("execId: " + jobExecuteResult.getExecID() + ", taskId: " + jobExecuteResult.taskID()); + LOGGER.info("execId : {}, taskId : {}",jobExecuteResult.getExecID(),jobExecuteResult.taskID()); + JobStatusResult status = client.status(jobExecuteResult); + while (!status.isCompleted()) { + JobProgressResult progress = client.progress(jobExecuteResult); + //System.out.println("progress: " + progress.getProgress()); + LOGGER.info("progress : {}",progress.getProgress()); + Utils.sleepQuietly(500); + status = client.status(jobExecuteResult); + } + + } + + @Override + public E launch(DataModelUJESJobTask task) { + try { + JobExecuteResult jobExecuteResult = client.execute(JobExecuteAction.builder().setCreator("hdfs") + .addExecuteCode(task.getCode()) + .setEngineType((JobExecuteAction.EngineType) JobExecuteAction.EngineType$.MODULE$.HIVE()).setEngineTypeStr("hql") + .setUser(task.getUser()).build()); + launch0(task,jobExecuteResult); + return callBack(jobExecuteResult); + }catch (Exception e){ + LOGGER.error(e.getMessage(),e); + throw e; + }finally { + //IOUtils.closeQuietly(client); + } + } + + abstract E callBack(JobExecuteResult jobExecuteResult); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/CreateTableDataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/CreateTableDataModelUJESJobLauncher.java new file mode 100644 index 000000000..54d0e2e90 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/CreateTableDataModelUJESJobLauncher.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + +import com.webank.wedatasphere.dss.datamodel.center.common.dto.CreateTableDTO; +import org.apache.linkis.ujes.client.response.JobExecuteResult; +import org.apache.linkis.ujes.client.response.JobInfoResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public class CreateTableDataModelUJESJobLauncher extends AbstractDataModelUJESJobLauncher{ + private static final Logger LOGGER = LoggerFactory.getLogger(CreateTableDataModelUJESJobLauncher.class); + + @Override + CreateTableDTO callBack(JobExecuteResult jobExecuteResult) { + JobInfoResult jobInfo = client.getJobInfo(jobExecuteResult); + + CreateTableDTO createTableDTO = new CreateTableDTO(); + createTableDTO.setStatus(jobInfo.getStatus()); + createTableDTO.setTaskId(jobExecuteResult.getTaskID()); + LOGGER.info("create table status : {}, info : {}",createTableDTO,jobInfo); + return createTableDTO; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataExistsDataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataExistsDataModelUJESJobLauncher.java new file mode 100644 index 000000000..0c786175a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataExistsDataModelUJESJobLauncher.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + + +import org.apache.linkis.ujes.client.request.ResultSetAction; +import org.apache.linkis.ujes.client.response.JobExecuteResult; +import org.apache.linkis.ujes.client.response.JobInfoResult; +import org.apache.linkis.ujes.client.response.ResultSetResult; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class DataExistsDataModelUJESJobLauncher extends AbstractDataModelUJESJobLauncher{ + + @Override + Boolean callBack( JobExecuteResult jobExecuteResult) { + JobInfoResult jobInfo = client.getJobInfo(jobExecuteResult); + String resultSet = jobInfo.getResultSetList(client)[0]; + ResultSetResult resultSetResult = client.resultSet(ResultSetAction.builder().setPath(resultSet).setUser(jobExecuteResult.getUser()).build()); + + Object fileContents = resultSetResult.getFileContent(); + return !CollectionUtils.isEmpty((List)fileContents); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataModelUJESJobLauncher.java new file mode 100644 index 000000000..9646b3b45 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DataModelUJESJobLauncher.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataModelUJESJobTask; + +public interface DataModelUJESJobLauncher { + + + /** + * + * @param task + * @return + */ + E launch(DataModelUJESJobTask task); + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DropTableDataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DropTableDataModelUJESJobLauncher.java new file mode 100644 index 000000000..eff067f67 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/DropTableDataModelUJESJobLauncher.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + + +import org.apache.linkis.ujes.client.response.JobExecuteResult; +import org.apache.linkis.ujes.client.response.JobInfoResult; +import org.springframework.stereotype.Component; + +@Component +public class DropTableDataModelUJESJobLauncher extends AbstractDataModelUJESJobLauncher{ + + @Override + Boolean callBack(JobExecuteResult jobExecuteResult) { + JobInfoResult jobInfo = client.getJobInfo(jobExecuteResult); + return jobInfo.getStatus()==0; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/PreviewDataModelUJESJobLauncher.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/PreviewDataModelUJESJobLauncher.java new file mode 100644 index 000000000..63784d187 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/launcher/PreviewDataModelUJESJobLauncher.java @@ -0,0 +1,28 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher; + + + +import com.webank.wedatasphere.dss.datamodel.center.common.dto.PreviewDataDTO; +import org.apache.linkis.ujes.client.request.ResultSetAction; +import org.apache.linkis.ujes.client.response.JobExecuteResult; +import org.apache.linkis.ujes.client.response.JobInfoResult; +import org.apache.linkis.ujes.client.response.ResultSetResult; +import org.springframework.stereotype.Component; + +@Component +public class PreviewDataModelUJESJobLauncher extends AbstractDataModelUJESJobLauncher { + + @Override + PreviewDataDTO callBack(JobExecuteResult jobExecuteResult) { + JobInfoResult jobInfo = client.getJobInfo(jobExecuteResult); + String resultSet = jobInfo.getResultSetList(client)[0]; + ResultSetResult resultSetResult = client.resultSet(ResultSetAction.builder().setPath(resultSet).setUser(jobExecuteResult.getUser()).build()); + + Object fileContents = resultSetResult.getFileContent(); + Object metadata = resultSetResult.getMetadata(); + PreviewDataDTO preview = new PreviewDataDTO(); + preview.setMetadata(metadata); + preview.setData(fileContents); + return preview; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/CreateTableDataModelUJESJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/CreateTableDataModelUJESJobTask.java new file mode 100644 index 000000000..8c18728a5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/CreateTableDataModelUJESJobTask.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.task; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.DataModelUJESJobTaskBuilder; + +public class CreateTableDataModelUJESJobTask extends DataModelUJESJobTask { + + public static DataModelUJESJobTaskBuilder newBuilder() { + return new DataModelUJESJobTaskBuilder(new CreateTableDataModelUJESJobTask()); + } + + CreateTableDataModelUJESJobTask() { + } + + + @Override + public void formatCode(String code) { + setCode(code); + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataExistsDataModelUJESJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataExistsDataModelUJESJobTask.java new file mode 100644 index 000000000..b39415e70 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataExistsDataModelUJESJobTask.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.task; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.DataModelUJESJobTaskBuilder; + +public class DataExistsDataModelUJESJobTask extends DataModelUJESJobTask{ + + public static DataModelUJESJobTaskBuilder newBuilder(){ + return new DataModelUJESJobTaskBuilder(new DataExistsDataModelUJESJobTask()); + } + + DataExistsDataModelUJESJobTask(){}; + + @Override + public void formatCode(String code) { + setCode( String.format("select * from %s limit 1",code)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataModelUJESJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataModelUJESJobTask.java new file mode 100644 index 000000000..f417f5001 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DataModelUJESJobTask.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.task; + + +import lombok.Data; + +@Data +public abstract class DataModelUJESJobTask { + + private String code; + + private Integer count = 10; + + private String user; + + public abstract void formatCode(String code); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DropTableDataModelUJESJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DropTableDataModelUJESJobTask.java new file mode 100644 index 000000000..ca78c0683 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/DropTableDataModelUJESJobTask.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.task; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.DataModelUJESJobTaskBuilder; + +public class DropTableDataModelUJESJobTask extends DataModelUJESJobTask { + + public static DataModelUJESJobTaskBuilder newBuilder() { + return new DataModelUJESJobTaskBuilder(new DropTableDataModelUJESJobTask()); + } + + DropTableDataModelUJESJobTask() { + } + + + @Override + public void formatCode(String code) { + setCode(String.format("drop table if exists %s",code)); + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/PreviewDataModelUJESJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/PreviewDataModelUJESJobTask.java new file mode 100644 index 000000000..4188e5383 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/ujes/task/PreviewDataModelUJESJobTask.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.ujes.task; + + +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.DataModelUJESJobTaskBuilder; + +public class PreviewDataModelUJESJobTask extends DataModelUJESJobTask { + + public static DataModelUJESJobTaskBuilder newBuilder() { + return new DataModelUJESJobTaskBuilder(new PreviewDataModelUJESJobTask()); + } + + PreviewDataModelUJESJobTask() { + } + + + @Override + public void formatCode(String code) { + setCode(String.format("select * from %s limit %s", code,getCount()+"")); + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/vo/PageVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/vo/PageVO.java new file mode 100644 index 000000000..ec3e6a80c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/main/java/com/webank/wedatasphere/dss/datamodel/center/common/vo/PageVO.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.datamodel.center.common.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class PageVO { + private Integer pageSize = 50; + + private Integer pageNum = 1; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/TestJobTask.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/TestJobTask.java new file mode 100644 index 000000000..77819be5c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/TestJobTask.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel; + + +import org.apache.linkis.computation.client.LinkisJobClient; +import org.apache.linkis.computation.client.ResultSetIterator; +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; + +public class TestJobTask { + public static void main(String[] args) { + // TODO First, set the right gateway url. + LinkisJobClient.config().setDefaultServerUrl("http://121.36.12.247:8088"); + //TODO Secondly, please modify the executeUser + SubmittableInteractiveJob job = LinkisJobClient.interactive().builder() + .setEngineType("hive-2.3.3").setRunTypeStr("hql") + .setCode("select * from linkis_db.linkis_partitions limit 1") + .addExecuteUser("hdfs") + .setCreator("hdfs") + .build(); + // 3. Submit Job to Linkis + job.submit(); +// System.out.println("execId: " + job.getJobSubmitResult().getExecID() + ", taskId: " + job.getJobSubmitResult().taskID()); +// System.out.println("ResponseBody:"+job.getJobSubmitResult().getResponseBody()); + +// // 4. Wait for Job completed + job.waitForCompleted(); + +// // 5. Get results from iterators. + ResultSetIterator iterator = job.getResultSetIterables()[0].iterator(); + System.out.println(iterator.getMetadata()); + while(iterator.hasNext()){ + System.out.println(iterator.next()); + } + + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/UJESClientImplTestJ.java b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/UJESClientImplTestJ.java new file mode 100644 index 000000000..439fd817e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-common/src/test/java/com/webank/wedatasphere/dss/datamodel/UJESClientImplTestJ.java @@ -0,0 +1,97 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.webank.wedatasphere.dss.datamodel; + +import com.google.gson.Gson; +import org.apache.linkis.common.utils.Utils; +import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy; +import org.apache.linkis.httpclient.dws.config.DWSClientConfig; +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder; +import org.apache.linkis.ujes.client.UJESClient; +import org.apache.linkis.ujes.client.UJESClientImpl; +import org.apache.linkis.ujes.client.request.JobExecuteAction; +import org.apache.linkis.ujes.client.request.ResultSetAction; +import org.apache.linkis.ujes.client.response.*; +import lombok.Data; +import org.apache.commons.io.IOUtils; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Deprecated +public class UJESClientImplTestJ{ + public static void main(String[] args){ + // Suggest to use LinkisJobClient to submit job to Linkis. + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) (DWSClientConfigBuilder.newBuilder().addServerUrl("http://121.36.12.247:8088") + .connectionTimeout(30000).discoveryEnabled(true) + .discoveryFrequency(1, TimeUnit.MINUTES) + .loadbalancerEnabled(true).maxConnectionSize(5) + .retryEnabled(false).readTimeout(30000) + .setAuthenticationStrategy(new StaticAuthenticationStrategy()).setAuthTokenKey("hdfs") + .setAuthTokenValue("hdfs"))).setDWSVersion("v1").build(); + UJESClient client = new UJESClientImpl(clientConfig); + + JobExecuteResult jobExecuteResult = client.execute(JobExecuteAction.builder().setCreator("hdfs") + .addExecuteCode("select * from default.testTable3 limit 1") + //.addExecuteCode("show tables") + //.addExecuteCode(String.format("drop table if exists %s","linkis_db.linkis_test01")) + .setEngineType((JobExecuteAction.EngineType)JobExecuteAction.EngineType$.MODULE$.HIVE()).setEngineTypeStr("hql") + .setUser("hdfs").build()); + System.out.println("execId: " + jobExecuteResult.getExecID() + ", taskId: " + jobExecuteResult.taskID()); + JobStatusResult status = client.status(jobExecuteResult); + while(!status.isCompleted()) { + JobProgressResult progress = client.progress(jobExecuteResult); + System.out.println("progress: " + progress.getProgress()); + Utils.sleepQuietly(500); + status = client.status(jobExecuteResult); + } + JobInfoResult jobInfo = client.getJobInfo(jobExecuteResult); + System.out.println(jobInfo.getStatus()); + String resultSet = jobInfo.getResultSetList(client)[0]; + ResultSetResult resultSetResult =client.resultSet(ResultSetAction.builder().setPath(resultSet).setUser(jobExecuteResult.getUser()).build()); + Object fileContents = resultSetResult.getFileContent(); + Object metadata = resultSetResult.getMetadata(); + System.out.println("metadata: " + metadata); + System.out.println("fileContents: " + fileContents); + System.out.println("fileContents size: " + ((List)fileContents).size()); + Preview preview = new Preview(); + preview.setMetadata(metadata); + preview.setData(fileContents); + Gson gson = new Gson(); + System.out.println(gson.toJson(preview)); + IOUtils.closeQuietly(client); + } + + @Data + public static class Preview{ + private Object metadata; + + private Object data; + } + + @Data + public static class Metadata{ + private String columnName; + + private String comment; + + private String dataType; + } + + + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_ddl.sql b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_ddl.sql new file mode 100644 index 000000000..ddf7202ab --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_ddl.sql @@ -0,0 +1,320 @@ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + + +-- ---------------------------- +-- Table structure for dss_datamodel_dimension +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_dimension`; +CREATE TABLE `dss_datamodel_dimension` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator`; +CREATE TABLE `dss_datamodel_indicator` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `is_core_indicator` tinyint(1) NOT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `theme_area_en` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '英文名称', + `layer_area_en` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '英文名称', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator_content +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator_content`; +CREATE TABLE `dss_datamodel_indicator_content` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `indicator_id` int(11) NOT NULL, + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `indicator_type` int(4) NOT NULL COMMENT '0 原子 1 衍生 2 派生 3 复杂 4 自定义', + `measure_id` int(11) DEFAULT NULL, + `indicator_source_info` text COLLATE utf8_bin NOT NULL COMMENT '指标来源信息', + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `business` varchar(255) COLLATE utf8_bin NOT NULL, + `business_owner` varchar(255) COLLATE utf8_bin NOT NULL, + `calculation` varchar(255) COLLATE utf8_bin NOT NULL, + `calculation_owner` varchar(255) COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_indicator_version +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_indicator_version`; +CREATE TABLE `dss_datamodel_indicator_version` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `version` varchar(255) COLLATE utf8_bin NOT NULL, + `version_context` text COLLATE utf8_bin NOT NULL COMMENT '历史版本详细信息快照', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`,`version`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_label +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_label`; +CREATE TABLE `dss_datamodel_label` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `params` text COLLATE utf8_bin COMMENT '标签键值对 json', + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_measure +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_measure`; +CREATE TABLE `dss_datamodel_measure` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `field_identifier` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `owner` varchar(64) COLLATE utf8_bin NOT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` tinyint(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE, + UNIQUE KEY `field_identifier` (`field_identifier`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table`; +CREATE TABLE `dss_datamodel_table` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) COLLATE utf8_bin NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `creator` varchar(255) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_layer_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级', + `warehouse_layer_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级英文', + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `lifecycle` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期', + `is_partition_table` tinyint(1) NOT NULL, + `is_available` tinyint(1) NOT NULL, + `storage_type` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '存储类型:hive/mysql', + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `compress` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '压缩格式', + `file_type` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '文件格式', + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + `is_external` tinyint(1) NOT NULL COMMENT '是否外部表 0 内部表 1外部表', + `location` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '外部表时 location', + `label` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '标签', + `lifecycle_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期英文', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `database` (`data_base`,`name`) USING BTREE, + UNIQUE KEY `name` (`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_collcetion +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_collcetion`; +CREATE TABLE `dss_datamodel_table_collcetion` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `warehouse_layer_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级', + `warehouse_theme_name` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题格式为: theme_domain_name.theme_name', + `lifecycle` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期', + `is_partition_table` tinyint(1) DEFAULT NULL, + `is_available` tinyint(1) DEFAULT NULL, + `storage_type` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '存储类型:hive/mysql', + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `compress` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '压缩格式', + `file_type` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '文件格式', + `user` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '收藏人', + `version` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '版本信息:默认1', + `is_external` tinyint(1) DEFAULT NULL COMMENT '是否外部表 0 内部表 1外部表', + `location` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '外部表时 location', + `label` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '标签', + `guid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'atlas标识', + `warehouse_layer_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓层级英文', + `warehouse_theme_name_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '数仓主题英文', + `lifecycle_en` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '生命周期英文', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_columns +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_columns`; +CREATE TABLE `dss_datamodel_table_columns` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `table_id` int(11) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `alias` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `type` varchar(64) COLLATE utf8_bin NOT NULL, + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_partition_field` tinyint(1) NOT NULL, + `is_primary` tinyint(1) NOT NULL, + `length` int(11) DEFAULT NULL, + `rule` varchar(128) COLLATE utf8_bin DEFAULT NULL, + `model_type` int(4) DEFAULT NULL COMMENT '0 维度,1 指标 2 度量', + `model_name_en` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '模型信息英文名称', + `model_id` int(11) DEFAULT NULL COMMENT '关联具体模型id信息(因为有版本数据表id不可靠,暂时不用)', + `model_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '模型信息名称', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=226 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_materialized_history +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_materialized_history`; +CREATE TABLE `dss_datamodel_table_materialized_history` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `materialized_code` mediumtext COLLATE utf8_bin COMMENT '物化sql', + `reason` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '物化原因', + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '物化者', + `status` int(4) NOT NULL COMMENT 'succeed,failed,in progess', + `create_time` datetime NOT NULL, + `last_update_time` datetime NOT NULL, + `task_id` varchar(512) COLLATE utf8_bin NOT NULL, + `error_msg` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `tableName` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '表名', + `data_base` varchar(255) COLLATE utf8_bin NOT NULL, + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_params +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_params`; +CREATE TABLE `dss_datamodel_table_params` ( + `tbl_id` int(11) NOT NULL, + `param_key` varchar(256) COLLATE utf8_bin NOT NULL COMMENT '创建表参数:压缩/orc等', + `param_value` mediumtext COLLATE utf8_bin, + PRIMARY KEY (`tbl_id`,`param_key`) USING BTREE, + KEY `table_params_n49` (`tbl_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_statics +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_statics`; +CREATE TABLE `dss_datamodel_table_statics` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `origin_tables` varchar(4000) COLLATE utf8_bin DEFAULT NULL, + `table_id` int(11) NOT NULL, + `access_count` int(11) NOT NULL, + `last_access_time` int(11) NOT NULL, + `sample_data_path` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '存储10行用例数据', + `sample_update_time` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_stats +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_stats`; +CREATE TABLE `dss_datamodel_table_stats` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `data_base` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `column_count` int(11) NOT NULL COMMENT '字段数', + `storage_size` int(11) NOT NULL COMMENT '存储大小', + `file_count` int(11) NOT NULL COMMENT '文件数', + `partition_count` int(11) NOT NULL COMMENT '分区数', + `access_count` int(11) NOT NULL COMMENT '访问次数', + `collect_count` int(11) NOT NULL COMMENT '收藏次数', + `ref_count` int(11) NOT NULL COMMENT '引用次数', + `version` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认1', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for dss_datamodel_table_version +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_table_version`; +CREATE TABLE `dss_datamodel_table_version` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tbl_id` int(11) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `is_materialized` tinyint(1) NOT NULL COMMENT '是否物化', + `table_code` mediumtext COLLATE utf8_bin COMMENT '创建table的sql', + `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '版本注释', + `version` varchar(128) COLLATE utf8_bin NOT NULL COMMENT '版本信息:默认version0002', + `table_params` mediumtext COLLATE utf8_bin, + `columns` varchar(4000) COLLATE utf8_bin DEFAULT NULL, + `source_type` varchar(128) COLLATE utf8_bin DEFAULT 'add' COMMENT 'rollback,update,add', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `creator` varchar(255) COLLATE utf8_bin DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `table_version` (`version`,`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_dml.sql b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_dml.sql new file mode 100644 index 000000000..5a7024fe8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/db/datamodel_dml.sql @@ -0,0 +1,40 @@ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for dss_datamodel_dictionary +-- ---------------------------- +DROP TABLE IF EXISTS `dss_datamodel_dictionary`; +CREATE TABLE `dss_datamodel_dictionary` ( + `id` int(50) NOT NULL COMMENT '主键id', + `code` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型code', + `type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `created_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', + `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `sort` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数模字典' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of dss_datamodel_dictionary +-- ---------------------------- +INSERT INTO `dss_datamodel_dictionary` VALUES (10000001, 'Snappy', 'COMPRESS', 'Snappy', '2021-10-09 15:41:23', '2021-10-09 15:55:44', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000002, 'None', 'COMPRESS', '无', '2021-10-09 15:42:17', '2021-10-20 14:48:59', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000003, 'ORC', 'FILE_STORAGE', 'orc', '2021-10-09 15:55:32', '2021-10-20 14:49:00', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000004, 'Parquet', 'FILE_STORAGE', 'Parquet', '2021-10-09 15:55:32', '2021-10-20 14:49:02', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000005, 'None', 'FILE_STORAGE', '无', '2021-10-09 15:55:32', '2021-10-20 14:49:04', 3); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000006, 'Once', 'LIFECYCLE', '一次', '2021-10-09 15:55:32', '2021-10-20 14:49:05', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000007, 'OneDay', 'LIFECYCLE', '一天', '2021-10-09 15:55:32', '2021-10-20 14:49:06', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000008, 'HalfMonth', 'LIFECYCLE', '半月', '2021-10-09 15:55:32', '2021-10-20 14:49:07', 3); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000009, 'OneMonth', 'LIFECYCLE', '一个月', '2021-10-09 15:55:32', '2021-10-20 14:49:08', 4); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000010, 'ThreeMonths', 'LIFECYCLE', '三个月', '2021-10-09 15:55:32', '2021-10-20 14:49:09', 5); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000011, 'SixMonths', 'LIFECYCLE', '六个月', '2021-10-09 15:55:32', '2021-10-20 14:49:10', 6); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000012, 'OneYear', 'LIFECYCLE', '一年', '2021-10-09 15:55:32', '2021-10-20 14:49:11', 7); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000013, 'ThreeYears', 'LIFECYCLE', '三年', '2021-10-09 15:55:32', '2021-10-20 14:49:12', 8); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000014, 'Hive', 'STORAGE_ENGINE', 'hive', '2021-10-09 15:55:32', '2021-10-20 14:49:19', 1); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000015, 'Mysql', 'STORAGE_ENGINE', 'mysql', '2021-10-09 15:55:32', '2021-10-20 14:49:20', 2); +INSERT INTO `dss_datamodel_dictionary` VALUES (10000016, 'ES', 'STORAGE_ENGINE', 'es', '2021-10-09 15:55:32', '2021-10-20 14:49:25', 3); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/pom.xml new file mode 100644 index 000000000..3a7530875 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/pom.xml @@ -0,0 +1,119 @@ + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-center-server + + + 8 + 8 + + + + + com.webank.wedatasphere.dss + dss-common + ${dss.version} + provided + + + com.webank.wedatasphere.dss + dss-datamodel-dimension-management + ${dss.version} + + + com.webank.wedatasphere.dss + dss-datamodel-measure-management + ${dss.version} + + + com.webank.wedatasphere.dss + dss-datamodel-indicator-management + ${dss.version} + + + com.webank.wedatasphere.dss + dss-datamodel-table-management + ${dss.version} + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-assembly-plugin + 2.3 + false + + + make-assembly + package + + single + + + + src/main/assembly/distribution.xml + + + + + + false + out + false + false + + src/main/assembly/distribution.xml + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + src/main/java + + **/*.xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/assembly/distribution.xml b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/assembly/distribution.xml similarity index 59% rename from dss-apps/dss-data-governance/dss-data-asset-server/src/main/assembly/distribution.xml rename to dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/assembly/distribution.xml index 46d83d32f..9a245b784 100644 --- a/dss-apps/dss-data-governance/dss-data-asset-server/src/main/assembly/distribution.xml +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/assembly/distribution.xml @@ -1,31 +1,30 @@ - dss-data-asset-server + dss-datamodel-center-server dir true - dss-data-asset-server + dss-datamodel-center-server @@ -39,8 +38,5 @@ true - - - diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/application.yml b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/application.yml new file mode 100644 index 000000000..bddac1e88 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/application.yml @@ -0,0 +1,20 @@ +server: + port: 9321 +spring: + application: + name: datamodel-server +eureka: + client: + serviceUrl: + defaultZone: http://localhost:20303/eureka/ + instance: + metadata-map: + test: wedatasphere + +management: + endpoints: + web: + exposure: + include: refresh,info +logging: + config: classpath:log4j2.xml diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/linkis.properties b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/linkis.properties new file mode 100644 index 000000000..4dcb6b7d9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/linkis.properties @@ -0,0 +1,104 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +wds.linkis.test.mode=true + + + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://localhost:3306/datamodel?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username= + +wds.linkis.server.mybatis.datasource.password= + + +wds.linkis.log.clear=true + +wds.linkis.server.version=v1 + + +wds.wedatasphere.linkis.serverurl=http://localhost:8088 + +wds.wedatasphere.linkis.authtoken.key=hdfs + +wds.wedatasphere.linkis.discovery.enabled=false + +wds.wedatasphere.linkis.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.linkis.authtoken.value=hdfs + +wds.wedatasphere.linkis.dws.version=v1 + + +##restful +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.dss.datamodel.indicator.restful,\ + com.webank.wedatasphere.dss.datamodel.table.restful,\ + com.webank.wedatasphere.dss.datamodel.dimension.restful,\ + com.webank.wedatasphere.dss.datamodel.measure.restful + +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/table/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/measure/dao/impl/*.xml,\ + classpath*:com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/*.xml + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.dss.datamodel.dimension.dao,\ + com.webank.wedatasphere.dss.datamodel.table.dao,\ + com.webank.wedatasphere.dss.datamodel.measure.dao,\ + com.webank.wedatasphere.dss.datamodel.indicator.dao + +wds.wedatasphere.warehouse.client.serverurl=http://localhost:29001 + +wds.wedatasphere.warehouse.client.authtoken.key=hdfs + +wds.wedatasphere.warehouse.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.warehouse.client.authtoken.value=hdfs + +wds.wedatasphere.warehouse.client.discovery.enabled=false + +wds.wedatasphere.warehouse.client.dws.version=v1 + + +wds.wedatasphere.assets.client.serverurl=http://localhost:29001 + +wds.wedatasphere.assets.client.authtoken.key=hdfs + +wds.wedatasphere.assets.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.wedatasphere.assets.client.discovery.enabled=false + +wds.wedatasphere.assets.client.authtoken.value=hdfs + +wds.wedatasphere.assets.client.dws.version=v1 + + + +wds.workspace.client.serverurl=http://localhost:29001 + +wds.workspace.client.authtoken.key=hdfs + +wds.workspace.client.authenticationStrategy=org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy + +wds.workspace.client.discovery.enabled=false + +wds.workspace.client.authtoken.value=hdfs + +wds.workspace.client.dws.version=v1 + + + +wds.wedatasphere.data.model.client.strategy=static diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j.properties b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j.properties new file mode 100644 index 000000000..0807e6087 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j.properties @@ -0,0 +1,37 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +### set log levels ### + +log4j.rootCategory=INFO,console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Threshold=INFO +log4j.appender.console.layout=org.apache.log4j.PatternLayout +#log4j.appender.console.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n +log4j.appender.console.layout.ConversionPattern= %d{ISO8601} %-5p (%t) %p %c{1} - %m%n + + +log4j.appender.com.webank.bdp.ide.core=org.apache.log4j.DailyRollingFileAppender +log4j.appender.com.webank.bdp.ide.core.Threshold=INFO +log4j.additivity.com.webank.bdp.ide.core=false +log4j.appender.com.webank.bdp.ide.core.layout=org.apache.log4j.PatternLayout +log4j.appender.com.webank.bdp.ide.core.Append=true +log4j.appender.com.webank.bdp.ide.core.File=logs/linkis.log +log4j.appender.com.webank.bdp.ide.core.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n + +log4j.logger.org.springframework=INFO diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j2.xml b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j2.xml new file mode 100644 index 000000000..5ae60f144 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/resources/log4j2.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/scala/com/webank/wedatasphere/dss/datamodel/DataModelApplication.scala b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/scala/com/webank/wedatasphere/dss/datamodel/DataModelApplication.scala new file mode 100644 index 000000000..a883c09ea --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-center-server/src/main/scala/com/webank/wedatasphere/dss/datamodel/DataModelApplication.scala @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel + +import com.webank.wedatasphere.dss.common.utils.DSSMainHelper +import org.apache.linkis.DataWorkCloudApplication +import org.apache.linkis.common.utils.{Logging, Utils} + +object DataModelApplication extends Logging{ + val userName: String = System.getProperty("user.name") + val hostName: String = Utils.getComputerName + + def main(args: Array[String]): Unit = { + val serviceName = System.getProperty("serviceName")//ProjectConf.SERVICE_NAME.getValue + DSSMainHelper.formatPropertyFiles(serviceName) + val allArgs = args ++ DSSMainHelper.getExtraSpringOptions + System.setProperty("hostName", hostName) + System.setProperty("userName", userName) + info(s"Ready to start $serviceName with args: ${allArgs.toList}.") + println(s"Test Ready to start $serviceName with args: ${allArgs.toList}.") + DataWorkCloudApplication.main(allArgs) + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/pom.xml new file mode 100644 index 000000000..0b84d659f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/pom.xml @@ -0,0 +1,59 @@ + + + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-dimension-management + + + + + com.webank.wedatasphere.dss + dss-datamodel-center-common + ${dss.version} + + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/DssDatamodelDimensionMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/DssDatamodelDimensionMapper.java new file mode 100644 index 000000000..34ccc9202 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/DssDatamodelDimensionMapper.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.dao; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import com.webank.wedatasphere.dss.datamodel.dimension.entity.DssDatamodelDimension; + +public interface DssDatamodelDimensionMapper extends BaseMapper { + int deleteByPrimaryKey(Long id); + + int insert(DssDatamodelDimension record); + + int insertSelective(DssDatamodelDimension record); + + DssDatamodelDimension selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(DssDatamodelDimension record); + + int updateByPrimaryKey(DssDatamodelDimension record); + + int updateIsAvailableById(@Param("updatedIsAvailable")Integer updatedIsAvailable,@Param("id")Long id); + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/DssDatamodelDimensionMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/DssDatamodelDimensionMapper.xml new file mode 100644 index 000000000..2e71b2525 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dao/impl/DssDatamodelDimensionMapper.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + id, `name`, field_identifier, formula, `comment`, warehouse_theme_name, `owner`, + principal_name, is_available, create_time, update_time + + + + + delete from dss_datamodel_dimension + where id = #{id,jdbcType=BIGINT} + + + + insert into dss_datamodel_dimension (`name`, field_identifier, formula, + `comment`, warehouse_theme_name, `owner`, + principal_name, is_available, create_time, + update_time) + values (#{name,jdbcType=VARCHAR}, #{fieldIdentifier,jdbcType=VARCHAR}, #{formula,jdbcType=VARCHAR}, + #{comment,jdbcType=VARCHAR}, #{warehouseThemeName,jdbcType=VARCHAR}, #{owner,jdbcType=VARCHAR}, + #{principalName,jdbcType=VARCHAR}, #{isAvailable,jdbcType=BOOLEAN}, #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}) + + + + insert into dss_datamodel_dimension + + + `name`, + + + field_identifier, + + + formula, + + + `comment`, + + + warehouse_theme_name, + + + `owner`, + + + principal_name, + + + is_available, + + + create_time, + + + update_time, + + + + + #{name,jdbcType=VARCHAR}, + + + #{fieldIdentifier,jdbcType=VARCHAR}, + + + #{formula,jdbcType=VARCHAR}, + + + #{comment,jdbcType=VARCHAR}, + + + #{warehouseThemeName,jdbcType=VARCHAR}, + + + #{owner,jdbcType=VARCHAR}, + + + #{principalName,jdbcType=VARCHAR}, + + + #{isAvailable,jdbcType=BOOLEAN}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + + + + update dss_datamodel_dimension + + + `name` = #{name,jdbcType=VARCHAR}, + + + field_identifier = #{fieldIdentifier,jdbcType=VARCHAR}, + + + formula = #{formula,jdbcType=VARCHAR}, + + + `comment` = #{comment,jdbcType=VARCHAR}, + + + warehouse_theme_name = #{warehouseThemeName,jdbcType=VARCHAR}, + + + `owner` = #{owner,jdbcType=VARCHAR}, + + + principal_name = #{principalName,jdbcType=VARCHAR}, + + + is_available = #{isAvailable,jdbcType=BOOLEAN}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=BIGINT} + + + + update dss_datamodel_dimension + set `name` = #{name,jdbcType=VARCHAR}, + field_identifier = #{fieldIdentifier,jdbcType=VARCHAR}, + formula = #{formula,jdbcType=VARCHAR}, + `comment` = #{comment,jdbcType=VARCHAR}, + warehouse_theme_name = #{warehouseThemeName,jdbcType=VARCHAR}, + `owner` = #{owner,jdbcType=VARCHAR}, + principal_name = #{principalName,jdbcType=VARCHAR}, + is_available = #{isAvailable,jdbcType=BOOLEAN}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + + + + update dss_datamodel_dimension + set is_available=#{updatedIsAvailable,jdbcType=BOOLEAN} + where id=#{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dto/DimensionQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dto/DimensionQueryDTO.java new file mode 100644 index 000000000..78b83523e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/dto/DimensionQueryDTO.java @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.dto; + + +import lombok.Data; + +import java.util.Date; + +@Data +public class DimensionQueryDTO { + private Long id; + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + + private String warehouseThemeNameEn; + + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Date createTime; + + private Date updateTime; + + /** + * 被引用次数 + */ + private Integer refCount =0; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/entity/DssDatamodelDimension.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/entity/DssDatamodelDimension.java new file mode 100644 index 000000000..5db862c15 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/entity/DssDatamodelDimension.java @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelDimension { + + @TableId(type = IdType.AUTO) + private Long id; + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + } \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/restful/DimensionRestfulApi.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/restful/DimensionRestfulApi.java new file mode 100644 index 000000000..fbd185065 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/restful/DimensionRestfulApi.java @@ -0,0 +1,100 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.restful; + +import com.webank.wedatasphere.dss.datamodel.dimension.service.DimensionService; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionAddVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionEnableVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionQueryVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +@RequestMapping(path = "/datamodel", produces = {"application/json"}) +@RestController +public class DimensionRestfulApi { + private static final Logger LOGGER = LoggerFactory.getLogger(DimensionRestfulApi.class); + + @Autowired + private DimensionService dimensionService; + + /** + * 新增 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/dimensions",method = RequestMethod.POST) + public Message add(HttpServletRequest req, @RequestBody DimensionAddVO vo) throws ErrorException { + LOGGER.info("dimensionAddVO : {}", vo); + return Message.ok().data("id", dimensionService.addDimension(vo)); + } + + /** + * 启用/禁用 + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/enable/{id}",method = RequestMethod.POST) + public Message enable(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody DimensionEnableVO vo) { + LOGGER.info("enable id : {}, vo : {}", id, vo); + return Message.ok().data("count", dimensionService.enableDimension(id, vo)); + } + + /** + * 修改 + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/dimensions/{id}",method = RequestMethod.PUT) + public Message update(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody DimensionUpdateVO vo) throws ErrorException{ + LOGGER.info("update id : {}, vo : {}", id, vo); + return Message.ok().data("count",dimensionService.updateDimension(id,vo)); + } + + /** + * 删除 + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/dimensions/{id}",method = RequestMethod.DELETE) + public Message delete(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("delete id : {}", id); + return Message.ok().data("count",dimensionService.deleteDimension(id)); + } + + /** + * 分页搜索 + * @param req + * @return + */ + @RequestMapping(value = "/dimensions/list",method = RequestMethod.POST) + public Message list(HttpServletRequest req,@RequestBody DimensionQueryVO vo){ + LOGGER.info("list vo : {}",vo); + return dimensionService.listDimensions(vo); + } + + + /** + * 查看 + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/dimensions/{id}",method = RequestMethod.GET) + public Message query(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("query id : {}", id); + return Message.ok().data("detail",dimensionService.queryById(id)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/DimensionService.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/DimensionService.java new file mode 100644 index 000000000..fa9c089bc --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/DimensionService.java @@ -0,0 +1,70 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.dimension.dto.DimensionQueryDTO; +import com.webank.wedatasphere.dss.datamodel.dimension.entity.DssDatamodelDimension; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionAddVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionEnableVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionQueryVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; + + +public interface DimensionService extends IService { + + /** + * 新增维度 + * @param vo + * @return + */ + long addDimension(DimensionAddVO vo)throws ErrorException; + + /** + * 启用/禁用 + * @param vo + * @return + */ + int enableDimension(Long id, DimensionEnableVO vo); + + + /** + * 更新 + * @param id + * @param vo + * @return + */ + int updateDimension(Long id, DimensionUpdateVO vo) throws ErrorException; + + + /** + * 删除 + * @param id + * @return + */ + int deleteDimension(Long id) throws ErrorException; + + + /** + * 查看 + * @param id + * @return + */ + DimensionQueryDTO queryById(Long id) throws ErrorException; + + + /** + * 查询列表 + * @param vo + * @return + */ + Message listDimensions(DimensionQueryVO vo); + + + /** + * 主题引用情况 + * @param name + * @return + */ + int dimensionThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DataWarehouseDimensionReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DataWarehouseDimensionReferenceServiceImpl.java new file mode 100644 index 000000000..3b4da459f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DataWarehouseDimensionReferenceServiceImpl.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.service.impl; + + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseDimensionReferenceService; +import com.webank.wedatasphere.dss.datamodel.dimension.service.DimensionService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseDimensionReferenceServiceImpl implements DataWarehouseDimensionReferenceService { + + @Resource + private DimensionService dimensionService; + + @Override + public int dimensionThemeReferenceCount(String name) { + return dimensionService.dimensionThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DimensionServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DimensionServiceImpl.java new file mode 100644 index 000000000..007fc17f8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/service/impl/DimensionServiceImpl.java @@ -0,0 +1,214 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.response.CreateModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.UpdateModelTypeResult; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.event.CreateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.DeleteModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UpdateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AssertsSyncService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelReferencService; +import com.webank.wedatasphere.dss.datamodel.dimension.dao.DssDatamodelDimensionMapper; +import com.webank.wedatasphere.dss.datamodel.dimension.dto.DimensionQueryDTO; +import com.webank.wedatasphere.dss.datamodel.dimension.entity.DssDatamodelDimension; +import com.webank.wedatasphere.dss.datamodel.dimension.service.DimensionService; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionAddVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionEnableVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionQueryVO; +import com.webank.wedatasphere.dss.datamodel.dimension.vo.DimensionUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.stream.Collectors; + + + +@Service +public class DimensionServiceImpl extends ServiceImpl implements DimensionService { + + private static final Logger LOGGER = LoggerFactory.getLogger(DimensionServiceImpl.class); + + private final ModelMapper modelMapper = new ModelMapper(); + + + @Resource + private AssertsSyncService assertsSyncService; + + @Resource + private DatamodelReferencService datamodelReferencService; + + @Override + @Transactional(rollbackFor = Exception.class) + public long addDimension(DimensionAddVO vo) throws DSSDatamodelCenterException{ + if (getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelDimension::getName, vo.getName()) + .or().eq(DssDatamodelDimension::getFieldIdentifier,vo.getFieldIdentifier())) > 0) { + LOGGER.error("errorCode : {}, dimension name or field identifier can not repeat, name : {}", ErrorCode.INDICATOR_ADD_ERROR.getCode(), vo.getName()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_ADD_ERROR.getCode(), "dimension name or field identifier can not repeat"); + } + + if (datamodelReferencService.dimensionReferenceCount(vo.getName())>0 + ||datamodelReferencService.dimensionReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, dimension name can not referenced", ErrorCode.DIMENSION_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_ADD_ERROR.getCode(), "dimension name can not referenced"); + } + + DssDatamodelDimension newOne = modelMapper.map(vo,DssDatamodelDimension.class); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + + getBaseMapper().insert(newOne); + + //同步atlas + CreateModelTypeResult result = assertsSyncService.syncCreateModel( + new CreateModelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getFieldIdentifier() + , ClassificationConstant.DIMENSION)); + return newOne.getId(); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int enableDimension(Long id ,DimensionEnableVO vo) { + DssDatamodelDimension enableOne = new DssDatamodelDimension(); + enableOne.setIsAvailable(vo.getIsAvailable()); + enableOne.setUpdateTime(new Date()); + return getBaseMapper().update(enableOne, Wrappers.lambdaUpdate().eq(DssDatamodelDimension::getId,id)); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDimension(Long id, DimensionUpdateVO vo) throws DSSDatamodelCenterException{ + DssDatamodelDimension org = getBaseMapper().selectById(id); + if (org == null) { + LOGGER.error("errorCode : {}, update dimension error not exists", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "update dimension error not exists"); + } + + if (datamodelReferencService.dimensionReferenceCount(org.getName())>0 + ||datamodelReferencService.dimensionReferenceCount(org.getFieldIdentifier())>0 + ||datamodelReferencService.dimensionReferenceCount(vo.getName())>0 + ||datamodelReferencService.dimensionReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, dimension name can not referenced", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "dimension name can not referenced"); + } + + + //当更新名称时 + if (!StringUtils.equals(vo.getName(), org.getName())) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelDimension::getName, vo.getName())); + if (repeat > 0) { + LOGGER.error("errorCode : {}, dimension name can not repeat ", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "dimension name can not repeat "); + } + } + + String orgFieldIdentifier = org.getFieldIdentifier(); + //当更新标识时 + if (!StringUtils.equals(vo.getFieldIdentifier(), orgFieldIdentifier)) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelDimension::getFieldIdentifier, vo.getFieldIdentifier())); + if (repeat > 0) { + LOGGER.error("errorCode : {}, dimension field identifier can not repeat", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "dimension field identifier can not repeat "); + } + } + DssDatamodelDimension updateOne = modelMapper.map(vo,DssDatamodelDimension.class); + updateOne.setUpdateTime(new Date()); + getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelDimension::getId,id)); + + //同步atlas + UpdateModelTypeResult updateModelTypeResult = assertsSyncService.syncUpdateModel( + new UpdateModelEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,vo.getFieldIdentifier() + ,orgFieldIdentifier + ,ClassificationConstant.DIMENSION)); + return 1; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteDimension(Long id) throws ErrorException{ + + DssDatamodelDimension dssDatamodelDimension = getBaseMapper().selectById(id); + if (dssDatamodelDimension == null){ + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_DELETE_ERROR.getCode(), "dimension id " +id +" not exists"); + } + //校验引用情况 + if(datamodelReferencService.dimensionReferenceCount(dssDatamodelDimension.getName())>0||datamodelReferencService.dimensionReferenceCount(dssDatamodelDimension.getFieldIdentifier())>0){ + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_DELETE_ERROR.getCode(), "dimension id " +id +" has referenced"); + } + getBaseMapper().deleteById(id); + //同步资产 + assertsSyncService.syncDeleteModel(new DeleteModelEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,dssDatamodelDimension.getFieldIdentifier() + ,ClassificationConstant.DIMENSION)); + return 1; + } + + + @Override + public Message listDimensions(DimensionQueryVO vo) { + QueryWrapper queryWrapper = new QueryWrapper() + .like(StringUtils.isNotBlank(vo.getName()),"name",vo.getName()) + .eq(vo.getIsAvailable()!=null,"is_available",vo.getIsAvailable()) + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()),"warehouse_theme_name",vo.getWarehouseThemeName()) + .like(StringUtils.isNotBlank(vo.getOwner()),"owner",vo.getOwner()); + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(),vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList(queryWrapper)); + //IPage iPage = page(new Page<>(vo.getPageNum(),vo.getPageSize()),queryWrapper); + + return Message.ok() + .data("list",pageInfo + .getList() + .stream() + .map(dssDatamodelDimension ->{ + DimensionQueryDTO dto = modelMapper.map(dssDatamodelDimension, DimensionQueryDTO.class); + dto.setRefCount(datamodelReferencService.dimensionReferenceCount(dssDatamodelDimension.getName())); + return dto; + }) + .collect(Collectors.toList())) + .data("total",pageInfo.getTotal()); + } + + + @Override + public DimensionQueryDTO queryById(Long id) throws ErrorException { + DssDatamodelDimension dssDatamodelDimension = getBaseMapper().selectById(id); + if (dssDatamodelDimension == null){ + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_QUERY_ERROR.getCode(), "dimension id " +id +" not exists"); + } + DimensionQueryDTO dto = modelMapper.map(dssDatamodelDimension,DimensionQueryDTO.class); + dto.setRefCount(datamodelReferencService.dimensionReferenceCount(dssDatamodelDimension.getName())); + return dto; + } + + + @Override + public int dimensionThemeReferenceCount(String name) { + int count = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelDimension::getWarehouseThemeName,name)); + int countEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelDimension::getWarehouseThemeNameEn,name)); + return count + countEn; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionAddVO.java new file mode 100644 index 000000000..cd5e1398a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionAddVO.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.vo; + +import com.webank.wedatasphere.dss.datamodel.dimension.entity.DssDatamodelDimension; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class DimensionAddVO { + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionEnableVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionEnableVO.java new file mode 100644 index 000000000..b64683c7e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionEnableVO.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.vo; + + +public class DimensionEnableVO { + + + private Integer isAvailable; + + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + @Override + public String toString() { + return "DimensionEnableVO{" + + "isAvailable=" + isAvailable + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionQueryVO.java new file mode 100644 index 000000000..2e46a9c3d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionQueryVO.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.vo; + +import com.webank.wedatasphere.dss.datamodel.center.common.vo.PageVO; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class DimensionQueryVO extends PageVO { + + private String name; + + private Integer isAvailable; + + private String owner; + + private String warehouseThemeName; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionUpdateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionUpdateVO.java new file mode 100644 index 000000000..74b2456d9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-dimension-management/src/main/java/com/webank/wedatasphere/dss/datamodel/dimension/vo/DimensionUpdateVO.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.dimension.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class DimensionUpdateVO { + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/pom.xml new file mode 100644 index 000000000..e55bf83cf --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/pom.xml @@ -0,0 +1,64 @@ + + + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-indicator-management + + + + + + com.webank.wedatasphere.dss + dss-datamodel-center-common + ${dss.version} + + + com.alibaba + fastjson + 1.2.83 + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorContentMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorContentMapper.java new file mode 100644 index 000000000..fc78a2d5c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorContentMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; + +public interface DssDatamodelIndicatorContentMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorMapper.java new file mode 100644 index 000000000..e75fbdec1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicator; + +public interface DssDatamodelIndicatorMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorVersionMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorVersionMapper.java new file mode 100644 index 000000000..6846fd04a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/DssDatamodelIndicatorVersionMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorVersion; + +public interface DssDatamodelIndicatorVersionMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/IndicatorQueryMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/IndicatorQueryMapper.java new file mode 100644 index 000000000..32778367a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/IndicatorQueryMapper.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dao; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorQuery; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + + +public interface IndicatorQueryMapper extends BaseMapper { + + String querySql = "SELECT a.*, b.indicator_type, b.measure_id, b.indicator_source_info, b.formula, b.business, b.business_owner, b.calculation, b.calculation_owner " + + " FROM dss_datamodel_indicator AS a LEFT JOIN dss_datamodel_indicator_content AS b ON b.indicator_id = a.id ${ew.customSqlSegment}"; + String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}"; + + @Select(querySql) + List page(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorContentMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorContentMapper.xml new file mode 100644 index 000000000..4dd3eebf8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorContentMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, indicator_id, version, indicator_type, measure_id, indicator_source_info, formula, + business, business_owner, calculation, calculation_owner, create_time, update_time + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorMapper.xml new file mode 100644 index 000000000..a0cd76e2b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, `name`, field_identifier, `comment`, warehouse_theme_name, `owner`, principal_name, + is_available, is_core_indicator, theme_area, layer_area, create_time, update_time, + version, warehouse_theme_name_en + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorVersionMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorVersionMapper.xml new file mode 100644 index 000000000..30981471b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dao/impl/DssDatamodelIndicatorVersionMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, `name`, `owner`, principal_name, version, version_context, create_time, update_time, + `comment` + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorContentQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorContentQueryDTO.java new file mode 100644 index 000000000..cde5742c3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorContentQueryDTO.java @@ -0,0 +1,143 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dto; + +import java.util.Date; + + +public class IndicatorContentQueryDTO { + + private Long id; + + private Long indicatorId; + + private String version; + + /** + * 0 原子 1 衍生 2 派生 3 复杂 4 自定义 + */ + private Integer indicatorType; + + private Long measureId; + + /** + * 指标来源信息 + */ + private String indicatorSourceInfo; + + private String formula; + + private String business; + + private String businessOwner; + + private String calculation; + + private String calculationOwner; + + private Date createTime; + + private Date updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getIndicatorId() { + return indicatorId; + } + + public void setIndicatorId(Long indicatorId) { + this.indicatorId = indicatorId; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Integer getIndicatorType() { + return indicatorType; + } + + public void setIndicatorType(Integer indicatorType) { + this.indicatorType = indicatorType; + } + + public Long getMeasureId() { + return measureId; + } + + public void setMeasureId(Long measureId) { + this.measureId = measureId; + } + + public String getIndicatorSourceInfo() { + return indicatorSourceInfo; + } + + public void setIndicatorSourceInfo(String indicatorSourceInfo) { + this.indicatorSourceInfo = indicatorSourceInfo; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public String getBusiness() { + return business; + } + + public void setBusiness(String business) { + this.business = business; + } + + public String getBusinessOwner() { + return businessOwner; + } + + public void setBusinessOwner(String businessOwner) { + this.businessOwner = businessOwner; + } + + public String getCalculation() { + return calculation; + } + + public void setCalculation(String calculation) { + this.calculation = calculation; + } + + public String getCalculationOwner() { + return calculationOwner; + } + + public void setCalculationOwner(String calculationOwner) { + this.calculationOwner = calculationOwner; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorQueryDTO.java new file mode 100644 index 000000000..b6ea24bba --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorQueryDTO.java @@ -0,0 +1,65 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dto; + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class IndicatorQueryDTO { + private Long id; + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String themeAreaEn; + + private String layerAreaEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + private Date createTime; + + private Date updateTime; + + private String version; + + /** + * 引用次数 + */ + private Integer refCount = 0; + + private IndicatorContentQueryDTO content; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionDTO.java new file mode 100644 index 000000000..d2ba5f11b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionDTO.java @@ -0,0 +1,43 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dto; + +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicator; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; + + +public class IndicatorVersionDTO { + + private DssDatamodelIndicator essential; + + private DssDatamodelIndicatorContent content; + + public IndicatorVersionDTO() { + } + + public IndicatorVersionDTO(DssDatamodelIndicator essential, DssDatamodelIndicatorContent content) { + this.essential = essential; + this.content = content; + } + + public DssDatamodelIndicator getEssential() { + return essential; + } + + public void setEssential(DssDatamodelIndicator essential) { + this.essential = essential; + } + + public DssDatamodelIndicatorContent getContent() { + return content; + } + + public void setContent(DssDatamodelIndicatorContent content) { + this.content = content; + } + + public static IndicatorVersionDTO of(DssDatamodelIndicator essential, DssDatamodelIndicatorContent content){ + IndicatorVersionDTO dto = new IndicatorVersionDTO(); + dto.setContent(content); + dto.setEssential(essential); + return dto; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionQueryDTO.java new file mode 100644 index 000000000..4a1ae6cf6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/dto/IndicatorVersionQueryDTO.java @@ -0,0 +1,106 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.dto; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; + +import java.util.Date; + + +public class IndicatorVersionQueryDTO { + + private Long id; + + private String name; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private String version; + + /** + * 历史版本详细信息快照 + */ + private String versionContext; + + private Date createTime; + + private Date updateTime; + + private String comment; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getVersionContext() { + return versionContext; + } + + public void setVersionContext(String versionContext) { + this.versionContext = versionContext; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicator.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicator.java new file mode 100644 index 000000000..aa6aa72e4 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicator.java @@ -0,0 +1,61 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelIndicator { + @TableId(type = IdType.AUTO) + private Long id; + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + private String themeAreaEn; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + private String layerAreaEn; + + private Date createTime; + + private Date updateTime; + + private String version; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorContent.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorContent.java new file mode 100644 index 000000000..517acbe72 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorContent.java @@ -0,0 +1,150 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +public class DssDatamodelIndicatorContent { + + @TableId(type = IdType.AUTO) + private Long id; + + private Long indicatorId; + + private String version; + + /** + * 0 原子 1 衍生 2 派生 3 复杂 4 自定义 + */ + private Integer indicatorType; + + private Long measureId; + + /** + * 指标来源信息 + */ + private String indicatorSourceInfo; + + private String formula; + + private String business; + + private String businessOwner; + + private String calculation; + + private String calculationOwner; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getIndicatorId() { + return indicatorId; + } + + public void setIndicatorId(Long indicatorId) { + this.indicatorId = indicatorId; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Integer getIndicatorType() { + return indicatorType; + } + + public void setIndicatorType(Integer indicatorType) { + this.indicatorType = indicatorType; + } + + public Long getMeasureId() { + return measureId; + } + + public void setMeasureId(Long measureId) { + this.measureId = measureId; + } + + public String getIndicatorSourceInfo() { + return indicatorSourceInfo; + } + + public void setIndicatorSourceInfo(String indicatorSourceInfo) { + this.indicatorSourceInfo = indicatorSourceInfo; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public String getBusiness() { + return business; + } + + public void setBusiness(String business) { + this.business = business; + } + + public String getBusinessOwner() { + return businessOwner; + } + + public void setBusinessOwner(String businessOwner) { + this.businessOwner = businessOwner; + } + + public String getCalculation() { + return calculation; + } + + public void setCalculation(String calculation) { + this.calculation = calculation; + } + + public String getCalculationOwner() { + return calculationOwner; + } + + public void setCalculationOwner(String calculationOwner) { + this.calculationOwner = calculationOwner; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorQuery.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorQuery.java new file mode 100644 index 000000000..3932fd9a7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorQuery.java @@ -0,0 +1,258 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.entity; + +import java.util.Date; + + +public class DssDatamodelIndicatorQuery { + + private Long id; + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + private Date createTime; + + private Date updateTime; + + private String version; + + /** + * 0 原子 1 衍生 2 派生 3 复杂 4 自定义 + */ + private Integer indicatorType; + + private Long measureId; + + /** + * 指标来源信息 + */ + private String indicatorSourceInfo; + + private String formula; + + private String business; + + private String businessOwner; + + private String calculation; + + private String calculationOwner; + + /** + * 引用次数 + */ + private Integer refCount = 0; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFieldIdentifier() { + return fieldIdentifier; + } + + public void setFieldIdentifier(String fieldIdentifier) { + this.fieldIdentifier = fieldIdentifier; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getWarehouseThemeName() { + return warehouseThemeName; + } + + public void setWarehouseThemeName(String warehouseThemeName) { + this.warehouseThemeName = warehouseThemeName; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + public Integer getIsCoreIndicator() { + return isCoreIndicator; + } + + public void setIsCoreIndicator(Integer isCoreIndicator) { + this.isCoreIndicator = isCoreIndicator; + } + + public String getThemeArea() { + return themeArea; + } + + public void setThemeArea(String themeArea) { + this.themeArea = themeArea; + } + + public String getLayerArea() { + return layerArea; + } + + public void setLayerArea(String layerArea) { + this.layerArea = layerArea; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Integer getIndicatorType() { + return indicatorType; + } + + public void setIndicatorType(Integer indicatorType) { + this.indicatorType = indicatorType; + } + + public Long getMeasureId() { + return measureId; + } + + public void setMeasureId(Long measureId) { + this.measureId = measureId; + } + + public String getIndicatorSourceInfo() { + return indicatorSourceInfo; + } + + public void setIndicatorSourceInfo(String indicatorSourceInfo) { + this.indicatorSourceInfo = indicatorSourceInfo; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public String getBusiness() { + return business; + } + + public void setBusiness(String business) { + this.business = business; + } + + public String getBusinessOwner() { + return businessOwner; + } + + public void setBusinessOwner(String businessOwner) { + this.businessOwner = businessOwner; + } + + public String getCalculation() { + return calculation; + } + + public void setCalculation(String calculation) { + this.calculation = calculation; + } + + public String getCalculationOwner() { + return calculationOwner; + } + + public void setCalculationOwner(String calculationOwner) { + this.calculationOwner = calculationOwner; + } + + public Integer getRefCount() { + return refCount; + } + + public void setRefCount(Integer refCount) { + this.refCount = refCount; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorVersion.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorVersion.java new file mode 100644 index 000000000..0acff1f3e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/entity/DssDatamodelIndicatorVersion.java @@ -0,0 +1,110 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +public class DssDatamodelIndicatorVersion { + + @TableId(type = IdType.AUTO) + private Long id; + + private String name; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private String version; + + /** + * 历史版本详细信息快照 + */ + private String versionContext; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + private String comment; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getVersionContext() { + return versionContext; + } + + public void setVersionContext(String versionContext) { + this.versionContext = versionContext; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/restful/IndicatorRestfulApi.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/restful/IndicatorRestfulApi.java new file mode 100644 index 000000000..2cee2efcd --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/restful/IndicatorRestfulApi.java @@ -0,0 +1,222 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.restful; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AuthenticationClientStrategy; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorService; +import com.webank.wedatasphere.dss.datamodel.indicator.vo.*; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.client.GovernanceDwRemoteClient; +import com.webank.wedatasphere.warehouse.client.action.ListDwLayerAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwModifierAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwStatisticalPeriodAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwThemeDomainAction; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import java.io.IOException; + + +@RequestMapping(path = "/datamodel", produces = {"application/json"}) +@RestController +public class IndicatorRestfulApi implements AuthenticationClientStrategy { + + + private static final Logger LOGGER = LoggerFactory.getLogger(IndicatorRestfulApi.class); + + @Autowired + private IndicatorService indicatorService; + + @Autowired + private GovernanceDwRemoteClient governanceDwRemoteClient; + + /** + * 新增 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/indicators",method = RequestMethod.POST) + public Message add(HttpServletRequest req, @RequestBody IndicatorAddVO vo) throws Exception { + LOGGER.info("indicatorAddVO : {}", vo); + return Message.ok().data("count",indicatorService.addIndicator(vo,"1" )); + } + + + /** + * 修改 + * @param req + * @param id + * @param vo + * @return + * @throws Exception + */ + @RequestMapping(value = "/indicators/{id}",method = RequestMethod.PUT) + public Message update(HttpServletRequest req, @PathVariable("id") Long id , @RequestBody IndicatorUpdateVO vo) throws Exception { + LOGGER.info("update id : {}, indicatorUpdateVO : {}", id, vo); + return Message.ok().data("count",indicatorService.updateIndicator(id,vo)); + } + + + /** + * 启用/禁用 + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/indicators/enable/{id}",method = RequestMethod.PUT) + public Message enable(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody IndicatorEnableVO vo) { + LOGGER.info("enable id : {}, vo : {}", id, vo); + return Message.ok().data("count", indicatorService.enableIndicator(id, vo)); + } + + + /** + * 分页搜索 + * @param req + * @return + */ + @RequestMapping(value = "/indicators/list",method = RequestMethod.POST) + public Message list(HttpServletRequest req, @RequestBody IndicatorQueryVO vo){ + LOGGER.info("list vo : {}",vo); + return indicatorService.listIndicators(vo); + } + + + + /** + * 查看 + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/indicators/{id}",method = RequestMethod.GET) + public Message query(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("query id : {}", id); + return indicatorService.queryById(id); + } + + /** + * 删除 + * @param req + * @param id + * @return + */ + @DELETE + @RequestMapping(value = "/indicators/{id}",method = RequestMethod.DELETE) + public Message delete(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("delete id : {}", id); + return Message.ok().data("count",indicatorService.deleteIndicator(id)); + } + + + /** + * 新增版本 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/indicators/versions/{id}",method = RequestMethod.POST) + public Message addVersion(HttpServletRequest req, @PathVariable("id") Long id,@RequestBody IndicatorVersionAddVO vo) throws Exception { + LOGGER.info("indicatorVersionAddVO : {}", vo); + return Message.ok().data("count",indicatorService.addIndicatorVersion(id,vo)); + } + + + + /** + * + * 回退指定版本 + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/indicators/versions/rollback",method = RequestMethod.POST) + public Message versionRollBack(HttpServletRequest req,IndicatorVersionRollBackVO vo) throws Exception { + LOGGER.info("indicatorVersionRollBackVO : {}", vo); + return Message.ok().data("count",indicatorService.versionRollBack(vo)); + } + + + + /** + * 搜索指标版本 + * @param req + * @return + */ + @RequestMapping(value = "/indicators/versions/list",method = RequestMethod.POST) + public Message indicatorVersionsList(HttpServletRequest req, @RequestBody IndicatorVersionQueryVO vo){ + LOGGER.info("version list vo : {}",vo); + return indicatorService.listIndicatorVersions(vo); + } + + + /** + * 指标相关主题可选列表 + * @param req + * @return + */ + @RequestMapping(value = "/themes/list",method = RequestMethod.POST) + public Message themesList(HttpServletRequest req){ + ListDwThemeDomainAction action = ListDwThemeDomainAction.builder().setUser(getStrategyUser(req)).setIsAvailable(true).build(); + String jsonStr=governanceDwRemoteClient.execute(action).getResponseBody(); + JSONObject jsonObject=JSON.parseObject(jsonStr); + JSONObject data=(JSONObject) jsonObject.get("data"); + return Message.ok().data("list",data.get("list")); + } + + /** + * 指标相关分层 + * @param req + * @return + */ + @RequestMapping(value = "/layers/list",method = RequestMethod.POST) + public Message layerList(HttpServletRequest req,@RequestBody LayerVO vo){ + LOGGER.info("layerList vo : {}",vo); + ListDwLayerAction action = ListDwLayerAction.builder().setIsAvailable(true).setDb(vo.getDbName()).setUser(getStrategyUser(req)).build(); + String jsonStr=governanceDwRemoteClient.execute(action).getResponseBody(); + JSONObject jsonObject=JSON.parseObject(jsonStr); + JSONObject data=(JSONObject) jsonObject.get("data"); + return Message.ok().data("list",data.get("list")); + } + + /** + * 指标相关周期列表 + * @param req + * @return + */ + @RequestMapping(value = "/cycles/list",method = RequestMethod.POST) + public Message cycleList(HttpServletRequest req,@RequestBody CycleVO vo){ + LOGGER.info("cycleList vo : {}",vo); + ListDwStatisticalPeriodAction action =ListDwStatisticalPeriodAction.builder().setUser(getStrategyUser(req)).setLayer(vo.getLayer()).setIsAvailable(true).setTheme(vo.getTheme()).build(); + String jsonStr=governanceDwRemoteClient.execute(action).getResponseBody(); + JSONObject jsonObject=JSON.parseObject(jsonStr); + JSONObject data=(JSONObject) jsonObject.get("data"); + return Message.ok().data("list",data.get("list")); + } + + /** + * 指标相关修饰词列表 + * @param req + * @return + */ + @RequestMapping(value = "/modifiers/list",method = RequestMethod.POST) + public Message modifierList(HttpServletRequest req,@RequestBody ModifierVO vo){ + LOGGER.info("modifierList vo : {}",vo); + ListDwModifierAction action = ListDwModifierAction.builder().setUser(getStrategyUser(req)).setLayer(vo.getLayer()).setIsAvailable(true).setTheme(vo.getTheme()).build(); + String jsonStr=governanceDwRemoteClient.execute(action).getResponseBody(); + JSONObject jsonObject=JSON.parseObject(jsonStr); + JSONObject data=(JSONObject) jsonObject.get("data"); + return Message.ok().data("list",data.get("list")); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorContentService.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorContentService.java new file mode 100644 index 000000000..0222ef406 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorContentService.java @@ -0,0 +1,59 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; +import com.webank.wedatasphere.dss.datamodel.indicator.vo.IndicatorContentVO; +import org.apache.linkis.common.exception.ErrorException; + +import java.util.List; + + +public interface IndicatorContentService extends IService { + + /** + * 新增 + * + * @param vo + * @return + */ + int addIndicatorContent(Long indicateId, String version, IndicatorContentVO vo) throws ErrorException; + + + /** + * 修改 + * @param indicateId + * @param version + * @param vo + * @return + * @throws ErrorException + */ + int updateIndicatorContent(Long indicateId, String version, IndicatorContentVO vo) throws ErrorException; + + + /** + * 查看 + * @param indicateId + * @return + */ + DssDatamodelIndicatorContent queryByIndicateId(Long indicateId); + + + /** + * 根据indicator 删除指标详情 + * @param id + * @return + * @throws ErrorException + */ + int deleteByIndicatorId(Long id)throws ErrorException; + + + /** + * 校验indicator引用情况 + * @param name + * @return + * @throws ErrorException + */ + List sourceInfoReference(String name); + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorService.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorService.java new file mode 100644 index 000000000..e7449a8eb --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorService.java @@ -0,0 +1,146 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicator; +import com.webank.wedatasphere.dss.datamodel.indicator.vo.*; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; + + +public interface IndicatorService extends IService { + + /** + * 新增 + * @param vo + * @param version + * @return + */ + Long addIndicator(IndicatorAddVO vo, String version) throws ErrorException; + + + + /** + * 更新 + * @param vo + * @return + * @throws ErrorException + */ + int updateIndicator(Long id, IndicatorUpdateVO vo) throws ErrorException; + + + + /** + * 启用/禁用 + * @param vo + * @return + */ + int enableIndicator(Long id, IndicatorEnableVO vo); + + + + /** + * 删除 + * @param id + * @return + * @throws ErrorException + */ + int deleteIndicator(Long id) throws ErrorException; + + + + /** + * 查询列表 + * @param vo + * @return + */ + Message listIndicators(IndicatorQueryVO vo); + + + /** + * 查看 + * @param id + * @return + */ + Message queryById(Long id) throws DSSDatamodelCenterException; + + + /** + * 新增版本 + * @param id + * @return + */ + int addIndicatorVersion(Long id, IndicatorVersionAddVO vo) throws ErrorException; + + + /** + * 回退到某一版本 + * @param vo + * @return + * @throws ErrorException + */ + int versionRollBack(IndicatorVersionRollBackVO vo) throws ErrorException; + + + /** + * 查询历史版本列表 + * @param vo + * @return + */ + Message listIndicatorVersions(IndicatorVersionQueryVO vo); + + + /** + * 主题引用情况 + * @param name + * @return + */ + int indicatorThemeReferenceCount(String name); + + /** + * 分层引用情况 + * @param name + * @return + */ + int indicatorLayerReferenceCount(String name); + + + /** + * 周期引用情况 + * @param name + * @return + */ + int indicatorCycleReferenceCount(String name); + + + /** + * 修饰词引用情况 + * @param name + * @return + */ + int indicatorModifierReferenceCount(String name); + + + /** + * 维度引用情况 + * @param name + * @return + */ + int indicatorDimensionReferenceCount(String name); + + + /** + * 度量引用情况 + * @param name + * @return + */ + int indicatorMeasureReferenceCount(String name); + + + /** + * 指标引用指标情况 + * @param name + * @return + */ + int indicatorIndicatorReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorVersionService.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorVersionService.java new file mode 100644 index 000000000..04f77dc1b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/IndicatorVersionService.java @@ -0,0 +1,57 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorVersionDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorVersion; +import org.apache.linkis.common.exception.ErrorException; + +import java.util.List; + + +public interface IndicatorVersionService extends IService { + + + /** + * 保存旧版本 + * + * @param name + * @param owner + * @param principalName + * @param version + * @param versionContext + * @return + */ + int addOlderVersion(String name, String owner, String principalName, String version, String comment, IndicatorVersionDTO versionContext) throws ErrorException; + + /** + * 根据指标名称查找最大版本 + * @param name + * @return + */ + String findLastVersion(String name); + + + /** + * 查询指定版本指标 + * @param name + * @param version + * @return + */ + DssDatamodelIndicatorVersion findBackup(String name,String version); + + + /** + * 引用情况 + * @param context + * @return + */ + List contentReferenceCount(String context); + + + /** + * 原子指标引用 + * @param indicatorName + * @return + */ + int sourceAtomicIndicatorReference(String indicatorName); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DataWarehouseIndicatorReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DataWarehouseIndicatorReferenceServiceImpl.java new file mode 100644 index 000000000..e762d5162 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DataWarehouseIndicatorReferenceServiceImpl.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service.impl; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseIndicatorReferenceService; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseIndicatorReferenceServiceImpl implements DataWarehouseIndicatorReferenceService { + + @Resource + private IndicatorService indicatorService; + + + @Override + public int indicatorCycleReferenceCount(String name) { + return indicatorService.indicatorCycleReferenceCount(name); + } + + @Override + public int indicatorLayerReferenceCount(String name) { + return indicatorService.indicatorLayerReferenceCount(name); + } + + @Override + public int indicatorModifierReferenceCount(String name) { + return indicatorService.indicatorModifierReferenceCount(name); + } + + @Override + public int indicatorThemeReferenceCount(String name) { + return indicatorService.indicatorThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DatamodelIndicatorReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DatamodelIndicatorReferenceServiceImpl.java new file mode 100644 index 000000000..e847a7ea5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/DatamodelIndicatorReferenceServiceImpl.java @@ -0,0 +1,40 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service.impl; + + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelIndicatorReferenceService; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorContentService; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorService; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorVersionService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DatamodelIndicatorReferenceServiceImpl implements DatamodelIndicatorReferenceService { + + @Resource + public IndicatorService indicatorService; + + @Resource + public IndicatorContentService indicatorContentService; + + @Resource + public IndicatorVersionService indicatorVersionService; + + @Override + public int indicatorDimensionReferenceCount(String name) { + return indicatorService.indicatorDimensionReferenceCount(name); + } + + @Override + public int indicatorMeasuredReference(String name) { + return indicatorService.indicatorMeasureReferenceCount(name); + } + + @Override + public int indicatorIndicatorCount(String name) { + return indicatorService.indicatorIndicatorReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorContentServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorContentServiceImpl.java new file mode 100644 index 000000000..2c07e78f8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorContentServiceImpl.java @@ -0,0 +1,88 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.indicator.dao.DssDatamodelIndicatorContentMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorContentService; +import com.webank.wedatasphere.dss.datamodel.indicator.vo.IndicatorContentVO; +import org.apache.linkis.common.exception.ErrorException; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + + +@Service +public class IndicatorContentServiceImpl extends ServiceImpl implements IndicatorContentService { + + private final Gson gson = new Gson(); + + @Resource + private ModelMapper modelMapper; + + + @Override + @Transactional(rollbackFor = Exception.class) + public int addIndicatorContent(Long indicatorId, String version, IndicatorContentVO vo) throws ErrorException { + + DssDatamodelIndicatorContent newOne = modelMapper.map(vo, DssDatamodelIndicatorContent.class); + newOne.setVersion(version); + newOne.setIndicatorId(indicatorId); + //todo 检查内容 + newOne.setIndicatorSourceInfo(gson.toJson(vo.getSourceInfo())); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + if (!save(newOne)) { + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_CONTENT_ADD_ERROR.getCode(), "add indicator content error"); + } + return 1; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateIndicatorContent(Long indicateId, String version, IndicatorContentVO vo) throws ErrorException { + //删除原有详细信息 + getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorContent::getIndicatorId, indicateId)); + //新增一条 + return addIndicatorContent(indicateId, version, vo); + } + + + @Override + public DssDatamodelIndicatorContent queryByIndicateId(Long indicateId) { + return getBaseMapper() + .selectOne(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorContent::getIndicatorId, indicateId)); + } + + + @Override + public int deleteByIndicatorId(Long id) throws ErrorException { + return getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorContent::getIndicatorId, id)); + } + + + @Override + public List sourceInfoReference(String name) { + + return getBaseMapper().selectList( + Wrappers.lambdaQuery().like(DssDatamodelIndicatorContent::getIndicatorSourceInfo, name)); +// .like(DssDatamodelIndicatorContent::getIndicatorSourceInfo,"\""+ name + "\"") +// .or() +// .like(DssDatamodelIndicatorContent::getIndicatorSourceInfo,"\""+ name + ",") +// .or() +// .like(DssDatamodelIndicatorContent::getIndicatorSourceInfo,","+ name + ",") +// .or() +// .like(DssDatamodelIndicatorContent::getIndicatorSourceInfo,","+ name + "\"")); + } + + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorServiceImpl.java new file mode 100644 index 000000000..4341e26b7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorServiceImpl.java @@ -0,0 +1,539 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.response.CreateModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.UpdateModelTypeResult; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.IndicatorSourceInfoConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.event.CreateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.DeleteModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UpdateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AssertsSyncService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelReferencService; +import com.webank.wedatasphere.dss.datamodel.indicator.dao.DssDatamodelIndicatorMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.dao.IndicatorQueryMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorContentQueryDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorQueryDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorVersionDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorVersionQueryDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicator; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorQuery; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorVersion; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorContentService; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorService; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorVersionService; +import com.webank.wedatasphere.dss.datamodel.indicator.vo.*; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +@Service +public class IndicatorServiceImpl extends ServiceImpl implements IndicatorService { + + private static final Logger LOGGER = LoggerFactory.getLogger(IndicatorServiceImpl.class); + + + private final Gson gson = new Gson(); + + @Resource + private ModelMapper modelMapper; + + @Resource + private IndicatorContentService indicatorContentService; + + @Resource + private IndicatorVersionService indicatorVersionService; + + @Resource + private IndicatorQueryMapper indicatorQueryMapper; + + + @Resource + private LinkisDataAssetsRemoteClient linkisDataAssetsRemoteClient; + + @Resource + private AssertsSyncService assertsSyncService; + + + @Resource + private DatamodelReferencService datamodelReferencService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long addIndicator(IndicatorAddVO vo, String version) throws ErrorException { + if (getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getName, vo.getName()) + .or().eq(DssDatamodelIndicator::getFieldIdentifier, vo.getFieldIdentifier())) > 0) { + LOGGER.error("errorCode : {}, indicator name or field identifier can not repeat, name : {}", ErrorCode.INDICATOR_ADD_ERROR.getCode(), vo.getName()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_ADD_ERROR.getCode(), "indicator name or field identifier can not repeat"); + } + //校验引用情况 + if (datamodelReferencService.indicatorReferenceCount(vo.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, indicator name can not referenced", ErrorCode.INDICATOR_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_ADD_ERROR.getCode(), "indicator name can not referenced"); + } + + + DssDatamodelIndicator newOne = modelMapper.map(vo, DssDatamodelIndicator.class); + //基本信息中设置版本号 + newOne.setVersion(version); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + if (!save(newOne)) { + LOGGER.error("errorCode : {}, add indicator error", ErrorCode.INDICATOR_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_ADD_ERROR.getCode(), "add indicator error"); + } + + indicatorContentService.addIndicatorContent(newOne.getId(), version, vo.getContent()); + + //同步atlas + CreateModelTypeResult result = assertsSyncService.syncCreateModel( + new CreateModelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getFieldIdentifier() + , ClassificationConstant.INDICATOR)); + return newOne.getId(); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateIndicator(Long id, IndicatorUpdateVO vo) throws ErrorException { + DssDatamodelIndicator org = getBaseMapper().selectById(id); + if (org == null) { + LOGGER.error("errorCode : {}, update indicator error not exists", ErrorCode.INDICATOR_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_UPDATE_ERROR.getCode(), "update indicator error not exists"); + } + + //校验引用情况 + if (datamodelReferencService.indicatorReferenceCount(org.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(vo.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(org.getFieldIdentifier())>0 + ||datamodelReferencService.indicatorReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, indicator name can not referenced", ErrorCode.INDICATOR_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_UPDATE_ERROR.getCode(), "indicator name can not referenced"); + } + + + DssDatamodelIndicatorContent orgContent = indicatorContentService.queryByIndicateId(id); + + + //当更新指标名称时,存在其他指标名称同名或者当前指标名称已经存在版本信息,则不允许修改指标名称 + if (!StringUtils.equals(vo.getName(), org.getName())) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getName, vo.getName())); + String lastVersion = indicatorVersionService.findLastVersion(org.getName()); + if (repeat > 0 || StringUtils.isNotBlank(lastVersion)) { + LOGGER.error("errorCode : {}, indicator name can not repeat or has version", ErrorCode.INDICATOR_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_UPDATE_ERROR.getCode(), "indicator name can not repeat or has version"); + } + } + + String orgFieldIdentifier = org.getFieldIdentifier(); + //当更新指标标识时,存在其他指标名称同名或者当前指标名称已经存在版本信息,则不允许修改指标名称 + if (!StringUtils.equals(vo.getFieldIdentifier(), orgFieldIdentifier)) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getFieldIdentifier, vo.getFieldIdentifier())); + if (repeat > 0) { + LOGGER.error("errorCode : {}, indicator field identifier can not repeat or has version", ErrorCode.INDICATOR_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_UPDATE_ERROR.getCode(), "indicator field identifier can not repeat or has version"); + } + } + + + Long orgId = org.getId(); + String version = org.getVersion(); + + //更新原有指标 + DssDatamodelIndicator updateOne = modelMapper.map(vo, DssDatamodelIndicator.class); + updateOne.setUpdateTime(new Date()); + int result = getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelIndicator::getId, id)); + if (result != 1) { + LOGGER.error("errorCode : {}, update indicator error not exists", ErrorCode.INDICATOR_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_UPDATE_ERROR.getCode(), "update indicator error not exists"); + } + + indicatorContentService.updateIndicatorContent(orgId, version, vo.getContent()); + + + + //同步atlas + UpdateModelTypeResult updateModelTypeResult = assertsSyncService.syncUpdateModel( + new UpdateModelEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,vo.getFieldIdentifier() + ,orgFieldIdentifier + ,ClassificationConstant.INDICATOR) + ); + + + return 1; + } + + + @Override + public int deleteIndicator(Long id) throws ErrorException { + DssDatamodelIndicator dssDatamodelIndicator = getBaseMapper().selectById(id); + if (dssDatamodelIndicator == null) { + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_DELETE_ERROR.getCode(), "indicator id " + id + " not exists"); + } + + //校验引用情况 + if (datamodelReferencService.indicatorReferenceCount(dssDatamodelIndicator.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(dssDatamodelIndicator.getFieldIdentifier())>0){ + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_DELETE_ERROR.getCode(), "indicator id " + id + " has referenced"); + } + + +// //有版本不能删除 +// if (indicatorVersionService.getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorVersion::getName, dssDatamodelIndicator.getName())) > 0) { +// throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_DELETE_ERROR.getCode(), "indicator id " + id + " has version"); +// } + //同时删除版本 + indicatorVersionService.getBaseMapper() + .delete(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorVersion::getName, dssDatamodelIndicator.getName())); + //删除指标 + getBaseMapper().deleteById(id); + indicatorContentService.getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorContent::getIndicatorId, id)); + + + //同步资产 + assertsSyncService.syncDeleteModel(new DeleteModelEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,dssDatamodelIndicator.getFieldIdentifier() + ,ClassificationConstant.INDICATOR)); + + return 1; + } + + + @Override + public Message listIndicators(IndicatorQueryVO vo) { + QueryWrapper queryWrapper = new QueryWrapper() + .like(StringUtils.isNotBlank(vo.getName()), "name", vo.getName()) + .eq(vo.getIsAvailable() != null, "is_available", vo.getIsAvailable()) + .eq(vo.getIndicatorType() != null, "indicator_type", vo.getIndicatorType()) + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), "theme_area", vo.getWarehouseThemeName()) + .like(StringUtils.isNotBlank(vo.getOwner()), "owner", vo.getOwner()); + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(indicatorQueryMapper.page(queryWrapper)); + //IPage iPage = indicatorQueryMapper.page(new Page<>(vo.getPageNum(), vo.getPageSize()), queryWrapper); + + return Message.ok() + .data("list", pageInfo.getList().stream().peek(e-> e.setRefCount(datamodelReferencService.indicatorReferenceCount(e.getName()))).collect(Collectors.toList())) + .data("total", pageInfo.getTotal()); + } + + + @Override + public Message queryById(Long id) throws DSSDatamodelCenterException { + DssDatamodelIndicator indicator = baseMapper.selectById(id); + if (indicator == null) { + LOGGER.error("errorCode : {}, indicator id : {} not exists", ErrorCode.INDICATOR_QUERY_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_QUERY_ERROR.getCode(), "indicator id " + id + " not exists"); + } + + DssDatamodelIndicatorContent content = indicatorContentService.queryByIndicateId(id); + if (content == null) { + LOGGER.error("errorCode : {}, indicator content indicatorId : {} not exists", ErrorCode.INDICATOR_QUERY_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_QUERY_ERROR.getCode(), "indicator content id " + id + " not exists"); + } + + IndicatorQueryDTO indicatorQueryDTO = modelMapper.map(indicator, IndicatorQueryDTO.class); + IndicatorContentQueryDTO indicatorContentQueryDTO = modelMapper.map(content, IndicatorContentQueryDTO.class); + indicatorQueryDTO.setContent(indicatorContentQueryDTO); + indicatorQueryDTO.setRefCount(datamodelReferencService.indicatorReferenceCount(indicator.getName())); + return Message.ok().data("detail", indicatorQueryDTO); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int enableIndicator(Long id, IndicatorEnableVO vo) { + DssDatamodelIndicator updateOne = modelMapper.map(vo, DssDatamodelIndicator.class); + updateOne.setUpdateTime(new Date()); + return getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelIndicator::getId, id)); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int addIndicatorVersion(Long id, IndicatorVersionAddVO vo) throws ErrorException { + //todo 生成新版本 则旧版本是否判断存在 关联其他表信息 + + //判断旧版本指标是否存在 + DssDatamodelIndicator orgVersion = getBaseMapper().selectById(id); + if (orgVersion == null) { + LOGGER.error("errorCode : {}, indicator id : {} not exists", ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "indicator id " + id + " not exists"); + } + + //校验引用情况 + if (datamodelReferencService.indicatorReferenceCount(orgVersion.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(vo.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(orgVersion.getFieldIdentifier())>0 + ||datamodelReferencService.indicatorReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, indicator name can not referenced", ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "indicator name can not referenced"); + } + + + + + String orgName = orgVersion.getName(); + String orgNameEn = orgVersion.getFieldIdentifier(); + String orgV = orgVersion.getVersion(); + String assignVersion = newVersion(orgName, orgV); + + //指标名称不能改变 + if (!StringUtils.equals(orgName, vo.getName()) || !StringUtils.equals(orgNameEn, vo.getFieldIdentifier())) { + LOGGER.error("errorCode : {}, indicator name or fieldIdentifier must be same", ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "indicator name or fieldIdentifier must be same"); + } + + //查询指标详细信息 + DssDatamodelIndicatorContent orgContent = indicatorContentService.queryByIndicateId(id); + if (orgContent == null) { + LOGGER.error("errorCode : {}, indicator content indicatorId : {} not exists", ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "indicator content id " + id + " not exists"); + } + + //旧版本备份 + indicatorVersionService.addOlderVersion(orgName, orgVersion.getOwner(), orgVersion.getPrincipalName(), orgV, orgVersion.getComment(), IndicatorVersionDTO.of(orgVersion, orgContent)); + + + //删除旧版本 + getBaseMapper().deleteById(id); + indicatorContentService.deleteByIndicatorId(id); + + //填充新增版本 + DssDatamodelIndicator newOne = modelMapper.map(vo, DssDatamodelIndicator.class); + //基本信息中设置版本号,如果新增时未指定版本号则生成新版本号 + String newVersion = assignVersion; + newOne.setVersion(newVersion); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + //保存新版本 + if (!save(newOne)) { + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "save new version indicator error"); + + } + //更新指标详细信息 + indicatorContentService.updateIndicatorContent(newOne.getId(), newVersion, vo.getContent()); + + return 1; + } + + + private String newVersion(String orgName, String orgVersion) { + String lastVersion = indicatorVersionService.findLastVersion(orgName); + + return StringUtils.isBlank(lastVersion) ? + (Integer.parseInt(orgVersion) + 1 + "") : + (Integer.parseInt(lastVersion) > Integer.parseInt(orgVersion)) ? (Integer.parseInt(lastVersion) + 1 + "") : + (Integer.parseInt(orgVersion) + 1 + ""); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int versionRollBack(IndicatorVersionRollBackVO vo) throws ErrorException { + + String name = vo.getName(); + String version = vo.getVersion(); + + //获取当前使用版本指标 + DssDatamodelIndicator current = + getBaseMapper().selectOne(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getName, name)); + //判断当前使用指标 + if (current == null) { + LOGGER.error("errorCode : {}, current indicator not exists, name : {} version : {}", ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), name, version); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), "current indicator not exists, name : " + name + " version : " + version); + } + + //校验引用情况 + if (datamodelReferencService.indicatorReferenceCount(current.getName())>0 + ||datamodelReferencService.indicatorReferenceCount(current.getFieldIdentifier())>0){ + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), "indicator id " + current.getId() + " has referenced"); + } + + + //查询当前详细信息 + DssDatamodelIndicatorContent currentContent = indicatorContentService.queryByIndicateId(current.getId()); + if (currentContent == null) { + LOGGER.error("errorCode : {}, current indicator content not exists, name : {} version : {}", ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), name, version); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), "current indicator content not exists, name : " + name + " version : " + version); + } + //当前版本备份 + indicatorVersionService.addOlderVersion(current.getName(), current.getOwner(), current.getPrincipalName(), current.getVersion(), current.getComment(), IndicatorVersionDTO.of(current, currentContent)); + //删除当前版本 + getBaseMapper().deleteById(current.getId()); + //删除当前版本详情 + indicatorContentService.deleteByIndicatorId(current.getId()); + + //获取需要回退指标版本信息 + DssDatamodelIndicatorVersion rollBackVersion = indicatorVersionService.findBackup(name, version); + if (rollBackVersion == null) { + LOGGER.error("errorCode : {}, indicator name : {} version : {}", ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), name, version); + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ROLL_BACK_ERROR.getCode(), "indicator name : " + name + " version : " + version + " not exist"); + } + Long rollBackId = rollBackVersion.getId(); + + IndicatorVersionDTO rollBackDTO = gson.fromJson(rollBackVersion.getVersionContext(), IndicatorVersionDTO.class); + DssDatamodelIndicator rollBackIndicator = rollBackDTO.getEssential(); + //重置id + rollBackIndicator.setId(null); + save(rollBackIndicator); + + + DssDatamodelIndicatorContent rollBackContent = rollBackDTO.getContent(); + //重置id + rollBackContent.setId(null); + //设置新指标id + rollBackContent.setIndicatorId(rollBackIndicator.getId()); + indicatorContentService.save(rollBackContent); + indicatorVersionService.getBaseMapper().deleteById(rollBackId); + return 1; + } + + + @Override + public Message listIndicatorVersions(IndicatorVersionQueryVO vo) { + List list = indicatorVersionService.getBaseMapper() + .selectList(Wrappers.lambdaQuery().eq(DssDatamodelIndicatorVersion::getName, vo.getName())) + .stream() + .map(dssDatamodelIndicatorVersion -> modelMapper.map(dssDatamodelIndicatorVersion, IndicatorVersionQueryDTO.class)) + .collect(Collectors.toList()); + return Message.ok().data("list", list); + } + + + @Override + public int indicatorThemeReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getThemeArea, name)); + int currentCountEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getThemeAreaEn, name)); + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = (int) preReferences.stream().filter(e->{ + IndicatorVersionDTO rollBackDTO = gson.fromJson(e.getVersionContext(), IndicatorVersionDTO.class); + DssDatamodelIndicator rollBackIndicator = rollBackDTO.getEssential(); + return StringUtils.equals(rollBackIndicator.getThemeArea(),name)||StringUtils.equals(rollBackIndicator.getThemeAreaEn(),name); + }).count(); + return currentCount + versionCount + currentCountEn; + } + + @Override + public int indicatorLayerReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getLayerArea, name)); + int currentCountEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelIndicator::getLayerAreaEn, name)); + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = (int) preReferences.stream().filter(e->{ + IndicatorVersionDTO rollBackDTO = gson.fromJson(e.getVersionContext(), IndicatorVersionDTO.class); + DssDatamodelIndicator rollBackIndicator = rollBackDTO.getEssential(); + return StringUtils.equals(rollBackIndicator.getLayerArea(),name)||StringUtils.equals(rollBackIndicator.getLayerAreaEn(),name); + }).count(); + return currentCount + versionCount + currentCountEn; + } + + @Override + public int indicatorCycleReferenceCount(String name) { + List currentContents = indicatorContentService.sourceInfoReference(name); + int currentCount = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.cycle,name,currentContents); + int currentCountEn = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.cycleEn,name,currentContents); + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.cycle.name(),name); + int versionCountEn = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.cycleEn.name(),name); + return currentCount + currentCountEn + versionCount + versionCountEn; + } + + private int versionCountFromIndicatorContentSourceInfo(List preReferences,String type,String name){ + return (int) preReferences.stream().filter(e->{ + IndicatorVersionDTO rollBackDTO = gson.fromJson(e.getVersionContext(), IndicatorVersionDTO.class); + DssDatamodelIndicatorContent rollBackContent = rollBackDTO.getContent(); + return filterFromIndicatorContentSourceInfo(type, name, rollBackContent); + }).count(); + } + + private int currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant type, String name,List contents){ + return (int) contents.stream().filter(e-> filterFromIndicatorContentSourceInfo(type.name(),name,e)).count(); + } + + private boolean filterFromIndicatorContentSourceInfo(String type, String name, DssDatamodelIndicatorContent rollBackContent) { + Map content = gson.fromJson(rollBackContent.getIndicatorSourceInfo(),Map.class); + if (!content.containsKey(type)){ + return false; + } + return Sets.newHashSet(StringUtils.split(content.get(type), ",")).contains(name); + } + + @Override + public int indicatorModifierReferenceCount(String name) { + List currentContents = indicatorContentService.sourceInfoReference(name); + int currentCount = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.modifier,name,currentContents); + int currentCountEn = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.modifierEn,name,currentContents); + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.modifier.name(),name); + int versionCountEn = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.modifierEn.name(),name); + return currentCount + currentCountEn + versionCount + versionCountEn; + } + + + @Override + public int indicatorDimensionReferenceCount(String name) { + List currentContents = indicatorContentService.sourceInfoReference(name); + int currentCount = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.dimension,name,currentContents); + int currentCountEn = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.dimensionEn,name,currentContents); + + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.dimension.name(),name); + int versionCountEn = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.dimensionEn.name(),name); + return currentCount + currentCountEn + versionCount + versionCountEn; + } + + @Override + public int indicatorMeasureReferenceCount(String name) { + List currentContents = indicatorContentService.sourceInfoReference(name); + int currentCount = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.measure,name,currentContents); + int currentCountEn = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.measureEn,name,currentContents); + + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.measure.name(),name); + int versionCountEn = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.measureEn.name(), name); + return currentCount + currentCountEn + versionCount + versionCountEn; + } + + @Override + public int indicatorIndicatorReferenceCount(String name) { + List currentContents = indicatorContentService.sourceInfoReference(name); + int currentCount = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.indicatorName,name,currentContents); + int currentCountEn = currentCountFromIndicatorContentSourceInfo(IndicatorSourceInfoConstant.indicatorNameEn,name,currentContents); + + List preReferences = indicatorVersionService.contentReferenceCount(name); + int versionCount = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.indicatorName.name(),name); + int versionCountEn = versionCountFromIndicatorContentSourceInfo(preReferences,IndicatorSourceInfoConstant.indicatorNameEn.name(),name); + return currentCount + currentCountEn + versionCount + versionCountEn; + } + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorVersionServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorVersionServiceImpl.java new file mode 100644 index 000000000..c6d6ee285 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/service/impl/IndicatorVersionServiceImpl.java @@ -0,0 +1,97 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.gson.Gson; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.indicator.dao.DssDatamodelIndicatorVersionMapper; +import com.webank.wedatasphere.dss.datamodel.indicator.dto.IndicatorVersionDTO; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorContent; +import com.webank.wedatasphere.dss.datamodel.indicator.entity.DssDatamodelIndicatorVersion; +import com.webank.wedatasphere.dss.datamodel.indicator.service.IndicatorVersionService; +import org.apache.linkis.common.exception.ErrorException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + + +@Service +public class IndicatorVersionServiceImpl extends ServiceImpl implements IndicatorVersionService { + + private final Gson gson = new Gson(); + + @Override + @Transactional + public int addOlderVersion(String name, String owner, String principalName, String version, String comment, IndicatorVersionDTO versionContext) throws ErrorException { + DssDatamodelIndicatorVersion oldVersion = new DssDatamodelIndicatorVersion(); + oldVersion.setName(name); + oldVersion.setPrincipalName(principalName); + oldVersion.setOwner(owner); + oldVersion.setVersion(version); + oldVersion.setVersionContext(gson.toJson(versionContext)); + oldVersion.setComment(comment); + oldVersion.setCreateTime(new Date()); + oldVersion.setUpdateTime(new Date()); + if (!save(oldVersion)) { + throw new DSSDatamodelCenterException(ErrorCode.INDICATOR_VERSION_ADD_ERROR.getCode(), "old version save error"); + + } + return 1; + } + + + @Override + public String findLastVersion(String name) { + PageHelper.clearPage(); + PageHelper.startPage(1,1); + //查询当前指标名称最大版本 + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList( + Wrappers.lambdaQuery() + .eq(DssDatamodelIndicatorVersion::getName, name) + .orderByDesc(DssDatamodelIndicatorVersion::getVersion))); + + List list = pageInfo.getList(); + return !CollectionUtils.isEmpty(list) ? list.get(0).getVersion() : null; + } + + + @Override + public DssDatamodelIndicatorVersion findBackup(String name, String version) { + return getBaseMapper().selectOne( + Wrappers.lambdaQuery() + .eq(DssDatamodelIndicatorVersion::getName, name) + .eq(DssDatamodelIndicatorVersion::getVersion, version)); + } + + + @Override + public List contentReferenceCount(String context) { + return getBaseMapper().selectList( + Wrappers.lambdaQuery() + .like(DssDatamodelIndicatorVersion::getVersionContext,context )); +// .like(DssDatamodelIndicatorVersion::getVersionContext,"\""+ context + "\"") +// .or() +// .like(DssDatamodelIndicatorVersion::getVersionContext,"\""+ context + "\"") +// .or() +// .like(DssDatamodelIndicatorVersion::getVersionContext,"\""+ context + ",") +// .or() +// .like(DssDatamodelIndicatorVersion::getVersionContext,","+ context + ",") +// .or() +// .like(DssDatamodelIndicatorVersion::getVersionContext,","+ context + "\"")); + } + + + @Override + public int sourceAtomicIndicatorReference(String indicatorName) { + return getBaseMapper().selectCount( + Wrappers.lambdaQuery() + .like(DssDatamodelIndicatorVersion::getVersionContext,"\"indicatorName\":\""+ indicatorName + "\"")); + + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/CycleVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/CycleVO.java new file mode 100644 index 000000000..38c6551a9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/CycleVO.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import lombok.Data; + +@Data +public class CycleVO { + private String theme; + + private String layer; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorAddVO.java new file mode 100644 index 000000000..9fe86ce72 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorAddVO.java @@ -0,0 +1,54 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class IndicatorAddVO { + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + private String themeAreaEn; + + private String layerAreaEn; + + private IndicatorContentVO content; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorContentVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorContentVO.java new file mode 100644 index 000000000..ada0eecf8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorContentVO.java @@ -0,0 +1,119 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import java.util.Map; + +public class IndicatorContentVO { + + private Long indicatorId; + + /** + * 0 原子 1 衍生 2 派生 3 复杂 4 自定义 + */ + private Integer indicatorType; + + private Long measureId; + + /** + * 指标来源信息 + */ + private Map sourceInfo; + + private String formula; + + private String business; + + private String businessOwner; + + private String calculation; + + private String calculationOwner; + + public Long getIndicatorId() { + return indicatorId; + } + + public void setIndicatorId(Long indicatorId) { + this.indicatorId = indicatorId; + } + + + public Integer getIndicatorType() { + return indicatorType; + } + + public void setIndicatorType(Integer indicatorType) { + this.indicatorType = indicatorType; + } + + public Long getMeasureId() { + return measureId; + } + + public void setMeasureId(Long measureId) { + this.measureId = measureId; + } + + + public Map getSourceInfo() { + return sourceInfo; + } + + public void setSourceInfo(Map sourceInfo) { + this.sourceInfo = sourceInfo; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public String getBusiness() { + return business; + } + + public void setBusiness(String business) { + this.business = business; + } + + public String getBusinessOwner() { + return businessOwner; + } + + public void setBusinessOwner(String businessOwner) { + this.businessOwner = businessOwner; + } + + public String getCalculation() { + return calculation; + } + + public void setCalculation(String calculation) { + this.calculation = calculation; + } + + public String getCalculationOwner() { + return calculationOwner; + } + + public void setCalculationOwner(String calculationOwner) { + this.calculationOwner = calculationOwner; + } + + @Override + public String toString() { + return "IndicatorContentVO{" + + "indicatorId=" + indicatorId + + ", indicatorType=" + indicatorType + + ", measureId=" + measureId + + ", sourceInfo=" + sourceInfo + + ", formula='" + formula + '\'' + + ", business='" + business + '\'' + + ", businessOwner='" + businessOwner + '\'' + + ", calculation='" + calculation + '\'' + + ", calculationOwner='" + calculationOwner + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorEnableVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorEnableVO.java new file mode 100644 index 000000000..b5311eea3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorEnableVO.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + + +public class IndicatorEnableVO { + + private Integer isAvailable; + + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + @Override + public String toString() { + return "IndicatorEnableVO{" + + "isAvailable=" + isAvailable + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorQueryVO.java new file mode 100644 index 000000000..c746baa15 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorQueryVO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import com.webank.wedatasphere.dss.datamodel.center.common.vo.PageVO; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class IndicatorQueryVO extends PageVO { + + private String name; + + private Integer indicatorType; + + private Integer isAvailable; + + private String owner; + + private String warehouseThemeName; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorUpdateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorUpdateVO.java new file mode 100644 index 000000000..c9268a530 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorUpdateVO.java @@ -0,0 +1,50 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class IndicatorUpdateVO { + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + private String warehouseThemeNameEn; + + private String themeAreaEn; + + private String layerAreaEn; + + private IndicatorContentVO content; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionAddVO.java new file mode 100644 index 000000000..a57918986 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionAddVO.java @@ -0,0 +1,51 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class IndicatorVersionAddVO { + + + private String name; + + private String fieldIdentifier; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Integer isCoreIndicator; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + */ + private String themeArea; + + /** + * 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + */ + private String layerArea; + + private String warehouseThemeNameEn; + + private String themeAreaEn; + + private String layerAreaEn; + + private IndicatorContentVO content; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionQueryVO.java new file mode 100644 index 000000000..9d806b46e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionQueryVO.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + + +public class IndicatorVersionQueryVO { + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "IndicatorVersionQueryVO{" + + "name='" + name + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionRollBackVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionRollBackVO.java new file mode 100644 index 000000000..fdf2e89db --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/IndicatorVersionRollBackVO.java @@ -0,0 +1,33 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + + +public class IndicatorVersionRollBackVO { + + private String name; + + private String version; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + @Override + public String toString() { + return "VersionRollBackVO{" + + "name='" + name + '\'' + + ", version='" + version + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/LayerVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/LayerVO.java new file mode 100644 index 000000000..f89c7a092 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/LayerVO.java @@ -0,0 +1,8 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import lombok.Data; + +@Data +public class LayerVO { + private String dbName; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/ModifierVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/ModifierVO.java new file mode 100644 index 000000000..62f89df6c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-indicator-management/src/main/java/com/webank/wedatasphere/dss/datamodel/indicator/vo/ModifierVO.java @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.dss.datamodel.indicator.vo; + +import lombok.Data; + +@Data +public class ModifierVO { + private String theme; + + private String layer; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/pom.xml new file mode 100644 index 000000000..bb30cd8b6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/pom.xml @@ -0,0 +1,60 @@ + + + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-measure-management + + + + + + com.webank.wedatasphere.dss + dss-datamodel-center-common + ${dss.version} + + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/DssDatamodelMeasureMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/DssDatamodelMeasureMapper.java new file mode 100644 index 000000000..f68df7ce3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/DssDatamodelMeasureMapper.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.dss.datamodel.measure.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.measure.entity.DssDatamodelMeasure; +import org.apache.ibatis.annotations.Param; + +public interface DssDatamodelMeasureMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/impl/DssDatamodelMeasureMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/impl/DssDatamodelMeasureMapper.xml new file mode 100644 index 000000000..12c13ba56 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dao/impl/DssDatamodelMeasureMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, `name`, field_identifier, formula, `comment`, warehouse_theme_name, `owner`, + principal_name, is_available, create_time, update_time + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dto/MeasureQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dto/MeasureQueryDTO.java new file mode 100644 index 000000000..d543d3f1d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/dto/MeasureQueryDTO.java @@ -0,0 +1,44 @@ +package com.webank.wedatasphere.dss.datamodel.measure.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class MeasureQueryDTO { + private Long id; + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Date createTime; + + private Date updateTime; + + /** + * 引用次数 + */ + private Integer refCount = 0; + + } diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/entity/DssDatamodelMeasure.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/entity/DssDatamodelMeasure.java new file mode 100644 index 000000000..1d5e0a65a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/entity/DssDatamodelMeasure.java @@ -0,0 +1,43 @@ +package com.webank.wedatasphere.dss.datamodel.measure.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.util.Date; +@TableName("dss_datamodel_measure") +@Data +public class DssDatamodelMeasure { + + @TableId(type = IdType.AUTO) + private Long id; + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/restful/MeasureRestfulApi.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/restful/MeasureRestfulApi.java new file mode 100644 index 000000000..6bded3f08 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/restful/MeasureRestfulApi.java @@ -0,0 +1,105 @@ +package com.webank.wedatasphere.dss.datamodel.measure.restful; + + +import com.webank.wedatasphere.dss.datamodel.measure.service.MeasureService; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureAddVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureEnableVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureQueryVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + + +@RequestMapping(path = "/datamodel", produces = {"application/json"}) +@RestController +public class MeasureRestfulApi { + + + private static final Logger LOGGER = LoggerFactory.getLogger(MeasureRestfulApi.class); + + @Autowired + private MeasureService measureService; + + /** + * 新增 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/measures",method = RequestMethod.POST) + public Message add(HttpServletRequest req, @RequestBody MeasureAddVO vo) throws ErrorException{ + LOGGER.info("measureAddVO : {}", vo); + //String userName = SecurityFilter.getLoginUsername(req); + return Message.ok().data("id", measureService.addMeasure(vo)); + } + + /** + * 启用/禁用 + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/measures/enable/{id}",method = RequestMethod.PUT) + public Message enable(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody MeasureEnableVO vo) { + LOGGER.info("enable id : {}, vo : {}", id, vo); + return Message.ok().data("count", measureService.enableMeasure(id, vo)); + } + + /** + * 修改 + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/measures/{id}",method = RequestMethod.PUT) + public Message update(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody MeasureUpdateVO vo) throws ErrorException{ + LOGGER.info("update id : {}, vo : {}", id, vo); + return Message.ok().data("count",measureService.updateMeasure(id,vo)); + } + + + /** + * 查看 + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/measures/{id}",method = RequestMethod.GET) + public Message query(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("query id : {}", id); + return Message.ok().data("detail",measureService.queryById(id)); + } + + /** + * 删除 + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/measures/{id}",method = RequestMethod.DELETE) + public Message delete(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("delete id : {}", id); + return Message.ok().data("count",measureService.deleteMeasure(id)); + } + + /** + * 分页搜索 + * @param req + * @return + */ + @RequestMapping(value = "/measures/list",method = RequestMethod.POST) + public Message list(HttpServletRequest req,@RequestBody MeasureQueryVO vo){ + LOGGER.info("list vo : {}",vo); + return measureService.listMeasures(vo); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/MeasureService.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/MeasureService.java new file mode 100644 index 000000000..1864413e4 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/MeasureService.java @@ -0,0 +1,70 @@ +package com.webank.wedatasphere.dss.datamodel.measure.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.measure.dto.MeasureQueryDTO; +import com.webank.wedatasphere.dss.datamodel.measure.entity.DssDatamodelMeasure; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureAddVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureEnableVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureQueryVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; + + +public interface MeasureService extends IService { + + /** + * 新增维度 + * @param vo + * @return + */ + long addMeasure(MeasureAddVO vo)throws ErrorException; + + /** + * 启用/禁用 + * @param vo + * @return + */ + int enableMeasure(Long id, MeasureEnableVO vo); + + + /** + * 更新 + * @param id + * @param vo + * @return + */ + int updateMeasure(Long id, MeasureUpdateVO vo)throws ErrorException; + + + /** + * 查看 + * @param id + * @return + */ + MeasureQueryDTO queryById(Long id) throws ErrorException; + + + /** + * 删除 + * @param id + * @return + */ + int deleteMeasure(Long id) throws ErrorException; + + + /** + * 查询列表 + * @param vo + * @return + */ + Message listMeasures(MeasureQueryVO vo); + + + /** + * 主题引用情况 + * @param name + * @return + */ + int measureThemeReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/DataWarehouseMeasuredReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/DataWarehouseMeasuredReferenceServiceImpl.java new file mode 100644 index 000000000..959d668f7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/DataWarehouseMeasuredReferenceServiceImpl.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.measure.service.impl; + + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseMeasuredReferenceService; +import com.webank.wedatasphere.dss.datamodel.measure.service.MeasureService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseMeasuredReferenceServiceImpl implements DataWarehouseMeasuredReferenceService { + + @Resource + private MeasureService measureService; + + @Override + public int measureThemeReferenceCount(String name) { + return measureService.measureThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/MeasureServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/MeasureServiceImpl.java new file mode 100644 index 000000000..7859c9bc9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/service/impl/MeasureServiceImpl.java @@ -0,0 +1,214 @@ +package com.webank.wedatasphere.dss.datamodel.measure.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.response.CreateModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.UpdateModelTypeResult; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.event.CreateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.DeleteModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UpdateModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AssertsSyncService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelReferencService; +import com.webank.wedatasphere.dss.datamodel.measure.dao.DssDatamodelMeasureMapper; +import com.webank.wedatasphere.dss.datamodel.measure.dto.MeasureQueryDTO; +import com.webank.wedatasphere.dss.datamodel.measure.entity.DssDatamodelMeasure; +import com.webank.wedatasphere.dss.datamodel.measure.service.MeasureService; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureAddVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureEnableVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureQueryVO; +import com.webank.wedatasphere.dss.datamodel.measure.vo.MeasureUpdateVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.stream.Collectors; + + +@Service +public class MeasureServiceImpl extends ServiceImpl implements MeasureService { + + private static final Logger LOGGER = LoggerFactory.getLogger(MeasureServiceImpl.class); + + private final ModelMapper modelMapper = new ModelMapper(); + + + + @Resource + private AssertsSyncService assertsSyncService; + + @Resource + private DatamodelReferencService datamodelReferencService; + + @Override + @Transactional(rollbackFor = Exception.class) + public long addMeasure(MeasureAddVO vo) throws ErrorException { + if (getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelMeasure::getName, vo.getName()) + .or().eq(DssDatamodelMeasure::getFieldIdentifier, vo.getFieldIdentifier())) > 0) { + LOGGER.error("errorCode : {}, measure name or field identifier can not repeat, name : {}", ErrorCode.INDICATOR_ADD_ERROR.getCode(), vo.getName()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_ADD_ERROR.getCode(), "measure name or field identifier can not repeat"); + } + + + //校验引用情况 + if(datamodelReferencService.measureReferenceCount(vo.getName())>0 + ||datamodelReferencService.measureReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, measure name can not be referenced ", ErrorCode.MEASURE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_UPDATE_ERROR.getCode(), "measure name can not be referenced"); + } + + DssDatamodelMeasure newOne = modelMapper.map(vo, DssDatamodelMeasure.class); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + getBaseMapper().insert(newOne); + //同步atlas + CreateModelTypeResult result = assertsSyncService.syncCreateModel( + new CreateModelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getFieldIdentifier() + , ClassificationConstant.MEASURE)); + return newOne.getId(); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int enableMeasure(Long id, MeasureEnableVO vo) { + DssDatamodelMeasure enableOne = new DssDatamodelMeasure(); + enableOne.setIsAvailable(vo.getIsAvailable()); + enableOne.setUpdateTime(new Date()); + return getBaseMapper().update(enableOne, Wrappers.lambdaUpdate().eq(DssDatamodelMeasure::getId, id)); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateMeasure(Long id, MeasureUpdateVO vo) throws ErrorException { + DssDatamodelMeasure org = getBaseMapper().selectById(id); + if (org == null) { + LOGGER.error("errorCode : {}, update measure error not exists", ErrorCode.MEASURE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_UPDATE_ERROR.getCode(), "update measure error not exists"); + } + + //校验引用情况 + if(datamodelReferencService.measureReferenceCount(vo.getName())>0 + ||datamodelReferencService.measureReferenceCount(vo.getFieldIdentifier())>0 + ||datamodelReferencService.measureReferenceCount(org.getName())>0 + ||datamodelReferencService.measureReferenceCount(org.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, measure name can not be referenced ", ErrorCode.MEASURE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_UPDATE_ERROR.getCode(), "measure name can not be referenced"); + } + + //当更新名称时 + if (!StringUtils.equals(vo.getName(), org.getName())) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelMeasure::getName, vo.getName())); + if (repeat > 0 ) { + LOGGER.error("errorCode : {}, measure name can not repeat ", ErrorCode.MEASURE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_UPDATE_ERROR.getCode(), "measure name can not repeat "); + } + } + + String orgFieldIdentifier = org.getFieldIdentifier(); + //当更新标识时 + if (!StringUtils.equals(vo.getFieldIdentifier(), orgFieldIdentifier)) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelMeasure::getFieldIdentifier, vo.getFieldIdentifier())); + + if (repeat > 0 || datamodelReferencService.measureReferenceCount(orgFieldIdentifier)>0) { + LOGGER.error("errorCode : {}, measure field identifier can not repeat or referenced", ErrorCode.MEASURE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_UPDATE_ERROR.getCode(), "measure field identifier can not repeat or referenced"); + } + } + DssDatamodelMeasure updateOne = modelMapper.map(vo, DssDatamodelMeasure.class); + updateOne.setUpdateTime(new Date()); + getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelMeasure::getId, id)); + //同步atlas + UpdateModelTypeResult updateModelTypeResult = assertsSyncService.syncUpdateModel( + new UpdateModelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getFieldIdentifier() + , orgFieldIdentifier + , ClassificationConstant.MEASURE)); + return 1; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteMeasure(Long id) throws ErrorException { + DssDatamodelMeasure dssDatamodelMeasure = getBaseMapper().selectById(id); + if (dssDatamodelMeasure == null) { + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_DELETE_ERROR.getCode(), "measure id " + id + " not exists"); + } + //校验引用情况 + if(datamodelReferencService.measureReferenceCount(dssDatamodelMeasure.getName())>0 + ||datamodelReferencService.measureReferenceCount(dssDatamodelMeasure.getFieldIdentifier())>0){ + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_DELETE_ERROR.getCode(), "measure id " + id + " has referenced"); + } + + getBaseMapper().deleteById(id); + //同步资产 + assertsSyncService.syncDeleteModel(new DeleteModelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , dssDatamodelMeasure.getFieldIdentifier() + , ClassificationConstant.MEASURE)); + return 1; + } + + + @Override + public Message listMeasures(MeasureQueryVO vo) { + QueryWrapper queryWrapper = new QueryWrapper() + .like(StringUtils.isNotBlank(vo.getName()), "name", vo.getName()) + .eq(vo.getIsAvailable() != null, "is_available", vo.getIsAvailable()) + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), "warehouse_theme_name", vo.getWarehouseThemeName()) + .like(StringUtils.isNotBlank(vo.getOwner()), "owner", vo.getOwner()); + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList(queryWrapper)); + //IPage iPage = page(new Page<>(vo.getPageNum(),vo.getPageSize()),queryWrapper); + return Message.ok() + .data("list", pageInfo + .getList() + .stream() + .map(dssDatamodelMeasure -> { + MeasureQueryDTO dto = modelMapper.map(dssDatamodelMeasure, MeasureQueryDTO.class); + dto.setRefCount(datamodelReferencService.measureReferenceCount(dssDatamodelMeasure.getName())); + return dto; + }) + .collect(Collectors.toList())) + .data("total", pageInfo.getTotal()); + } + + + @Override + public MeasureQueryDTO queryById(Long id) throws DSSDatamodelCenterException { + DssDatamodelMeasure dssDatamodelMeasure = getBaseMapper().selectById(id); + if (dssDatamodelMeasure == null) { + throw new DSSDatamodelCenterException(ErrorCode.MEASURE_QUERY_ERROR.getCode(), "measure id " + id + " not exists"); + } + MeasureQueryDTO dto = modelMapper.map(dssDatamodelMeasure, MeasureQueryDTO.class); + dto.setRefCount(datamodelReferencService.measureReferenceCount(dssDatamodelMeasure.getName())); + return dto; + } + + + @Override + public int measureThemeReferenceCount(String name) { + int count = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelMeasure::getWarehouseThemeName, name)); + int countEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelMeasure::getWarehouseThemeNameEn, name)); + return count + countEn; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureAddVO.java new file mode 100644 index 000000000..dc15c333e --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureAddVO.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.measure.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class MeasureAddVO { + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureEnableVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureEnableVO.java new file mode 100644 index 000000000..bb2f09fed --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureEnableVO.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.measure.vo; + + +public class MeasureEnableVO { + + + private Integer isAvailable; + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + @Override + public String toString() { + return "MeasureEnableVO{" + + "isAvailable=" + isAvailable + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureQueryVO.java new file mode 100644 index 000000000..75837a702 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureQueryVO.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.measure.vo; + +import com.webank.wedatasphere.dss.datamodel.center.common.vo.PageVO; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class MeasureQueryVO extends PageVO { + + private String name; + + private Integer isAvailable; + + private String owner; + + private String warehouseThemeName; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureUpdateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureUpdateVO.java new file mode 100644 index 000000000..59ed05435 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-measure-management/src/main/java/com/webank/wedatasphere/dss/datamodel/measure/vo/MeasureUpdateVO.java @@ -0,0 +1,34 @@ +package com.webank.wedatasphere.dss.datamodel.measure.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class MeasureUpdateVO { + + private String name; + + private String fieldIdentifier; + + private String formula; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String warehouseThemeNameEn; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/pom.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/pom.xml new file mode 100644 index 000000000..fbde14d89 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/pom.xml @@ -0,0 +1,59 @@ + + + + + + dss-datamodel-center + com.webank.wedatasphere.dss + 1.1.0 + ../pom.xml + + 4.0.0 + + dss-datamodel-table-management + + + + + com.webank.wedatasphere.dss + dss-datamodel-center-common + ${dss.version} + + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelDictionaryMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelDictionaryMapper.java new file mode 100644 index 000000000..71cd71255 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelDictionaryMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelDictionary; + +public interface DssDatamodelDictionaryMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelLabelMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelLabelMapper.java new file mode 100644 index 000000000..242aab574 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelLabelMapper.java @@ -0,0 +1,8 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelLabel; + +public interface DssDatamodelLabelMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableCollcetionMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableCollcetionMapper.java new file mode 100644 index 000000000..714abfa68 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableCollcetionMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableCollcetion; + +public interface DssDatamodelTableCollcetionMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableColumnsMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableColumnsMapper.java new file mode 100644 index 000000000..8444d4a80 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableColumnsMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; + +public interface DssDatamodelTableColumnsMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMapper.java new file mode 100644 index 000000000..31b132805 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; + +public interface DssDatamodelTableMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMaterializedHistoryMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMaterializedHistoryMapper.java new file mode 100644 index 000000000..e0ac1b87a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableMaterializedHistoryMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableMaterializedHistory; + +public interface DssDatamodelTableMaterializedHistoryMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStaticsMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStaticsMapper.java new file mode 100644 index 000000000..a1c5276eb --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStaticsMapper.java @@ -0,0 +1,4 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +public interface DssDatamodelTableStaticsMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStatsMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStatsMapper.java new file mode 100644 index 000000000..0fde86e31 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableStatsMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableStats; + +public interface DssDatamodelTableStatsMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableVersionMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableVersionMapper.java new file mode 100644 index 000000000..052c8a234 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/DssDatamodelTableVersionMapper.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableVersion; + +public interface DssDatamodelTableVersionMapper extends BaseMapper { +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/TableQueryMapper.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/TableQueryMapper.java new file mode 100644 index 000000000..d703a816d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/TableQueryMapper.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.table.dao; + + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTabelQuery; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface TableQueryMapper extends BaseMapper { + String querySql = "SELECT a.*, b.model_type,b.model_name FROM dss_datamodel_table AS a LEFT JOIN dss_datamodel_table_columns AS b ON b.table_id = a.id " + + " ${ew.customSqlSegment}"; + String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}"; + + + + @Select(querySql) + List page(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelDictionaryMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelDictionaryMapper.xml new file mode 100644 index 000000000..6aa69080d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelDictionaryMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + id, code, `type`, description, created_time, update_time, sort + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelLabelMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelLabelMapper.xml new file mode 100644 index 000000000..394fc1f04 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelLabelMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, `name`, field_identifier, params, `comment`, warehouse_theme_name, `owner`, principal_name, + is_available, create_time, update_time, warehouse_theme_name_en + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableCollcetionMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableCollcetionMapper.xml new file mode 100644 index 000000000..9a1e80df6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableCollcetionMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, data_base, `name`, `alias`, creator, `comment`, create_time, update_time, warehouse_layer_name, + warehouse_theme_name, lifecycle, is_partition_table, is_available, storage_type, + principal_name, `compress`, file_type, `user`, version, is_external, `location`, + `label`, guid, warehouse_layer_name_en, warehouse_theme_name_en + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableColumnsMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableColumnsMapper.xml new file mode 100644 index 000000000..dcbf7e32f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableColumnsMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id, table_id, `name`, `alias`, `type`, `comment`, is_partition_field, is_primary, + `length`, `rule`, model_type, model_name_en, model_id, model_name, create_time, update_time + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMapper.xml new file mode 100644 index 000000000..57d36a49d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, data_base, `name`, `alias`, creator, `comment`, create_time, update_time, warehouse_layer_name, + warehouse_layer_name_en, warehouse_theme_name, warehouse_theme_name_en, lifecycle, + is_partition_table, is_available, storage_type, principal_name, `compress`, file_type, + version, is_external, `location`, `label` + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMaterializedHistoryMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMaterializedHistoryMapper.xml new file mode 100644 index 000000000..8435cbca0 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableMaterializedHistoryMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, materialized_code, reason, creator, `status`, create_time, last_update_time, + task_id, error_msg, tableName, `database`, version + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStaticsMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStaticsMapper.xml new file mode 100644 index 000000000..2e1b1d14b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStaticsMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + id, origin_tables, table_id, access_count, last_access_time, sample_data_path, sample_update_time + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStatsMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStatsMapper.xml new file mode 100644 index 000000000..c77d51335 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableStatsMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, data_base, `name`, create_time, update_time, column_count, storage_size, file_count, + partition_count, access_count, collect_count, ref_count, version + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableVersionMapper.xml b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableVersionMapper.xml new file mode 100644 index 000000000..4131b9e4d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dao/impl/DssDatamodelTableVersionMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, tbl_id, `name`, is_materialized, table_code, `comment`, version, table_params, + `columns`, source_type, create_time, update_time, creator + + \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblDetailInfoDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblDetailInfoDTO.java new file mode 100644 index 000000000..e3c10a8de --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblDetailInfoDTO.java @@ -0,0 +1,33 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Set; + + +@Data +public class HiveTblDetailInfoDTO implements Serializable { + private HiveTblBasicInfo basic; + private List columns; + private List partitionKeys; + + + @Data + public static class HiveTblBasicInfo extends HiveTblSimpleInfo { + private String store; + private String comment; + private Set labels; + private Boolean isParTbl; + } + + @Data + public static class HiveColumnInfoDTO { + private String name; + private String type; + private String guid; + private String comment; + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfo.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfo.java new file mode 100644 index 000000000..146a133b3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfo.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import lombok.Data; + +import java.util.Date; + + +@Data +public class HiveTblSimpleInfo { + private String guid; + private String name; + private String qualifiedName; + private Date createTime; + private String owner; + private Date lastAccessTime; + private String external; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfoDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfoDTO.java new file mode 100644 index 000000000..342c303d3 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/HiveTblSimpleInfoDTO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class HiveTblSimpleInfoDTO { + private String guid; + private String name; + private String qualifiedName; + private Date createTime; + private String owner; + private Date lastAccessTime; + private String aliases; + private String comment; + private List classifications; + private String totalSize; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/LabelQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/LabelQueryDTO.java new file mode 100644 index 000000000..4c70def69 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/LabelQueryDTO.java @@ -0,0 +1,52 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class LabelQueryDTO { + + private Long id; + + private String name; + + private String fieldIdentifier; + + /** + * 标签键值对 json + */ + private String params; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Date createTime; + + private Date updateTime; + + /** + * 英文 + */ + private String warehouseThemeNameEn; + + /** + * 被引用次数 + */ + private Integer refCount =0; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ListDataBasesVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ListDataBasesVO.java new file mode 100644 index 000000000..4d9673a64 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ListDataBasesVO.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class ListDataBasesVO { + private String name; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ModelTypeDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ModelTypeDTO.java new file mode 100644 index 000000000..a581ee5fd --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/ModelTypeDTO.java @@ -0,0 +1,28 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode +@AllArgsConstructor +public class ModelTypeDTO { + + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + + + /** + * 模型信息名称 + */ + private String modelName; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/PartInfoDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/PartInfoDTO.java new file mode 100644 index 000000000..72ed291cc --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/PartInfoDTO.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import lombok.Data; + +import java.util.Date; + + +@Data +public class PartInfoDTO { + private String partName; + private int reordCnt; + private int store; + private int fileCount; + private Date createTime; + private Date lastAccessTime; +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableCollectionDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableCollectionDTO.java new file mode 100644 index 000000000..239229cae --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableCollectionDTO.java @@ -0,0 +1,105 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class TableCollectionDTO { + + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 收藏人 + */ + private String user; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + /** + * 标签 + */ + private String label; + + /** + * atlas标识 + */ + private String guid; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableColumnQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableColumnQueryDTO.java new file mode 100644 index 000000000..7dcd94bec --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableColumnQueryDTO.java @@ -0,0 +1,50 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class TableColumnQueryDTO { + + private Long id; + + private Long tableId; + + private String name; + + private String alias; + + private String type; + + private String comment; + + private Integer isPartitionField; + + private Integer isPrimary; + + private Integer length; + + private String rule; + + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 模型信息名称 + */ + private String modelName; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + + private Date createTime; + + private Date updateTime; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableHeadlineDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableHeadlineDTO.java new file mode 100644 index 000000000..edea9a8c9 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableHeadlineDTO.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableHeadlineDTO { + + /** + * 0 表示 Hive + */ + private Integer storageType; + + /** + * 0 表示离线表 + */ + private Integer tableType; + + + /** + * 0 逻辑表 1 物理表 + */ + private Integer entityType; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableListDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableListDTO.java new file mode 100644 index 000000000..e3476a185 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableListDTO.java @@ -0,0 +1,102 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class TableListDTO { + + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + /** + * 生命周期 + */ + private String lifecycle; + + + private String lifecycleEn; + + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 版本信息:默认1 + */ + private String version; + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + + private Long size; + + + private String guid; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableQueryDTO.java new file mode 100644 index 000000000..a722c3fd1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableQueryDTO.java @@ -0,0 +1,170 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import com.google.common.collect.Lists; +import com.webank.wedatasphere.dss.data.governance.entity.HiveTblStatsDTO; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ColumnType; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.LabelConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.TabelExternalType; +import lombok.Data; +import lombok.ToString; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; +import java.util.Optional; + +@Data +@ToString +public class TableQueryDTO { + + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + private Date lastAccessTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 版本信息:默认1 + */ + private String version; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + private List columns = Lists.newArrayList(); + + /** + * 标签 + */ + private String label; + + + private TableStatsDTO stats = new TableStatsDTO(); + + + private TableHeadlineDTO headline; + + public static TableQueryDTO toTableStatsDTO(HiveTblDetailInfoDTO hiveTblDTO, HiveTblStatsDTO hiveTblStatsDTO, String name){ + TableQueryDTO dto = new TableQueryDTO(); + dto.setName(name); + dto.setCreateTime(hiveTblDTO.getBasic().getCreateTime()); + dto.setLastAccessTime(hiveTblDTO.getBasic().getLastAccessTime()); + dto.setCreator(hiveTblDTO.getBasic().getOwner()); + dto.setComment(hiveTblDTO.getBasic().getComment()); + + Optional tableExternalType = TabelExternalType.getByType(hiveTblDTO.getBasic().getExternal()); + tableExternalType.ifPresent(e -> dto.setIsExternal(e.getCode())); + + if (!CollectionUtils.isEmpty(hiveTblDTO.getBasic().getLabels())){ + StringBuilder sb = new StringBuilder(); + for (String label:hiveTblDTO.getBasic().getLabels()){ + sb.append(label).append(LabelConstant.SEPARATOR); + } + dto.setLabel(StringUtils.substringBeforeLast(sb.toString(),LabelConstant.SEPARATOR)); + } + dto.setIsPartitionTable(hiveTblDTO.getBasic().getIsParTbl()?ColumnType.PARTITION_KEY.getCode():ColumnType.COLUMN.getCode()); + + if (!CollectionUtils.isEmpty(hiveTblDTO.getColumns())){ + hiveTblDTO.getColumns().forEach(hiveColumn->{ + TableColumnQueryDTO columnQueryDTO = new TableColumnQueryDTO(); + columnQueryDTO.setComment(hiveColumn.getComment()); + columnQueryDTO.setName(hiveColumn.getName()); + columnQueryDTO.setType(hiveColumn.getType()); + columnQueryDTO.setIsPartitionField(ColumnType.COLUMN.getCode()); + dto.columns.add(columnQueryDTO); + }); + } + + if (!CollectionUtils.isEmpty(hiveTblDTO.getPartitionKeys())){ + hiveTblDTO.getPartitionKeys().forEach(hiveColumn->{ + TableColumnQueryDTO columnQueryDTO = new TableColumnQueryDTO(); + columnQueryDTO.setComment(hiveColumn.getComment()); + columnQueryDTO.setName(hiveColumn.getName()); + columnQueryDTO.setType(hiveColumn.getType()); + columnQueryDTO.setIsPartitionField(ColumnType.PARTITION_KEY.getCode()); + dto.columns.add(columnQueryDTO); + }); + } + TableHeadlineDTO headlineDTO = new TableHeadlineDTO(); + headlineDTO.setStorageType(0); + headlineDTO.setTableType(0); + headlineDTO.setEntityType(1); + dto.setHeadline(headlineDTO); + + dto.setStats(TableStatsDTO.from(hiveTblStatsDTO,0)); + return dto; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableStatsDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableStatsDTO.java new file mode 100644 index 000000000..4289a17bf --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableStatsDTO.java @@ -0,0 +1,73 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + +import com.webank.wedatasphere.dss.data.governance.entity.HiveTblStatsDTO; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class TableStatsDTO { + + private Long id; + + private String dataBase; + + private String name; + + private Date createTime; + + private Date updateTime; + + /** + * 字段数 + */ + private Integer columnCount = 0; + + /** + * 存储大小 + */ + private Long storageSize = 0L; + + /** + * 文件数 + */ + private Integer fileCount = 0; + + /** + * 分区数 + */ + private Integer partitionCount = 0; + + /** + * 访问次数 + */ + private Integer accessCount = 0; + + /** + * 收藏次数 + */ + private Integer collectCount = 0; + + /** + * 引用次数 + */ + private Integer refCount = 0; + + /** + * 版本信息:默认1 + */ + private String version; + + + public static TableStatsDTO from(HiveTblStatsDTO hiveTblStatsDTO,Integer collectCount){ + TableStatsDTO dto = new TableStatsDTO(); + dto.setColumnCount(hiveTblStatsDTO.getColumnCount()); + dto.setFileCount(hiveTblStatsDTO.getNumFiles()); + dto.setPartitionCount(hiveTblStatsDTO.getPartitionCount()); + dto.setStorageSize(hiveTblStatsDTO.getTotalSize()); + dto.setCollectCount(collectCount); + return dto; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableVersionQueryDTO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableVersionQueryDTO.java new file mode 100644 index 000000000..a60a68497 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/dto/TableVersionQueryDTO.java @@ -0,0 +1,51 @@ +package com.webank.wedatasphere.dss.datamodel.table.dto; + + +import lombok.Data; + +import java.util.Date; + +@Data +public class TableVersionQueryDTO { + + private Long id; + + private Long tblId; + + private String name; + + /** + * 是否物化 + */ + private Integer isMaterialized; + + /** + * 创建table的sql + */ + private String tableCode; + + /** + * 版本注释 + */ + private String comment; + + /** + * 版本信息:默认 1 + */ + private String version; + + private String tableParams; + + private String columns; + + /** + * rollback,update,add + */ + private String sourceType; + + private Date createTime; + + private Date updateTime; + + private String creator; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelDictionary.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelDictionary.java new file mode 100644 index 000000000..a8e50abc0 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelDictionary.java @@ -0,0 +1,100 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +/** + * 数模字典 + */ +public class DssDatamodelDictionary { + /** + * 主键id + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 类型code + */ + private String code; + + /** + * 字典类型 + */ + private String type; + + /** + * 描述 + */ + private String description; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private Integer sort; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelLabel.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelLabel.java new file mode 100644 index 000000000..4bcbd1da5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelLabel.java @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class DssDatamodelLabel { + @TableId(type = IdType.AUTO) + private Long id; + + private String name; + + private String fieldIdentifier; + + /** + * 标签键值对 json + */ + private String params; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + private Date createTime; + + private Date updateTime; + + /** + * 英文 + */ + private String warehouseThemeNameEn; +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTabelQuery.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTabelQuery.java new file mode 100644 index 000000000..412256ea5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTabelQuery.java @@ -0,0 +1,83 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + + +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelTabelQuery { + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 生命周期 + */ + private String lifecycle; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 版本信息:默认1 + */ + private String version; + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + private Integer modelType; + + private String modelName; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTable.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTable.java new file mode 100644 index 000000000..8bd88066c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTable.java @@ -0,0 +1,275 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelTable { + @TableId(type = IdType.AUTO) + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 版本信息:默认1 + */ + private String version; + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + /** + * 标签 + */ + private String label; + + + public String getDataBase() { + return dataBase; + } + + public void setDataBase(String dataBase) { + this.dataBase = dataBase; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getWarehouseLayerName() { + return warehouseLayerName; + } + + public void setWarehouseLayerName(String warehouseLayerName) { + this.warehouseLayerName = warehouseLayerName; + } + + public String getWarehouseLayerNameEn() { + return warehouseLayerNameEn; + } + + public void setWarehouseLayerNameEn(String warehouseLayerNameEn) { + this.warehouseLayerNameEn = warehouseLayerNameEn; + } + + public String getWarehouseThemeName() { + return warehouseThemeName; + } + + public void setWarehouseThemeName(String warehouseThemeName) { + this.warehouseThemeName = warehouseThemeName; + } + + public String getWarehouseThemeNameEn() { + return warehouseThemeNameEn; + } + + public void setWarehouseThemeNameEn(String warehouseThemeNameEn) { + this.warehouseThemeNameEn = warehouseThemeNameEn; + } + + public String getLifecycle() { + return lifecycle; + } + + public void setLifecycle(String lifecycle) { + this.lifecycle = lifecycle; + } + + public Integer getIsPartitionTable() { + return isPartitionTable; + } + + public void setIsPartitionTable(Integer isPartitionTable) { + this.isPartitionTable = isPartitionTable; + } + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + public String getStorageType() { + return storageType; + } + + public void setStorageType(String storageType) { + this.storageType = storageType; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public String getCompress() { + return compress; + } + + public void setCompress(String compress) { + this.compress = compress; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Integer getIsExternal() { + return isExternal; + } + + public void setIsExternal(Integer isExternal) { + this.isExternal = isExternal; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableCollcetion.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableCollcetion.java new file mode 100644 index 000000000..90e204e3b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableCollcetion.java @@ -0,0 +1,110 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelTableCollcetion { + @TableId(type = IdType.AUTO) + private Long id; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 收藏人 + */ + private String user; + + /** + * 版本信息:默认1 + */ + private String version; + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + /** + * 标签 + */ + private String label; + + /** + * atlas标识 + */ + private String guid; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableColumns.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableColumns.java new file mode 100644 index 000000000..464a4e1e6 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableColumns.java @@ -0,0 +1,169 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class DssDatamodelTableColumns { + @TableId(type = IdType.AUTO) + private Long id; + + private Long tableId; + + private String name; + + private String alias; + + private String type; + + private String comment; + + private Integer isPartitionField; + + private Integer isPrimary; + + private Integer length; + + private String rule; + + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + + /** + * 关联具体模型id信息(因为有版本数据表id不可靠,暂时不用) + */ + private Integer modelId; + + /** + * 模型信息名称 + */ + private String modelName; + + private Date createTime; + + private Date updateTime; + + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public Integer getIsPartitionField() { + return isPartitionField; + } + + public void setIsPartitionField(Integer isPartitionField) { + this.isPartitionField = isPartitionField; + } + + public Integer getIsPrimary() { + return isPrimary; + } + + public void setIsPrimary(Integer isPrimary) { + this.isPrimary = isPrimary; + } + + public Integer getLength() { + return length; + } + + public void setLength(Integer length) { + this.length = length; + } + + public String getRule() { + return rule; + } + + public void setRule(String rule) { + this.rule = rule; + } + + public Integer getModelType() { + return modelType; + } + + public void setModelType(Integer modelType) { + this.modelType = modelType; + } + + public String getModelNameEn() { + return modelNameEn; + } + + public void setModelNameEn(String modelNameEn) { + this.modelNameEn = modelNameEn; + } + + public Integer getModelId() { + return modelId; + } + + public void setModelId(Integer modelId) { + this.modelId = modelId; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableMaterializedHistory.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableMaterializedHistory.java new file mode 100644 index 000000000..c5b942a81 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableMaterializedHistory.java @@ -0,0 +1,57 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class DssDatamodelTableMaterializedHistory { + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 物化sql + */ + private String materializedCode; + + /** + * 物化原因 + */ + private String reason; + + /** + * 物化者 + */ + private String creator; + + /** + * succeed,failed,in progess + */ + private Integer status; + + private Date createTime; + + private Date lastUpdateTime; + + private String taskId; + + private String errorMsg; + + /** + * 表名 + */ + private String tablename; + + private String dataBase; + + /** + * 版本信息:默认1 + */ + private String version; + + +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStatics.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStatics.java new file mode 100644 index 000000000..16ca259b7 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStatics.java @@ -0,0 +1,80 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +public class DssDatamodelTableStatics { + @TableId(type = IdType.AUTO) + private Long id; + + private String originTables; + + private Long tableId; + + private Integer accessCount; + + private Integer lastAccessTime; + + /** + * 存储10行用例数据 + */ + private String sampleDataPath; + + private Integer sampleUpdateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getOriginTables() { + return originTables; + } + + public void setOriginTables(String originTables) { + this.originTables = originTables; + } + + public Long getTableId() { + return tableId; + } + + public void setTableId(Long tableId) { + this.tableId = tableId; + } + + public Integer getAccessCount() { + return accessCount; + } + + public void setAccessCount(Integer accessCount) { + this.accessCount = accessCount; + } + + public Integer getLastAccessTime() { + return lastAccessTime; + } + + public void setLastAccessTime(Integer lastAccessTime) { + this.lastAccessTime = lastAccessTime; + } + + public String getSampleDataPath() { + return sampleDataPath; + } + + public void setSampleDataPath(String sampleDataPath) { + this.sampleDataPath = sampleDataPath; + } + + public Integer getSampleUpdateTime() { + return sampleUpdateTime; + } + + public void setSampleUpdateTime(Integer sampleUpdateTime) { + this.sampleUpdateTime = sampleUpdateTime; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStats.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStats.java new file mode 100644 index 000000000..3ece606c5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableStats.java @@ -0,0 +1,163 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +public class DssDatamodelTableStats { + @TableId(type = IdType.AUTO) + private Long id; + + private String dataBase; + + private String name; + + private Date createTime; + + private Date updateTime; + + /** + * 字段数 + */ + private Integer columnCount; + + /** + * 存储大小 + */ + private Integer storageSize; + + /** + * 文件数 + */ + private Integer fileCount; + + /** + * 分区数 + */ + private Integer partitionCount; + + /** + * 访问次数 + */ + private Integer accessCount; + + /** + * 收藏次数 + */ + private Integer collectCount; + + /** + * 引用次数 + */ + private Integer refCount; + + /** + * 版本信息:默认1 + */ + private String version; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDataBase() { + return dataBase; + } + + public void setDataBase(String dataBase) { + this.dataBase = dataBase; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Integer getColumnCount() { + return columnCount; + } + + public void setColumnCount(Integer columnCount) { + this.columnCount = columnCount; + } + + public Integer getStorageSize() { + return storageSize; + } + + public void setStorageSize(Integer storageSize) { + this.storageSize = storageSize; + } + + public Integer getFileCount() { + return fileCount; + } + + public void setFileCount(Integer fileCount) { + this.fileCount = fileCount; + } + + public Integer getPartitionCount() { + return partitionCount; + } + + public void setPartitionCount(Integer partitionCount) { + this.partitionCount = partitionCount; + } + + public Integer getAccessCount() { + return accessCount; + } + + public void setAccessCount(Integer accessCount) { + this.accessCount = accessCount; + } + + public Integer getCollectCount() { + return collectCount; + } + + public void setCollectCount(Integer collectCount) { + this.collectCount = collectCount; + } + + public Integer getRefCount() { + return refCount; + } + + public void setRefCount(Integer refCount) { + this.refCount = refCount; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableVersion.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableVersion.java new file mode 100644 index 000000000..83689f366 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/entity/DssDatamodelTableVersion.java @@ -0,0 +1,154 @@ +package com.webank.wedatasphere.dss.datamodel.table.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +public class DssDatamodelTableVersion { + @TableId(type = IdType.AUTO) + private Long id; + + private Long tblId; + + private String name; + + /** + * 是否物化 + */ + private Integer isMaterialized; + + /** + * 创建table的sql + */ + private String tableCode; + + /** + * 版本注释 + */ + private String comment; + + /** + * 版本信息:默认version0002 + */ + private String version; + + private String tableParams; + + private String columns; + + /** + * rollback,update,add + */ + private String sourceType; + + private Date createTime; + + private Date updateTime; + + private String creator; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getTblId() { + return tblId; + } + + public void setTblId(Long tblId) { + this.tblId = tblId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getIsMaterialized() { + return isMaterialized; + } + + public void setIsMaterialized(Integer isMaterialized) { + this.isMaterialized = isMaterialized; + } + + public String getTableCode() { + return tableCode; + } + + public void setTableCode(String tableCode) { + this.tableCode = tableCode; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getTableParams() { + return tableParams; + } + + public void setTableParams(String tableParams) { + this.tableParams = tableParams; + } + + public String getColumns() { + return columns; + } + + public void setColumns(String columns) { + this.columns = columns; + } + + public String getSourceType() { + return sourceType; + } + + public void setSourceType(String sourceType) { + this.sourceType = sourceType; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindLabelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindLabelByTableEvent.java new file mode 100644 index 000000000..6c0630353 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindLabelByTableEvent.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@Getter +@ToString +public class BindLabelByTableEvent extends ApplicationEvent { + + private String user; + + private DssDatamodelTable table; + + public BindLabelByTableEvent(Object source,String user,DssDatamodelTable table) { + super(source); + this.user = user; + this.table = table; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByColumnsEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByColumnsEvent.java new file mode 100644 index 000000000..27f16ed69 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByColumnsEvent.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +import java.util.List; + +@Getter +public class BindModelByColumnsEvent extends ApplicationEvent { + + private String user; + + private String tableName; + + List columns; + + public BindModelByColumnsEvent(Object source, String user, String tableName, List columns) { + super(source); + this.user = user; + this.tableName = tableName; + this.columns = columns; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByTableEvent.java new file mode 100644 index 000000000..55b30e7de --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/BindModelByTableEvent.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +@Getter +public class BindModelByTableEvent extends ApplicationEvent { + + private String user; + + private DssDatamodelTable table; + + public BindModelByTableEvent(Object source,String user,DssDatamodelTable table) { + super(source); + this.user = user; + this.table = table; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/TableFirstBindEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/TableFirstBindEvent.java new file mode 100644 index 000000000..aae078344 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/TableFirstBindEvent.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +@Getter +public class TableFirstBindEvent extends ApplicationEvent { + private String user; + private Long tableId; + private String tableName; + + public TableFirstBindEvent(Object source, String user, Long tableId, String tableName) { + super(source); + this.user = user; + this.tableId = tableId; + this.tableName = tableName; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindLabelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindLabelByTableEvent.java new file mode 100644 index 000000000..06f7302c5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindLabelByTableEvent.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; +import org.springframework.stereotype.Component; + +@ToString +@Getter +public class UnBindLabelByTableEvent extends ApplicationEvent { + + private String user; + + private DssDatamodelTable table; + + public UnBindLabelByTableEvent(Object source,String user,DssDatamodelTable table) { + super(source); + this.user = user; + this.table = table; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByColumnsEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByColumnsEvent.java new file mode 100644 index 000000000..7d8c8a067 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByColumnsEvent.java @@ -0,0 +1,24 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +import java.util.List; + +@Getter +public class UnBindModelByColumnsEvent extends ApplicationEvent { + + private String user; + + private String tableName; + + List columns; + + public UnBindModelByColumnsEvent(Object source, String user, String tableName, List columns) { + super(source); + this.user = user; + this.tableName = tableName; + this.columns = columns; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByTableEvent.java new file mode 100644 index 000000000..5a0b7d6d8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UnBindModelByTableEvent.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; +@Getter +public class UnBindModelByTableEvent extends ApplicationEvent { + + private String user; + + private DssDatamodelTable table; + + public UnBindModelByTableEvent(Object source,String user,DssDatamodelTable table) { + super(source); + this.user = user; + this.table = table; + } +} \ No newline at end of file diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindLabelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindLabelByTableEvent.java new file mode 100644 index 000000000..679bc4e8b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindLabelByTableEvent.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +@ToString +@Getter +public class UpdateBindLabelByTableEvent extends ApplicationEvent { + private String user; + + private DssDatamodelTable ori; + + private DssDatamodelTable updateOne; + + public UpdateBindLabelByTableEvent(Object source, String user, DssDatamodelTable ori, DssDatamodelTable updateOne) { + super(source); + this.user = user; + this.ori = ori; + this.updateOne = updateOne; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByColumnsEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByColumnsEvent.java new file mode 100644 index 000000000..3b869b36f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByColumnsEvent.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +import java.util.List; + +@Getter +public class UpdateBindModelByColumnsEvent extends ApplicationEvent { + private String user; + + private String tableName; + + private List orgColumns; + + private List updateColumns; + + public UpdateBindModelByColumnsEvent(Object source, String user, String tableName, List orgColumns, List updateColumns) { + super(source); + this.user = user; + this.tableName = tableName; + this.orgColumns = orgColumns; + this.updateColumns = updateColumns; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByTableEvent.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByTableEvent.java new file mode 100644 index 000000000..65629a87a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/event/UpdateBindModelByTableEvent.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.table.event; + + +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +@Getter +public class UpdateBindModelByTableEvent extends ApplicationEvent { + private String user; + + private DssDatamodelTable org; + + private DssDatamodelTable updateOne; + + public UpdateBindModelByTableEvent(Object source, String user, DssDatamodelTable org, DssDatamodelTable updateOne) { + super(source); + this.user = user; + this.org = org; + this.updateOne = updateOne; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableFirstBindListener.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableFirstBindListener.java new file mode 100644 index 000000000..8e869e435 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableFirstBindListener.java @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.dss.datamodel.table.listener; + +import com.webank.wedatasphere.dss.datamodel.table.event.BindLabelByTableEvent; +import com.webank.wedatasphere.dss.datamodel.table.event.TableFirstBindEvent; +import com.webank.wedatasphere.dss.datamodel.table.service.TableMaterializedHistoryService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableService; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +@Component +public class TableFirstBindListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TableFirstBindListener.class); + + @Resource + private TableService tableService; + + @Resource + private TableMaterializedHistoryService tableMaterializedHistoryService; + + + @EventListener + @Async("taskExecutor") + public void firstBindTable(TableFirstBindEvent event) throws ErrorException, InterruptedException { + int count = 0; + do { + LOGGER.info("table id : {}, tableName : {}, user : {} wait 5s to bind ",event.getTableId(),event.getTableName(),event.getUser()); + TimeUnit.SECONDS.sleep(5); + if (tableMaterializedHistoryService.tableExists(event.getTableName(), event.getUser())) { + LOGGER.info("table id : {}, tableName : {}, user : {} exists bind",event.getTableId(),event.getTableName(),event.getUser()); + tableService.bind(event.getTableId(), event.getUser()); + count++; + break; + } + count++; + } while (count < 5); + LOGGER.info("table id : {}, tableName : {}, user : {} try bind {} times ",event.getTableId(),event.getTableName(),event.getUser(),count); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableLabelListener.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableLabelListener.java new file mode 100644 index 000000000..f402be7b5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableLabelListener.java @@ -0,0 +1,91 @@ +package com.webank.wedatasphere.dss.datamodel.table.listener; + +import com.webank.wedatasphere.dss.datamodel.center.common.constant.LabelConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.event.BindLabelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UnBindLabelEvent; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.event.BindLabelByTableEvent; +import com.webank.wedatasphere.dss.datamodel.table.event.UnBindLabelByTableEvent; +import com.webank.wedatasphere.dss.datamodel.table.event.UpdateBindLabelByTableEvent; +import jersey.repackaged.com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + +@Component +public class TableLabelListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TableLabelListener.class); + + public static final String LABEL_SEPARATOR = LabelConstant.SEPARATOR; + + @Resource + private ApplicationEventPublisher publisher; + + @EventListener + @Async("taskExecutor") + public void bindLabelByTable(BindLabelByTableEvent event){ + if (preEvent(event.getTable())) return; + String labels = event.getTable().getLabel(); + String[] binds = StringUtils.split(labels,LABEL_SEPARATOR); + + Arrays.stream(binds).forEach(bind->{ + publishBind(event.getUser(),bind,event.getTable().getName()); + }); + } + + private boolean preEvent(DssDatamodelTable table) { + return StringUtils.isBlank(table.getLabel()); + } + + private void publishBind(String user,String labelName,String tableName){ + publisher.publishEvent(new BindLabelEvent(this,user,labelName,tableName)); + } + + private void publishUnBind(String user,String labelName,String tableName){ + publisher.publishEvent(new UnBindLabelEvent(this,user,labelName,tableName)); + } + + @EventListener + @Async("taskExecutor") + public void unBindLabelByTable(UnBindLabelByTableEvent event){ + if (preEvent(event.getTable())) return; + String labels = event.getTable().getLabel(); + String[] unBinds = StringUtils.split(labels,LABEL_SEPARATOR); + + Arrays.stream(unBinds).forEach(bind->{ + publishBind(event.getUser(),bind,event.getTable().getName()); + }); + } + + @EventListener + @Async("taskExecutor") + public void updateBindLabelByTable(UpdateBindLabelByTableEvent event){ + String tableName = event.getOri().getName(); + String bindLabels = event.getUpdateOne().getLabel(); + String unBindLabels = event.getOri().getLabel(); + Set bindSets = Sets.newHashSet(); + Set unBindSets = Sets.newHashSet(); + if (StringUtils.isNotBlank(bindLabels)){ + bindSets.addAll(Arrays.stream(StringUtils.split(bindLabels,LABEL_SEPARATOR)).collect(Collectors.toSet())); + } + if (StringUtils.isNotBlank(unBindLabels)){ + unBindSets.addAll(Arrays.stream(StringUtils.split(unBindLabels,LABEL_SEPARATOR)).collect(Collectors.toSet())); + } + + Set willBinds = bindSets.stream().filter(bind->!unBindSets.contains(bind)).collect(Collectors.toSet()); + Set willUnBinds = unBindSets.stream().filter(unBind->!bindLabels.contains(unBind)).collect(Collectors.toSet()); + LOGGER.info("bind labels : {}",willBinds); + willBinds.forEach(bind->publishBind(event.getUser(),bind,tableName)); + LOGGER.info("unBind labels : {}",willUnBinds); + willUnBinds.forEach(unBind->publishUnBind(event.getUser(),unBind,tableName)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableModelListener.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableModelListener.java new file mode 100644 index 000000000..2e1fd7dee --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/listener/TableModelListener.java @@ -0,0 +1,147 @@ +package com.webank.wedatasphere.dss.datamodel.table.listener; + + +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.event.BindModelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UnBindModelEvent; +import com.webank.wedatasphere.dss.datamodel.table.dto.ModelTypeDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import com.webank.wedatasphere.dss.datamodel.table.event.*; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Optional; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +@Component +public class TableModelListener { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableModelListener.class); + + + @Resource + private ApplicationEventPublisher publisher; + + @EventListener + @Async("taskExecutor") + public void bindByTable(BindModelByTableEvent event){ + bindByTable(event.getUser(),event.getTable()); + } + + @EventListener + @Async("taskExecutor") + public void unBindByTable(UnBindModelByTableEvent event){ + unBindByTable(event.getUser(),event.getTable()); + } + + @Async("taskExecutor") + @EventListener + public void updateBindByTable(UpdateBindModelByTableEvent event){ + if (StringUtils.equals(event.getOrg().getName(),event.getUpdateOne().getName())){ + return; + } + String user = event.getUser(); + String tableName = event.getOrg().getName(); + + String orgLayerNameEn = event.getOrg().getWarehouseLayerNameEn(); + String updateLayerNameEn = event.getUpdateOne().getWarehouseLayerNameEn(); + //分层名称不同 则换绑 + if (!StringUtils.equals(orgLayerNameEn,updateLayerNameEn)){ + publishBind(user,null, tableName,updateLayerNameEn,ClassificationConstant.LAYER); + publishUnBind(user,null, tableName,orgLayerNameEn,ClassificationConstant.LAYER); + } + + + String orgThemeNameEn = event.getOrg().getWarehouseThemeNameEn(); + String updateThemeNameEn = event.getUpdateOne().getWarehouseThemeNameEn(); + //主题名称不同 则换绑 + if (!StringUtils.equals(orgThemeNameEn,updateThemeNameEn)){ + publishBind(user,null, tableName,updateThemeNameEn,ClassificationConstant.THEME); + publishUnBind(user,null, tableName,orgThemeNameEn,ClassificationConstant.THEME); + } + } + + + + + @Async("taskExecutor") + @EventListener + public void updateBindByColumns(UpdateBindModelByColumnsEvent event){ + Set orgModels = event.getUpdateColumns().stream().filter(filterNull()).map(c->new ModelTypeDTO(c.getModelType(),c.getModelNameEn(),c.getModelName())).collect(Collectors.toSet()); + Set updateModels = event.getOrgColumns().stream().filter(filterNull()).map(c->new ModelTypeDTO(c.getModelType(),c.getModelNameEn(),c.getModelName())).collect(Collectors.toSet()); + + //去重 获取绑定列表 + Set bindModels = updateModels.stream().filter(bindOne->!orgModels.contains(bindOne)).collect(Collectors.toSet()); + LOGGER.info("bindModels : {}",bindModels); + //去重 获取解绑列表 + Set unBindModels = orgModels.stream().filter(unBindOne->!updateModels.contains(unBindOne)).collect(Collectors.toSet()); + LOGGER.info("unBindModels : {}",unBindModels); + + bindByColumnsModel(event.getUser(),event.getTableName(),bindModels); + unBindByColumnsModel(event.getUser(), event.getTableName(), unBindModels); + } + + private void unBindByTable(String user,DssDatamodelTable deleteOne) { + publishUnBind(user,null, deleteOne.getName(), deleteOne.getWarehouseThemeNameEn(),ClassificationConstant.THEME); + publishUnBind(user,null, deleteOne.getName(), deleteOne.getWarehouseLayerNameEn(),ClassificationConstant.LAYER); + } + + private void bindByTable(String user,DssDatamodelTable newOne) { + publishBind(user,null, newOne.getName(), newOne.getWarehouseThemeNameEn(),ClassificationConstant.THEME); + publishBind(user,null, newOne.getName(), newOne.getWarehouseLayerNameEn(),ClassificationConstant.LAYER); + } + + private void publishBind(String user, String guid, String tableName, String modelName, ClassificationConstant modelType){ + publisher.publishEvent(new BindModelEvent(this,user,guid,tableName,modelName,modelType)); + } + + private void publishUnBind(String user, String guid, String tableName, String modelName, ClassificationConstant modelType){ + publisher.publishEvent(new UnBindModelEvent(this,user,guid,tableName,modelName,modelType)); + } + + @EventListener + @Async("taskExecutor") + public void bindByColumnsModel(BindModelByColumnsEvent event){ + bindByColumnsModel(event.getUser(),event.getTableName(),event.getColumns().stream().filter(filterNull()).map(c->new ModelTypeDTO(c.getModelType(),c.getModelNameEn(),c.getModelName())).collect(Collectors.toSet())); + } + + //过滤所有空值 + private Predicate filterNull() { + return c -> c.getModelType() != null && c.getModelName() != null && c.getModelNameEn() != null; + } + + @EventListener + @Async("taskExecutor") + public void unBindByColumnsModel(UnBindModelByColumnsEvent event){ + unBindByColumnsModel(event.getUser(),event.getTableName(),event.getColumns().stream().filter(filterNull()).map(c->new ModelTypeDTO(c.getModelType(),c.getModelNameEn(),c.getModelName())).collect(Collectors.toSet())); + } + + private void bindByColumnsModel(String user, String tableName, Set modelTypeDTOS){ + for (ModelTypeDTO model : modelTypeDTOS){ + Optional optional = ClassificationConstant.getClassificationConstantByType(model.getModelType()); + if (!optional.isPresent()){ + continue; + } + publishBind(user,null, tableName, model.getModelNameEn(),optional.get()); + } + } + + private void unBindByColumnsModel(String user, String tableName, Set modelTypeDTOS){ + for (ModelTypeDTO column : modelTypeDTOS){ + Optional optional = ClassificationConstant.getClassificationConstantByType(column.getModelType()); + if (!optional.isPresent()){ + continue; + } + publishUnBind(user,null, tableName, column.getModelNameEn(),optional.get()); + } + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchema.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchema.java new file mode 100644 index 000000000..3aa6a7342 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchema.java @@ -0,0 +1,180 @@ +package com.webank.wedatasphere.dss.datamodel.table.materialized; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class HiveSchema { + + private Map columnMap = new HashMap(); + private List columnList = new ArrayList(); + private String tableName; + private String dataBase; + private String originalDataFormat; + private String storedType; + private boolean isExternal =false; + private String location; + private String comment; + public List partitionList = new ArrayList(); + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public void setExternal(boolean external) { + isExternal = external; + } + + public void setStoredType(String storedType) { + this.storedType = storedType; + } + + public String getStoredType() { + return storedType; + } + + public boolean isExternal() { + return isExternal; + } + + public String getDataBase() { + return dataBase; + } + + public void setDataBase(String dataBase) { + this.dataBase = dataBase; + } + + public List getPartitionColumns() { + return partitionList; + } + + public List getColumns() { + return columnList; + } + + public Column getColumn(String name) { + return columnMap.get(name); + } + + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableName() { + return tableName; + } + + + public String getOriginalDataFormat() { + return originalDataFormat; + } + + public void setOriginalDataFormat(String originalDataFormat) { + this.originalDataFormat = originalDataFormat; + } + + public void addColumn(String name, String type, int length, int percision, boolean isPartition, boolean isPrimaryKey,String comment) { + Column column = new Column(name, type, length, percision, isPartition, isPrimaryKey,comment); + columnList.add(column); + columnMap.put(name, column); + if (isPartition) { + partitionList.add(column); + } + } + + + public static class Column { + String name; + String type; + int length; + int percision; + private String comment; + boolean isPartition; + boolean isPrimaryKey; + + public Column(String name, String type, int length, int percision, boolean isPartition, boolean isPrimaryKey,String comment) { + super(); + this.name = name; + this.type = type; + this.length = length; + this.percision = percision; + this.isPartition = isPartition; + this.isPrimaryKey = isPrimaryKey; + this.comment = comment; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + + public int getPercision() { + return percision; + } + + public void setPercision(int percision) { + this.percision = percision; + } + + public boolean isPartition() { + return isPartition; + } + + public void setPartition(boolean isPartition) { + this.isPartition = isPartition; + } + + public boolean isPrimaryKey() { + return isPrimaryKey; + } + + public void setPrimaryKey(boolean isPrimaryKey) { + this.isPrimaryKey = isPrimaryKey; + } + + + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchemaDdlBuilder.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchemaDdlBuilder.java new file mode 100644 index 000000000..2796e6283 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/materialized/HiveSchemaDdlBuilder.java @@ -0,0 +1,182 @@ +package com.webank.wedatasphere.dss.datamodel.table.materialized; + +import com.webank.wedatasphere.dss.datamodel.table.materialized.HiveSchema.Column; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + + +public class HiveSchemaDdlBuilder { + public static String lineSeparator = System.getProperty("line.separator"); + + private String fieldsTerminated = "\'\\t\'"; + + private String linesTerminated = "\'\\n\'"; + + private HiveSchema hiveSchema; + + private boolean isExternal = false; + + public HiveSchemaDdlBuilder() { + hiveSchema = new HiveSchema(); + } + + + public HiveSchemaDdlBuilder tableName(String tableName) { + hiveSchema.setTableName(tableName); + return this; + } + + public HiveSchemaDdlBuilder storedType(String storedType) { + hiveSchema.setStoredType(storedType); + return this; + } + + public HiveSchemaDdlBuilder location(String location) { + hiveSchema.setLocation(location); + return this; + } + + public HiveSchemaDdlBuilder comment(String comment) { + hiveSchema.setComment(comment); + return this; + } + + + public HiveSchemaDdlBuilder withExternal() { + hiveSchema.setExternal(true); + return this; + } + + public HiveSchemaDdlBuilder fieldsTerminated(String fieldsTerminated) { + this.fieldsTerminated = fieldsTerminated; + return this; + } + + public HiveSchemaDdlBuilder linesTerminated(String linesTerminated) { + this.linesTerminated = linesTerminated; + return this; + } + + public HiveSchemaDdlBuilder dataBase(String dataBase) { + hiveSchema.setDataBase(dataBase); + return this; + } + + public HiveSchemaDdlBuilder addColumn(String name, String type, int length, int percision, boolean isPartition, boolean isPrimaryKey, String comment) { + hiveSchema.addColumn(name, type, length, percision, isPartition, isPrimaryKey, comment); + return this; + } + + public void addColumn(String name, String type, boolean isPartition, String comment) { + addColumn(name,type,0,0,isPartition,false,comment); + } + + public String createTableString() { + StringBuilder builder = new StringBuilder(); + + builder.append("CREATE "); + + if (hiveSchema.isExternal()) { + builder.append("EXTERNAL "); + } + +// builder.append("TABLE " + hiveSchema.getDataBase() + "." + hiveSchema.getTableName() +// + lineSeparator); + builder.append("TABLE IF NOT EXISTS ").append(hiveSchema.getTableName()).append(lineSeparator); + + + builder.append("( "); + boolean isFirstColumn = true; + for (HiveSchema.Column c : hiveSchema.getColumns()) { + if (!c.isPartition()) { + if (isFirstColumn) { + isFirstColumn = false; + } else { + builder.append(","); + } + builder.append(lineSeparator); + builder.append(" ").append(c.getName()).append(" ").append(c.getType()); + if (c.getComment() != null && !c.getComment().equals("")) { + builder.append(" ").append("COMMENT '").append(c.getComment()).append("'"); + } + } + } + + builder.append(") ").append(lineSeparator); + + if (hiveSchema.getComment() != null && !hiveSchema.getComment().equals("")) { + builder.append("COMMENT '").append(hiveSchema.getComment()).append("'").append(lineSeparator); + } + + List partitionColumns = hiveSchema.getPartitionColumns(); + if (partitionColumns.size() > 0) { + builder.append("PARTITIONED BY ("); + + isFirstColumn = true; + for (Column c : partitionColumns) { + if (isFirstColumn) { + isFirstColumn = false; + } else { + builder.append(", "); + } + builder.append(c.getName()).append(" ").append(c.getType()); + } + + builder.append(")").append(lineSeparator); + } + + if (hiveSchema.getStoredType() != null) { + builder.append("STORED AS ").append(hiveSchema.getStoredType()).append(lineSeparator); + } + + if (hiveSchema.isExternal()&&StringUtils.isNotBlank(hiveSchema.getLocation())) { + builder.append("LOCATION ").append("'").append(hiveSchema.getLocation()).append("'"); + } + + + builder.append(";"); + + return builder.toString(); + } + + private static String convertColumnType(Column column) { + String dbType = column.getType().toUpperCase(); + + if (dbType.equals("STRING") || dbType.equals("VARCHAR2") + || dbType.equals("CHAR") || dbType.equals("VARCHAR") + || dbType.equals("CLOB")) { + return "STRING"; + } else if (dbType.equals("NUMBER") || dbType.equals("DECIMAL") + || dbType.equals("BYTEINT") || dbType.equals("SMALLINT") + || dbType.equals("INTEGER") || dbType.equals("BIGINT") + || dbType.equals("INT") || dbType.equals("FLOAT")) { + if (column.getPercision() == 0) { + if (column.getLength() > 18) { + return "STRING"; + } else if (column.getLength() > 9 || dbType.equals("BIGINT")) { + return "BIGINT"; + } else if (column.getLength() > 4 || dbType.equals("INTEGER")) { + return "INT"; + } else if (column.getLength() > 2 || dbType.equals("SMALLINT")) { + return "SMALLINT"; + } else { + return "TINYINT"; + } + } else { + if (column.getLength() > 17) { + return "STRING"; + } else { + return "DOUBLE"; + } + } + + } else if (dbType.equals("OTHERDATE") || dbType.equals("DATE") + || dbType.equals("DATETIME") || dbType.equals("TIMESTAMP")) { + return "TIMESTAMP"; + } else { + throw new RuntimeException("Currently doesn't support " + dbType + " for column " + column.getName()); + } + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/restful/TableRestfulApi.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/restful/TableRestfulApi.java new file mode 100644 index 000000000..db80cf93c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/restful/TableRestfulApi.java @@ -0,0 +1,565 @@ +package com.webank.wedatasphere.dss.datamodel.table.restful; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.AuthenticationClientStrategy; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseReferenceService; +import com.webank.wedatasphere.dss.datamodel.table.service.LabelService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableService; +import com.webank.wedatasphere.dss.datamodel.table.vo.*; +import com.webank.wedatasphere.dss.framework.workspace.client.impl.LinkisWorkSpaceRemoteClient; +import com.webank.wedatasphere.dss.framework.workspace.client.request.GetWorkspaceUsersAction; +import com.webank.wedatasphere.dss.framework.workspace.client.response.GetWorkspaceUsersResult; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.client.GovernanceDwRemoteClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + + + +@RequestMapping(path = "/datamodel", produces = {"application/json"}) +@RestController +public class TableRestfulApi implements AuthenticationClientStrategy { + + + private static final Logger LOGGER = LoggerFactory.getLogger(TableRestfulApi.class); + + + @Autowired + private TableService tableService; + + + @Resource + private LabelService labelService; + + + @Autowired + private GovernanceDwRemoteClient governanceDwRemoteClient; + + + @Resource + private DataWarehouseReferenceService dataWarehouseReferenceService; + + @Resource + private LinkisWorkSpaceRemoteClient linkisWorkSpaceRemoteClient; + + /** + * 新增 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables",method = RequestMethod.POST) + public Message add(HttpServletRequest req, @RequestBody TableAddVO vo) throws ErrorException { + vo.setCreator(getStrategyUser(req)); + LOGGER.info("tablesAddVO : {}", vo); + return Message.ok().data("id", tableService.addTable(vo)); + } + + + /** + * 更新 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables/{id}",method = RequestMethod.PUT) + public Message update(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody TableUpdateVO vo) throws ErrorException { + vo.setCreator(getStrategyUser(req)); + LOGGER.info("update id : {}, tableUpdateVO : {}", id, vo); + return Message.ok().data("count", tableService.updateTable(id, vo)); + } + + /** + * 删除 + * + * @param req + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables/{id}",method = RequestMethod.DELETE) + public Message delete(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("delete id : {}", id); + return Message.ok().data("count", tableService.deleteTable(id)); + } + + + /** + * 主动绑定 + * + * @param req + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables/bind/{id}",method = RequestMethod.PUT) + public Message bind(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("bind id : {}", id); + tableService.tryBind(id); + return Message.ok(); + } + + + /** + * 查看 + * + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/tables/{id}",method = RequestMethod.GET) + public Message query(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("query id : {}", id); + return Message.ok().data("detail", tableService.queryById(id)); + } + + + /** + * 按表名搜索查看 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/name",method = RequestMethod.POST) + public Message queryName(HttpServletRequest req, @RequestBody TableQueryOneVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("query vo : {}", vo); + return Message.ok().data("detail", tableService.queryByName(vo)); + } + + + /** + * 分页搜索 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/list",method = RequestMethod.POST) + public Message list(HttpServletRequest req, @RequestBody TableListVO vo) { + vo.setUser(getStrategyUser(req)); + LOGGER.info("list vo : {}", vo); + return tableService.list(vo); + } + + + /** + * 新增版本 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables/versions/{id}",method = RequestMethod.POST) + public Message addVersion(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody TableVersionAddVO vo) throws Exception { + vo.setCreator(getStrategyUser(req)); + LOGGER.info("tableVersionAddVO : {}", vo); + return Message.ok().data("count", tableService.addTableVersion(id, vo)); + } + + + /** + * 回退指定版本 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/tables/versions/rollback",method = RequestMethod.POST) + public Message versionRollBack(HttpServletRequest req, @RequestBody TableVersionRollBackVO vo) throws Exception { + vo.setUser(getStrategyUser(req)); + LOGGER.info("tableVersionRollBackVO : {}", vo); + return Message.ok().data("count", tableService.versionRollBack(vo)); + } + + + /** + * 搜索表版本历史 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/versions/list",method = RequestMethod.POST) + public Message tableVersionsList(HttpServletRequest req, @RequestBody TableVersionQueryVO vo) { + LOGGER.info("version list vo : {}", vo); + return tableService.listTableVersions(vo); + } + + +// /** +// * 相关主题可选列表 +// * +// * @param req +// * @return +// */ +// @POST +// @Path("/tables/themes/list") +// public Message tableThemesList(HttpServletRequest req) { +// ListDwThemeDomainAction action = ListDwThemeDomainAction.builder().setUser(getStrategyUser(req)).setIsAvailable(true).build(); +// return Message.messageToResponse(Message.ok().data("list", governanceDwRemoteClient.listThemeDomains(action).getAll())); +// } + + + /** + * 主题引用情况 + * + * @param req + * @return + */ + @RequestMapping(value = "/themes/reference/{name}",method = RequestMethod.GET) + public Message themesReference(HttpServletRequest req, @PathVariable("name") String name) { + LOGGER.info("themes reference name : {}", name); + return Message.ok().data("result", dataWarehouseReferenceService.themeReferenceCount(name)); + } + +// /** +// * 相关分层 +// * +// * @param req +// * @return +// */ +// @POST +// @Path("/tables/layers/list") +// public Message tableLayerList(HttpServletRequest req) { +// ListDwLayerAction action = ListDwLayerAction.builder().setIsAvailable(true).setUser(getStrategyUser(req)).build(); +// return Message.messageToResponse(Message.ok().data("list", governanceDwRemoteClient.listLayers(action).getAll())); +// } + + /** + * 分层引用情况 + * + * @param req + * @return + */ + @RequestMapping(value = "/layers/reference/{name}",method = RequestMethod.GET) + public Message layersReference(HttpServletRequest req, @PathVariable("name") String name) { + LOGGER.info("layers reference name : {}", name); + return Message.ok().data("result", dataWarehouseReferenceService.layerReferenceCount(name)); + } + + /** + * 周期引用情况 + * + * @param req + * @return + */ + @RequestMapping(value = "/cycles/reference/{name}",method = RequestMethod.GET) + public Message cycleReference(HttpServletRequest req, @PathVariable("name") String name) { + LOGGER.info("cycles reference name : {}", name); + return Message.ok().data("result", dataWarehouseReferenceService.cycleReferenceCount(name)); + } + + /** + * 修饰词引用情况 + * + * @param req + * @return + */ + + @RequestMapping(value = "/modifiers/reference/{name}",method = RequestMethod.GET) + public Message modifiersReference(HttpServletRequest req, @PathVariable("name") String name) { + LOGGER.info("modifiers reference name : {}", name); + return Message.ok().data("result", dataWarehouseReferenceService.modifierReferenceCount(name)); + } + + /** + * 数据库列表 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/databases/list",method = RequestMethod.POST) + public Message tableDataBasesList(HttpServletRequest req, @RequestBody TableDatabasesQueryVO vo) { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table databases vo : {}", vo); + return tableService.listDataBases(vo); + } + + + /** + * 收藏 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/collect",method = RequestMethod.POST) + public Message tableCollect(HttpServletRequest req, @RequestBody TableCollectVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table collection vo : {}", vo); + return Message.ok().data("count", tableService.tableCollect(vo)); + } + + /** + * 取消收藏 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/collect/cancel",method = RequestMethod.POST) + public Message tableCancelCollect(HttpServletRequest req, @RequestBody TableCollectCancelVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table collection cancel vo : {}", vo); + return Message.ok().data("count", tableService.tableCancel(vo)); + } + + + /** + * 我的收藏列表 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/collect/list",method = RequestMethod.POST) + public Message tableCollectList(HttpServletRequest req, @RequestBody TableCollectQueryVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table collection list vo : {}", vo); + return tableService.tableCollections(vo); + } + + /** + * 表数据预览 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/data/preview",method = RequestMethod.POST) + public Message tableDataPreview(HttpServletRequest req, @RequestBody TableDataPreviewVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table data preview : {}", vo); + return tableService.previewData(vo); + } + + + /** + * 执行建表 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/create",method = RequestMethod.POST) + public Message tableCreate(HttpServletRequest req, @RequestBody TableCreateVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table create vo : {}", vo); + return Message.ok().data("count", tableService.tableCreate(vo)); + } + + /** + * 生成建表语句 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/create/sql",method = RequestMethod.POST) + public Message tableCreateSql(HttpServletRequest req, @RequestBody TableCreateSqlVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table create sql vo : {}", vo); + return Message.ok().data("detail", tableService.tableCreateSql(vo)); + } + + + /** + * 字典列表 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/dictionaries/list",method = RequestMethod.POST) + public Message tableDictionaryList(HttpServletRequest req, @RequestBody TableDictionaryListVO vo) { + LOGGER.info("table dictionaries list vo : {}", vo); + return tableService.dictionaryList(vo); + } + + + /** + * 新增字段 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/columns/add",method = RequestMethod.POST) + public Message tableColumnsAdd(HttpServletRequest req, @RequestBody TableColumnsAddVO vo) throws ErrorException { + LOGGER.info("table column add vo : {}", vo); + return Message.ok().data("count", tableService.addTableColumn(vo)); + } + + /** + * 字段绑定模型 + * + * @param req + * @param vo + * @return + */ + @RequestMapping(value = "/tables/columns/bind/{columnId}",method = RequestMethod.POST) + public Message tableColumnBind(HttpServletRequest req, @PathVariable("columnId") Long columnId, @RequestBody TableColumnBindVO vo) throws ErrorException { + LOGGER.info("table column bind model columnId : {}, vo : {}", columnId, vo); + return Message.ok().data("count", tableService.tableColumnBind(columnId, vo)); + } + + /** + * 分区统计信息 + * + * @param vo + * @return + */ + @RequestMapping(value = "/tables/partition/stats",method = RequestMethod.POST) + public Message tblPartitionStats(HttpServletRequest req, TblPartitionStatsVO vo) { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table partition stats vo : {}", vo); + return tableService.listTablePartitionStats(vo); + } + + + /** + * 获取当前用户 + * + * @param req + * @return + */ + @RequestMapping(value = "/current/user",method = RequestMethod.POST) + public Message currentUser(HttpServletRequest req) { + return Message.ok().data("user", getStrategyUser(req)); + } + + + /** + * 检测表是否有数据 + * + * @param req + * @return + */ + @RequestMapping(value = "/tables/check/data",method = RequestMethod.POST) + public Message tableCheckData(HttpServletRequest req, @RequestBody TableCheckDataVO vo) throws ErrorException { + vo.setUser(getStrategyUser(req)); + LOGGER.info("table partition stats vo : {}", vo); + return Message.ok().data("status", tableService.tableCheckData(vo)); + } + + + /** + * 新增标签 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/labels",method = RequestMethod.POST) + public Message addLabels(HttpServletRequest req, @RequestBody LabelAddVO vo) throws ErrorException { + LOGGER.info("addLabels vo : {}", vo); + return Message.ok().data("id", labelService.add(vo)); + } + + + /** + * 更新标签 + * + * @param req + * @param vo + * @return + * @throws IOException + */ + @RequestMapping(value = "/labels/{id}",method = RequestMethod.POST) + public Message updateLabels(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody LabelUpdateVO vo) throws ErrorException { + LOGGER.info("updateLabels id : {}, vo : {}", id, vo); + return Message.ok().data("count", labelService.update(id, vo)); + } + + /** + * 删除标签 + * + * @param req + * @return + * @throws IOException + */ + @RequestMapping(value = "/labels/{id}",method = RequestMethod.DELETE) + public Message deleteLabels(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("deleteLabels id : {}", id); + return Message.ok().data("count", labelService.delete(id)); + } + + /** + * 查看标签 + * + * @param req + * @param id + * @return + */ + @RequestMapping(value = "/labels/{id}",method = RequestMethod.GET) + public Message queryLabels(HttpServletRequest req, @PathVariable("id") Long id) throws ErrorException { + LOGGER.info("queryLabels id : {}", id); + return Message.ok().data("detail", labelService.query(id)); + } + + + /** + * 标签搜索 + * + * @param req + * @return + */ + @RequestMapping(value = "/labels/list",method = RequestMethod.POST) + public Message listLabels(HttpServletRequest req, @RequestBody LabelsQueryVO vo) throws ErrorException { + LOGGER.info("listLabels vo : {}", vo); + return labelService.list(vo); + } + + /** + * 启用/禁用 + * + * @param req + * @param id + * @param vo + * @return + */ + @RequestMapping(value = "/labels/enable/{id}",method = RequestMethod.PUT) + public Message enableLabel(HttpServletRequest req, @PathVariable("id") Long id, @RequestBody LabelEnableVO vo) throws ErrorException { + LOGGER.info("enableLabel id : {}, vo : {}", id, vo); + return Message.ok().data("count", labelService.enable(id, vo)); + } + + + /** + * 查询用户 + * + * @param req + * @param workspaceId + * @return + */ + @RequestMapping(value = "/users/{workspaceId}",method = RequestMethod.GET) + public Message users(HttpServletRequest req, @PathVariable("workspaceId") String workspaceId) throws ErrorException { + LOGGER.info("users workspaceId : {}", workspaceId); + GetWorkspaceUsersResult result = linkisWorkSpaceRemoteClient.getWorkspaceUsers(GetWorkspaceUsersAction.builder().setUser(getStrategyUser(req)).setWorkspaceId(workspaceId).build()); + return Message.ok().data("users", result.getWorkspaceUserList()); + } + + + /** + * 查询角色 + * + * @param req + * @param workspaceId + * @return + */ + @RequestMapping(value = "/roles/{workspaceId}",method = RequestMethod.GET) + public Message roles(HttpServletRequest req, @PathVariable("workspaceId") String workspaceId) throws ErrorException { + LOGGER.info("roles workspaceId : {}", workspaceId); + GetWorkspaceUsersResult result = linkisWorkSpaceRemoteClient.getWorkspaceUsers(GetWorkspaceUsersAction.builder().setUser(getStrategyUser(req)).setWorkspaceId(workspaceId).build()); + return Message.ok().data("users", result.getWorkspaceRoleList()); + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/LabelService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/LabelService.java new file mode 100644 index 000000000..1e2cd6395 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/LabelService.java @@ -0,0 +1,77 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.dto.LabelQueryDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelLabel; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelAddVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelEnableVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelUpdateVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelsQueryVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; + +public interface LabelService extends IService { + + /** + * 新增标签 + * @param vo + * @return + * @throws ErrorException + */ + Long add(LabelAddVO vo) throws ErrorException; + + + /** + * 更新标签 + * @return + * @throws ErrorException + */ + int update(Long id, LabelUpdateVO vo) throws ErrorException; + + + /** + * 查看标签 + * @param id + * @return + * @throws ErrorException + */ + LabelQueryDTO query(Long id) throws ErrorException; + + + /** + * 启用/禁用 + * @param id + * @param vo + * @return + * @throws ErrorException + */ + int enable(Long id, LabelEnableVO vo) throws ErrorException; + + + /** + * 删除标签 + * @param id + * @return + * @throws ErrorException + */ + int delete(Long id) throws ErrorException; + + + /** + * 查询标签 + * @param vo + * @return + * @throws ErrorException + */ + Message list(LabelsQueryVO vo) throws ErrorException; + + + /** + * 标签引用主题统计 + * @param themeName + * @return + * @throws ErrorException + */ + int labelThemeReferenceCount(String themeName); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableCollectService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableCollectService.java new file mode 100644 index 000000000..3ee1cfb4a --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableCollectService.java @@ -0,0 +1,38 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableCollcetion; +import com.webank.wedatasphere.dss.datamodel.table.vo.TableCollectVO; + +public interface TableCollectService extends IService { + + /** + * 收藏目标表 + * + * @param user + * @param targetTable + * @return + */ + Integer tableCollect(String user, DssDatamodelTable targetTable); + + + /** + * 收藏上传表信息 + * @param vo + * @return + */ + Integer tableCollect(TableCollectVO vo); + + + /** + * 取消收藏 + * @param user + * @param tableName + * @return + */ + Integer tableCollectCancel(String user, String tableName); + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableColumnsService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableColumnsService.java new file mode 100644 index 000000000..a875f1125 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableColumnsService.java @@ -0,0 +1,77 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ModeType; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import org.apache.linkis.common.exception.ErrorException; + +import java.util.List; + +public interface TableColumnsService extends IService { + + /** + * 批量新增表字段 + * @param columnsList + * @return + */ + int batchInsert(Long tableId,List columnsList) throws ErrorException; + + + /** + * 批量更新表字段 + * @param tableId + * @param columnsList + * @return + * @throws ErrorException + */ + int batchUpdate(Long tableId,List columnsList) throws ErrorException; + + + /** + * 表字段列表 + * @param tableId + * @return + * @throws ErrorException + */ + List listByTableId(Long tableId); + + + /** + * 根据表id删除字段 + * @param tableId + * @return + * @throws ErrorException + */ + Integer deleteByTableId(Long tableId)throws ErrorException; + + + /** + * 新增数据表字段 + * @param column + * @return + */ + Integer addColumn(DssDatamodelTableColumns column); + + + + Integer tableColumnBind(Long id, Integer modelType, String modelName,String modelNameEn) throws ErrorException; + + + /** + * 模型引用计数 + * @param modeType + * @param name + * @return + */ + int modelReferenceCount(ModeType modeType, String name); + + /** + * 模型英文引用计数 + * @param modeType + * @param name + * @return + */ + int modelReferenceCountEn(ModeType modeType, String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableDictionaryService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableDictionaryService.java new file mode 100644 index 000000000..cd368bd39 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableDictionaryService.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelDictionary; + +import java.util.List; + +public interface TableDictionaryService extends IService { + + /** + * 根据类型搜索字典 + * @param type + * @return + */ + List listByType(String type); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableMaterializedHistoryService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableMaterializedHistoryService.java new file mode 100644 index 000000000..5541713e5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableMaterializedHistoryService.java @@ -0,0 +1,97 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.center.common.dto.CreateTableDTO; +import com.webank.wedatasphere.dss.datamodel.table.dto.HiveTblSimpleInfoDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableMaterializedHistory; +import org.apache.linkis.common.exception.ErrorException; + +import java.util.Optional; + +public interface TableMaterializedHistoryService extends IService { + + /** + * 物化表结构 + * @param current + * @param user + * @return + */ + Integer materializedTable(DssDatamodelTable current, String user) throws ErrorException; + + + /** + * 生成建表语句 + * @param current + * @return + */ + String generateSql(DssDatamodelTable current); + + + /** + * 检查是否有数据 + * @param current + * @param user + * @throws ErrorException + */ + void checkData(DssDatamodelTable current, String user) throws ErrorException; + + + /** + * 判断是否有数据 + * + * @param tableName @return + * @param user + */ + boolean hasData(String tableName, String user); + + + /** + * + * @param tableName + * @param user + * @throws ErrorException + * @return + */ + boolean tableExists(String tableName, String user) throws ErrorException; + + + /** + * 删除表 + * @param tableName + * @param user + * @return + * @throws ErrorException + */ + boolean dropTable(String tableName, String user) throws ErrorException; + + + /** + * 创建表 + * @param current + * @param user + * @return + * @throws ErrorException + */ + CreateTableDTO createTable(DssDatamodelTable current, String user) throws ErrorException; + + + /** + * 查看是否物化 + * @param tableName + * @param version + * @return + * @throws ErrorException + */ + boolean isMaterialized(String tableName, String version) throws ErrorException; + + + /** + * 根据表名查询查询资产 + * @param tableName + * @return + * @throws ErrorException + */ + Optional getHiveTblSimpleInfoByName(String tableName, String user)throws ErrorException; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableService.java new file mode 100644 index 000000000..ef3b0235c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableService.java @@ -0,0 +1,267 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.dto.TableQueryDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.vo.*; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; + +public interface TableService extends IService { + + /** + * 新增表 + * @param vo + * @return + */ + Long addTable(TableAddVO vo) throws ErrorException; + + + /** + * 更新 + * + * @param id + * @param vo + * @return + * @throws ErrorException + */ + int updateTable(Long id, TableUpdateVO vo) throws ErrorException; + + + /** + * 按表名搜索 + * @param vo + * @return + */ + TableQueryDTO queryByName(TableQueryOneVO vo)throws ErrorException; + + + /** + * 按id搜索 + * @param id + * @return + */ + TableQueryDTO queryById(Long id)throws ErrorException; + + + /** + * 新增版本 + * @param id + * @return + * @throws ErrorException + */ + Integer addTableVersion(Long id, TableVersionAddVO vo) throws ErrorException; + + /** + * 版本回退 + * @param vo + * @return + * @throws ErrorException + */ + Integer versionRollBack(TableVersionRollBackVO vo) throws ErrorException; + + + /** + * 查询历史版本列表 + * @param vo + * @return + */ + Message listTableVersions(TableVersionQueryVO vo); + + + /** + * 添加我的收藏 + * @param vo + * @return + */ + Integer tableCollect(TableCollectVO vo) throws ErrorException; + + /** + * 取消收藏 + * @param vo + * @return + * @throws ErrorException + */ + Integer tableCancel(TableCollectCancelVO vo) throws ErrorException; + + /** + * 基于收藏搜索 + * @param vo + * @return + * @throws ErrorException + */ + Message tableCollections(TableCollectQueryVO vo) throws ErrorException; + + /** + * + * @param vo + * @return + * @throws ErrorException + */ + Message dictionaryList(TableDictionaryListVO vo); + + + /** + * 增加字段 + * @param vo + * @return + */ + Integer addTableColumn(TableColumnsAddVO vo) throws ErrorException; + + + /** + * 字段绑定模型信息 + * @param columnId + * @param vo + * @return + */ + Integer tableColumnBind(Long columnId, TableColumnBindVO vo)throws ErrorException; + + + /** + * 执行建表 + * @param vo + * @return + * @throws ErrorException + */ + Integer tableCreate(TableCreateVO vo) throws ErrorException; + + + + /** + * 生成建表语句 + * @param vo + * @return + * @throws ErrorException + */ + String tableCreateSql(TableCreateSqlVO vo) throws ErrorException; + + + /** + * table 列表 + * @param vo + * @return + * @throws ErrorException + */ + Message list(TableListVO vo); + + + /** + * 分区统计信息 + * @param vo + * @return + */ + Message listTablePartitionStats(TblPartitionStatsVO vo); + + + /** + * 库列表 + * @return + * @param vo + */ + Message listDataBases(TableDatabasesQueryVO vo); + + + /** + * 数据预览 + * @param vo + * @return + */ + Message previewData(TableDataPreviewVO vo) throws ErrorException; + + + /** + * 检测表状态 + * @param vo + * @return + */ + Integer tableCheckData(TableCheckDataVO vo) throws ErrorException; + + + /** + * 主题引用情况 + * @param name + * @return + */ + int tableThemeReferenceCount(String name); + + /** + * 分层引用情况 + * @param name + * @return + */ + int tableLayerReferenceCount(String name); + + + /** + * 周期引用情况 + * @param name + * @return + */ + int tableCycleReferenceCount(String name); + + + /** + * 修饰词引用情况 + * @param name + * @return + */ + int tableModifierReferenceCount(String name); + + + /** + * 维度引用情况 + * @param name + * @return + */ + int tableDimensionReferenceCount(String name); + + + /** + * 度量引用情况 + * @param name + * @return + */ + int tableMeasureReferenceCount(String name); + + + /** + * 指标引用情况 + * @param name + * @return + */ + int tableIndicatorReferenceCount(String name); + + /** + * 主动绑定模型 + * @param id + * @param user + */ + void bind(long id, String user) throws ErrorException; + + + /** + * 主动绑定模型 + * @param id + * + */ + void tryBind(long id) throws ErrorException; + + + /** + * 删除逻辑表 + * @param id + * @return + * @throws ErrorException + */ + int deleteTable(Long id) throws ErrorException; + + + /** + * 标签引用情况 + * @param name + * @return + */ + int tableLabelReferenceCount(String name); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableStatsService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableStatsService.java new file mode 100644 index 000000000..9c211b3d5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableStatsService.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableStats; + +public interface TableStatsService extends IService { + + /** + * 搜索指定版本表指定版本统计信息 + * @param tableName + * @return + */ + DssDatamodelTableStats queryByTableName(String tableName); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableVersionService.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableVersionService.java new file mode 100644 index 000000000..c30dc28af --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/TableVersionService.java @@ -0,0 +1,61 @@ +package com.webank.wedatasphere.dss.datamodel.table.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableVersion; + +import java.util.List; + + +public interface TableVersionService extends IService { + + /** + * 根据表名称查找最大版本 + * @param name + * @return + */ + String findLastVersion(String name); + + + /** + * 增加新版本 + * @param orgVersion + * @param orgColumns + * @return + */ + Long addOlderVersion(DssDatamodelTable orgVersion, List orgColumns); + + + + /** + * 查询指定版本 + * @param name + * @param version + * @return + */ + DssDatamodelTableVersion findBackup(String name,String version); + + + /** + * 表内容引用情况 + * @param content + * @return + */ + List tableContentReference(String content); + + + /** + * 字段内容引用情况 + * @param content + * @return + */ + List tableColumnsReference(String content); + + + /** + * 表多重引用 + * @return + */ + List tableContentMultipleReference(String content); +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseLabelReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseLabelReferenceServiceImpl.java new file mode 100644 index 000000000..0f6eb76cd --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseLabelReferenceServiceImpl.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseLabelReferenceService; +import com.webank.wedatasphere.dss.datamodel.table.service.LabelService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseLabelReferenceServiceImpl implements DataWarehouseLabelReferenceService { + + @Resource + private LabelService labelService; + + @Override + public int labelThemeReferenceCount(String name) { + return labelService.labelThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseReferenceServiceImpl.java new file mode 100644 index 000000000..ada807939 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseReferenceServiceImpl.java @@ -0,0 +1,50 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.webank.wedatasphere.dss.datamodel.center.common.service.*; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseReferenceServiceImpl implements DataWarehouseReferenceService { + + @Resource + private DataWarehouseTableReferenceService tableReferenceService; + + @Resource + private DataWarehouseIndicatorReferenceService indicatorReferenceService; + + @Resource + private DataWarehouseMeasuredReferenceService measuredReferenceService; + + @Resource + private DataWarehouseDimensionReferenceService dimensionReferenceService; + + @Resource + private DataWarehouseLabelReferenceService labelReferenceService; + + @Override + public int cycleReferenceCount(String name) { + return tableReferenceService.tableCycleReferenceCount(name) + indicatorReferenceService.indicatorCycleReferenceCount(name); + } + + @Override + public int layerReferenceCount(String name) { + return tableReferenceService.tableLayerReferenceCount(name) + indicatorReferenceService.indicatorLayerReferenceCount(name); + } + + @Override + public int modifierReferenceCount(String name) { + return tableReferenceService.tableModifierReferenceCount(name) + indicatorReferenceService.indicatorModifierReferenceCount(name); + } + + @Override + public int themeReferenceCount(String name) { + return tableReferenceService.tableThemeReferenceCount(name) + + indicatorReferenceService.indicatorThemeReferenceCount(name) + + dimensionReferenceService.dimensionThemeReferenceCount(name) + + measuredReferenceService.measureThemeReferenceCount(name) + + labelReferenceService.labelThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseTableReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseTableReferenceServiceImpl.java new file mode 100644 index 000000000..2d6bd5d18 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DataWarehouseTableReferenceServiceImpl.java @@ -0,0 +1,34 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DataWarehouseTableReferenceService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DataWarehouseTableReferenceServiceImpl implements DataWarehouseTableReferenceService { + + @Resource + private TableService tableService; + + @Override + public int tableLayerReferenceCount(String name) { + return tableService.tableLayerReferenceCount(name); + } + + @Override + public int tableModifierReferenceCount(String name) { + return tableService.tableModifierReferenceCount(name); + } + + @Override + public int tableThemeReferenceCount(String name) { + return tableService.tableThemeReferenceCount(name); + } + + @Override + public int tableCycleReferenceCount(String name) { + return tableService.tableCycleReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DatamodelTableReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DatamodelTableReferenceServiceImpl.java new file mode 100644 index 000000000..6ae88cb74 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/DatamodelTableReferenceServiceImpl.java @@ -0,0 +1,35 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelTableReferenceService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class DatamodelTableReferenceServiceImpl implements DatamodelTableReferenceService { + + @Resource + private TableService tableService; + + @Override + public int tableDimensionReferenceCount(String name) { + return tableService.tableDimensionReferenceCount(name); + } + + @Override + public int tableIndicatorReferenceCount(String name) { + return tableService.tableIndicatorReferenceCount(name); + } + + @Override + public int tableMeasuredReferenceService(String name) { + return tableService.tableMeasureReferenceCount(name); + } + + @Override + public int tableLabelReferenceCount(String name) { + return tableService.tableLabelReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/LabelServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/LabelServiceImpl.java new file mode 100644 index 000000000..dc55e5b22 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/LabelServiceImpl.java @@ -0,0 +1,203 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.gson.Gson; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.event.CreateLabelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.DeleteLabelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.event.UpdateLabelEvent; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.service.AssertsSyncService; +import com.webank.wedatasphere.dss.datamodel.center.common.service.DatamodelReferencService; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelLabelMapper; +import com.webank.wedatasphere.dss.datamodel.table.dto.LabelQueryDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelLabel; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.service.LabelService; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelAddVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelEnableVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelUpdateVO; +import com.webank.wedatasphere.dss.datamodel.table.vo.LabelsQueryVO; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.stream.Collectors; + +@Service +public class LabelServiceImpl extends ServiceImpl implements LabelService { + + private static final Logger LOGGER = LoggerFactory.getLogger(LabelServiceImpl.class); + + private final Gson gson = new Gson(); + + @Resource + private DatamodelReferencService datamodelReferencService; + + @Resource + private ModelMapper modelMapper; + + @Resource + private AssertsSyncService assertsSyncService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long add(LabelAddVO vo) throws ErrorException { + if (getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelLabel::getName, vo.getName()) + .or().eq(DssDatamodelLabel::getFieldIdentifier,vo.getFieldIdentifier())) > 0) { + LOGGER.error("errorCode : {}, label name or field identifier can not repeat, name : {}", ErrorCode.LABEL_ADD_ERROR.getCode(), vo.getName()); + throw new DSSDatamodelCenterException(ErrorCode.LABEL_ADD_ERROR.getCode(), "label name or field identifier can not repeat"); + } + + if (datamodelReferencService.labelReferenceCount(vo.getName())>0 + ||datamodelReferencService.labelReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, label name can not be referenced", ErrorCode.DIMENSION_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_ADD_ERROR.getCode(), "label name can not be referenced"); + } + + + DssDatamodelLabel newOne = modelMapper.map(vo,DssDatamodelLabel.class); + newOne.setParams(gson.toJson(vo.getParamMap())); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + + getBaseMapper().insert(newOne); + + //todo 同步资产创建标签 + assertsSyncService.syncCreateLabel(new CreateLabelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getName())); + + return newOne.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int enable(Long id, LabelEnableVO vo) throws ErrorException { + DssDatamodelLabel enableOne = new DssDatamodelLabel(); + enableOne.setIsAvailable(vo.getIsAvailable()); + enableOne.setUpdateTime(new Date()); + return getBaseMapper().update(enableOne, Wrappers.lambdaUpdate().eq(DssDatamodelLabel::getId,id)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int update(Long id , LabelUpdateVO vo) throws ErrorException { + DssDatamodelLabel ori = getBaseMapper().selectById(id); + if (ori == null) { + LOGGER.error("errorCode : {}, update label error not exists", ErrorCode.LABEL_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.LABEL_UPDATE_ERROR.getCode(), "update label error not exists"); + } + + if (datamodelReferencService.labelReferenceCount(ori.getName())>0 + ||datamodelReferencService.labelReferenceCount(ori.getFieldIdentifier())>0 + ||datamodelReferencService.labelReferenceCount(vo.getName())>0 + ||datamodelReferencService.labelReferenceCount(vo.getFieldIdentifier())>0){ + LOGGER.error("errorCode : {}, label name can not referenced", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "label name can not referenced"); + } + + //当更新名称时 + if (!StringUtils.equals(vo.getName(), ori.getName())) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelLabel::getName, vo.getName())); + if (repeat > 0) { + LOGGER.error("errorCode : {}, label name can not repeat ", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "label name can not repeat "); + } + } + + String orgFieldIdentifier = ori.getFieldIdentifier(); + //当更新标识时 + if (!StringUtils.equals(vo.getFieldIdentifier(), orgFieldIdentifier)) { + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelLabel::getFieldIdentifier, vo.getFieldIdentifier())); + if (repeat > 0) { + LOGGER.error("errorCode : {}, label field identifier can not repeat", ErrorCode.DIMENSION_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.DIMENSION_UPDATE_ERROR.getCode(), "label field identifier can not repeat "); + } + } + + DssDatamodelLabel updateOne = modelMapper.map(vo,DssDatamodelLabel.class); + updateOne.setParams(gson.toJson(vo.getParamMap())); + updateOne.setUpdateTime(new Date()); + getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelLabel::getId,id)); + + //todo 同步资产 + assertsSyncService.syncUpdateLabel(new UpdateLabelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , vo.getName(),ori.getName())); + return 1; + } + + @Override + public LabelQueryDTO query(Long id) throws ErrorException { + DssDatamodelLabel dssDatamodelLabel = getBaseMapper().selectById(id); + if (dssDatamodelLabel == null){ + throw new DSSDatamodelCenterException(ErrorCode.LABEL_QUERY_ERROR.getCode(), "label id " +id +" not exists"); + } + LabelQueryDTO dto = modelMapper.map(dssDatamodelLabel,LabelQueryDTO.class); + dto.setRefCount(datamodelReferencService.labelReferenceCount(dssDatamodelLabel.getName())); + return dto; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int delete(Long id) throws ErrorException { + DssDatamodelLabel dssDatamodelLabel = getBaseMapper().selectById(id); + if (dssDatamodelLabel == null){ + throw new DSSDatamodelCenterException(ErrorCode.LABEL_DELETE_ERROR.getCode(), "label id " +id +" not exists"); + } + + //校验引用情况 + if(datamodelReferencService.labelReferenceCount(dssDatamodelLabel.getName())>0||datamodelReferencService.labelReferenceCount(dssDatamodelLabel.getFieldIdentifier())>0){ + throw new DSSDatamodelCenterException(ErrorCode.LABEL_DELETE_ERROR.getCode(), "label id " +id +" has referenced"); + } + + getBaseMapper().deleteById(id); + + //todo 同步资产 + assertsSyncService.syncDeleteLabel(new DeleteLabelEvent(this + , DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + , dssDatamodelLabel.getName())); + return 1; + } + + @Override + public Message list(LabelsQueryVO vo) throws ErrorException { + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList(Wrappers.lambdaQuery() + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), DssDatamodelLabel::getWarehouseThemeName, vo.getWarehouseThemeName()) + .eq(vo.getIsAvailable()!=null,DssDatamodelLabel::getIsAvailable,vo.getIsAvailable()) + .eq(StringUtils.isNotBlank(vo.getOwner()),DssDatamodelLabel::getOwner,vo.getOwner()) + .like(StringUtils.isNotBlank(vo.getName()), DssDatamodelLabel::getName, vo.getName()))); + return Message.ok() + .data("list",pageInfo + .getList() + .stream() + .map(dssDatamodelLabel ->{ + LabelQueryDTO dto = modelMapper.map(dssDatamodelLabel, LabelQueryDTO.class); + dto.setRefCount(datamodelReferencService.labelReferenceCount(dssDatamodelLabel.getName())); + return dto; + }) + .collect(Collectors.toList())) + .data("total",pageInfo.getTotal()); + } + + @Override + public int labelThemeReferenceCount(String themeName) { + int count = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelLabel::getWarehouseThemeName,themeName)); + int countEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelLabel::getWarehouseThemeNameEn,themeName)); + return count + countEn; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableCollectServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableCollectServiceImpl.java new file mode 100644 index 000000000..5f94f4b61 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableCollectServiceImpl.java @@ -0,0 +1,70 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableCollcetionMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableCollcetion; +import com.webank.wedatasphere.dss.datamodel.table.service.TableCollectService; +import com.webank.wedatasphere.dss.datamodel.table.vo.TableCollectVO; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; + +@Service +public class TableCollectServiceImpl extends ServiceImpl implements TableCollectService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableCollectServiceImpl.class); + + @Resource + private ModelMapper modelMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCollect(String user, DssDatamodelTable targetTable) { + cancelOlder(user,targetTable.getName()); + DssDatamodelTableCollcetion newCollect = modelMapper.map(targetTable, DssDatamodelTableCollcetion.class); + newCollect.setCreateTime(new Date()); + newCollect.setUpdateTime(new Date()); + newCollect.setUser(user); + getBaseMapper().insert(newCollect); + return 1; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCollect(TableCollectVO vo) { + cancelOlder(vo.getUser(),vo.getName()); + DssDatamodelTableCollcetion newOne = modelMapper.map(vo, DssDatamodelTableCollcetion.class); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + getBaseMapper().insert(newOne); + return 1; + } + + private Integer cancelOlder(String user, String tableName) { + DssDatamodelTableCollcetion olderCollection = getBaseMapper().selectOne(Wrappers.lambdaQuery() + .eq(DssDatamodelTableCollcetion::getName, tableName) + .eq(DssDatamodelTableCollcetion::getUser, user)); + + //如果已经收藏过该表则删除原有收藏,方便以后新增收藏 + if (olderCollection != null&&olderCollection.getId()!=null) { + return getBaseMapper().deleteById(olderCollection.getId()); + } + return 0; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCollectCancel(String user, String tableName) { + return cancelOlder(user, tableName); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableColumnsServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableColumnsServiceImpl.java new file mode 100644 index 000000000..e37b4b690 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableColumnsServiceImpl.java @@ -0,0 +1,91 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ModeType; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableColumnsMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import com.webank.wedatasphere.dss.datamodel.table.service.TableColumnsService; +import org.apache.linkis.common.exception.ErrorException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + + +@Service +public class TableColumnsServiceImpl extends ServiceImpl implements TableColumnsService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableColumnsServiceImpl.class); + + @Override + @Transactional(rollbackFor = Exception.class) + public int batchInsert(Long tableId,List columnsList) throws ErrorException { + for (DssDatamodelTableColumns newOne : columnsList){ + newOne.setTableId(tableId); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + getBaseMapper().insert(newOne); + } + return 1; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int batchUpdate(Long tableId, List columnsList) throws ErrorException { + getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelTableColumns::getTableId, tableId)); + return batchInsert(tableId,columnsList); + } + + + @Override + public List listByTableId(Long tableId) { + return getBaseMapper().selectList(Wrappers.lambdaQuery().eq(DssDatamodelTableColumns::getTableId,tableId)); + } + + + @Override + public Integer deleteByTableId(Long tableId) throws ErrorException { + return getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelTableColumns::getTableId,tableId)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer addColumn(DssDatamodelTableColumns column) { + column.setCreateTime(new Date()); + column.setUpdateTime(new Date()); + return getBaseMapper().insert(column); + } + + + @Override + public Integer tableColumnBind(Long id, Integer modelType, String modelName,String modelNameEn) throws ErrorException{ + DssDatamodelTableColumns updateOne = new DssDatamodelTableColumns(); + updateOne.setModelType(modelType); + updateOne.setModelName(modelName); + updateOne.setModelNameEn(modelNameEn); + updateOne.setUpdateTime(new Date()); + return getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelTableColumns::getId,id)); + } + + + @Override + public int modelReferenceCount(ModeType modeType, String name) { + return getBaseMapper().selectCount( + Wrappers.lambdaQuery() + .eq(DssDatamodelTableColumns::getModelType, modeType.getType()) + .eq(DssDatamodelTableColumns::getModelName, name)); + } + + @Override + public int modelReferenceCountEn(ModeType modeType, String name) { + return getBaseMapper().selectCount( + Wrappers.lambdaQuery() + .eq(DssDatamodelTableColumns::getModelType, modeType.getType()) + .eq(DssDatamodelTableColumns::getModelNameEn, name)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableDictionaryServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableDictionaryServiceImpl.java new file mode 100644 index 000000000..7f5e3be8d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableDictionaryServiceImpl.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelDictionaryMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelDictionary; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableCollcetion; +import com.webank.wedatasphere.dss.datamodel.table.service.TableDictionaryService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TableDictionaryServiceImpl extends ServiceImpl implements TableDictionaryService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableColumnsServiceImpl.class); + + @Override + public List listByType(String type) { + return getBaseMapper().selectList(Wrappers.lambdaQuery().eq(StringUtils.isNotBlank(type),DssDatamodelDictionary::getType,type)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableMaterializedHistoryServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableMaterializedHistoryServiceImpl.java new file mode 100644 index 000000000..03f825650 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableMaterializedHistoryServiceImpl.java @@ -0,0 +1,261 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.webank.wedatasphere.dss.data.governance.entity.QueryType; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.HiveTblSizeAction; +import com.webank.wedatasphere.dss.data.governance.request.SearchHiveTblAction; +import com.webank.wedatasphere.dss.data.governance.response.SearchHiveTblResult; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ColumnType; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.TabelExternalType; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.dto.CreateTableDTO; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.launcher.*; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher.CreateTableDataModelUJESJobLauncher; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher.DataExistsDataModelUJESJobLauncher; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher.DropTableDataModelUJESJobLauncher; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.CreateTableDataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataExistsDataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DropTableDataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableMaterializedHistoryMapper; +import com.webank.wedatasphere.dss.datamodel.table.dto.HiveTblSimpleInfoDTO; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableMaterializedHistory; +import com.webank.wedatasphere.dss.datamodel.table.materialized.HiveSchemaDdlBuilder; +import com.webank.wedatasphere.dss.datamodel.table.service.TableColumnsService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableMaterializedHistoryService; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.computation.client.interactive.SubmittableInteractiveJob; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +@Service +public class TableMaterializedHistoryServiceImpl extends ServiceImpl implements TableMaterializedHistoryService{ + + private static final Logger LOGGER = LoggerFactory.getLogger(TableMaterializedHistoryServiceImpl.class); + + @Resource + private ModelMapper modelMapper; + + @Resource + private TableColumnsService tableColumnsService; + + @Resource + private LinkisDataAssetsRemoteClient linkisDataAssetsRemoteClient; + + @Resource + private DataExistsDataModelUJESJobLauncher dataExistsDataModelUJESJobLauncher; + + @Resource + private DropTableDataModelUJESJobLauncher dropTableDataModelUJESJobLauncher; + + @Resource + private CreateTableDataModelUJESJobLauncher createTableDataModelUJESJobLauncher; + + private final Gson assertsGson = new GsonBuilder().setDateFormat("yyyy MM-dd HH:mm:ss").create(); + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer materializedTable(DssDatamodelTable current, String user) throws ErrorException { + + //判断是否有数据 + checkData(current, user); + //不存在数据删除表 + dropTable(current.getName(),user); + + CreateTableDTO dto = createTable(current, user); + + //创建表 +// SubmittableInteractiveJob job = linkisCreateTable(current, sql); +// +// if (!job.isSucceed()) { +// LOGGER.error("errorCode : {}, table id : {} create table error job : {}, sql : {}", ErrorCode.TABLE_CREATE_ERROR.getCode(), current.getId(), job.getId(), sql); +// //throw new DSSDatamodelCenterException(ErrorCode.TABLE_CREATE_ERROR.getCode(), " table id : " + current.getId() + " create table error job : " + job.getId() + ", sql : " + sql); +// } + + + DssDatamodelTableMaterializedHistory newOne = modelMapper.map(current, DssDatamodelTableMaterializedHistory.class); + newOne.setId(null); + newOne.setMaterializedCode(dto.getSql()); + newOne.setCreateTime(new Date()); + newOne.setStatus(dto.getStatus() == 0 ? 0 : 1);// + newOne.setLastUpdateTime(new Date()); + newOne.setReason("reason"); + newOne.setTaskId(dto.getTaskId()); + newOne.setTablename(current.getName()); + getBaseMapper().insert(newOne); + return 1; + } + + public void checkData(DssDatamodelTable current, String user) throws ErrorException { + //linkisJobCheck(current); + //如果表存在且存在数据 + if (hasData(current.getName(), user)) { + LOGGER.error("errorCode : {}, table id : {} has data", ErrorCode.TABLE_CHECK_ERROR.getCode(), current.getId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_CHECK_ERROR.getCode(), " table id : " + current.getId() + " has data"); + } + } + + @Override + public boolean hasData(String tableName, String user) { +// DataModelUJESJobTask dataModelUJESJobTask = DataExistsDataModelUJESJobTask.newBuilder().user(user).code(tableName).build(); +// return dataExistsDataModelUJESJobLauncher.launch(dataModelUJESJobTask); + String tblName = StringUtils.substringAfter(tableName,"."); + String dbName = StringUtils.substringBefore(tableName,"."); + return linkisDataAssetsRemoteClient. + searchHiveTblSize(HiveTblSizeAction.builder().setUser(user).setDbName(dbName).setTableName(tblName).build()) + .getResult() >0 ; + } + + @Override + public boolean tableExists(String tableName, String user) throws ErrorException { + SearchHiveTblResult result = linkisDataAssetsRemoteClient.searchHiveTbl(SearchHiveTblAction.builder().setUser(user).setQuery(tableName).setPrecise(QueryType.PRECISE).setOffset(0).setLimit(30).build()); + List dtos = assertsGson.fromJson(assertsGson.toJson(result.getResult()), new TypeToken>() { + }.getType()); + if (CollectionUtils.isEmpty(dtos)){ + return false; + } + for(HiveTblSimpleInfoDTO dto : dtos){ + if (StringUtils.equals(StringUtils.substringBeforeLast(dto.getQualifiedName(),"@"),tableName)){ + return true; + } + } + return false; + } + + + @Override + public boolean dropTable(String tableName, String user) throws ErrorException { +// if(!tableExists(tableName)){ +// return true; +// } + DataModelUJESJobTask dataModelUJESJobTask = DropTableDataModelUJESJobTask.newBuilder().user(user).code(tableName).build(); + return dropTableDataModelUJESJobLauncher.launch(dataModelUJESJobTask); + } + + @Override + public CreateTableDTO createTable(DssDatamodelTable current, String user) throws ErrorException { + String sql = buildSql(current); + LOGGER.info("table id : {}, sql : {}", current.getId(), sql); + DataModelUJESJobTask dataModelUJESJobTask = CreateTableDataModelUJESJobTask.newBuilder().user(user).code(sql).build(); + CreateTableDTO createTableDTO = createTableDataModelUJESJobLauncher.launch(dataModelUJESJobTask); + createTableDTO.setSql(sql); + return createTableDTO; + } + + private void linkisJobCheck(DssDatamodelTable current) throws DSSDatamodelCenterException { + //校验是否已数据 + DataModelJobTaskBuilder dataModELJobTaskBuilder = new DataModelJobTaskBuilder(); + DataModelJobTask task = dataModELJobTaskBuilder.withDataExistsExchangisJobTask() + .code(current.getName()) + .creator("hdfs") + .executeUser("hdfs") + .engineType("hive-2.3.3") + .runType("hql") + .build(); + DataExistsDataModelJobLauncher launcher = new DataExistsDataModelJobLauncher(); + Integer result = launcher.launch(task); + if (result > 0) { + LOGGER.error("errorCode : {}, table id : {} has data", ErrorCode.TABLE_CREATE_ERROR.getCode(), current.getId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_CREATE_ERROR.getCode(), " table id : " + current.getId() + " has data"); + } + } + + private SubmittableInteractiveJob linkisCreateTable(DssDatamodelTable current, String sql) { + DataModelJobTaskBuilder dataModELJobTaskBuilder = new DataModelJobTaskBuilder(); + DataModelJobTask commonTask = dataModELJobTaskBuilder.withCommonExchangisJobTask() + .code(sql) + .creator("hdfs") + .executeUser("hdfs") + .engineType("hive-2.3.3") + .runType("hql") + .build(); + CommonDataModelJobLauncher commonExchangisJobLauncher = new CommonDataModelJobLauncher(); + return commonExchangisJobLauncher.launch(commonTask); + } + + private void linkisDropTable(DssDatamodelTable current) { + DataModelJobTaskBuilder dataModELJobTaskBuilder = new DataModelJobTaskBuilder(); + DataModelJobTask commonTask = dataModELJobTaskBuilder.withCommonExchangisJobTask() + .code(String.format("drop table if exists %s", current.getName())) + .creator("hdfs") + .executeUser("hdfs") + .engineType("hive-2.3.3") + .runType("hql") + .build(); + CommonDataModelJobLauncher commonExchangisJobLauncher = new CommonDataModelJobLauncher(); + commonExchangisJobLauncher.launch(commonTask); + } + + private String buildSql(DssDatamodelTable current) { + List columns = tableColumnsService.list(Wrappers.lambdaQuery().eq(DssDatamodelTableColumns::getTableId, current.getId())); + HiveSchemaDdlBuilder builder = new HiveSchemaDdlBuilder(); + builder.tableName(current.getName()); + if (StringUtils.isNotBlank(current.getComment())) { + builder.comment(current.getComment()); + } + if (Objects.equals(current.getIsExternal(), TabelExternalType.EXTERNAL.getCode())) { + builder.withExternal(); + } + if (StringUtils.isNotBlank(current.getLocation())) { + builder.location(current.getLocation()); + } + columns.forEach(column -> { + builder.addColumn(column.getName(), column.getType(), ColumnType.PARTITION_KEY.getCode().equals(column.getIsPartitionField()), column.getComment()); + }); + builder.storedType(current.getFileType()); + return builder.createTableString(); + } + + @Override + public String generateSql(DssDatamodelTable current) { + return buildSql(current); + } + + + @Override + public boolean isMaterialized(String tableName, String version) throws ErrorException { + return tableExists(tableName, DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser()); + +// return getBaseMapper().selectCount(Wrappers.lambdaQuery() +// .eq(DssDatamodelTableMaterializedHistory::getTablename, tableName) +// .eq(DssDatamodelTableMaterializedHistory::getVersion, version) +// .eq(DssDatamodelTableMaterializedHistory::getStatus, 0)) > 0 && tableExists(tableName, DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser()); + } + + @Override + public Optional getHiveTblSimpleInfoByName(String tableName, String user) throws ErrorException { + + SearchHiveTblResult result = linkisDataAssetsRemoteClient.searchHiveTbl(SearchHiveTblAction.builder().setPrecise(QueryType.PRECISE).setUser(user).setQuery(tableName).setOffset(0).setLimit(1).build()); + List dtos = assertsGson.fromJson(assertsGson.toJson(result.getResult()), new TypeToken>() { + }.getType()); + if (CollectionUtils.isEmpty(dtos)){ + return Optional.empty(); + } + for(HiveTblSimpleInfoDTO dto : dtos){ + if (StringUtils.equals(StringUtils.substringBeforeLast(dto.getQualifiedName(),"@"),tableName)){ + return Optional.of(dto); + } + } + return Optional.empty(); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableServiceImpl.java new file mode 100644 index 000000000..88689e734 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableServiceImpl.java @@ -0,0 +1,836 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.entity.QueryType; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.*; +import com.webank.wedatasphere.dss.data.governance.response.*; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ErrorCode; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.LabelConstant; +import com.webank.wedatasphere.dss.datamodel.center.common.constant.ModeType; +import com.webank.wedatasphere.dss.datamodel.center.common.context.DataModelSecurityContextHolder; +import com.webank.wedatasphere.dss.datamodel.center.common.dto.PreviewDataDTO; +import com.webank.wedatasphere.dss.datamodel.center.common.exception.DSSDatamodelCenterException; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.DataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.launcher.PreviewDataModelUJESJobLauncher; +import com.webank.wedatasphere.dss.datamodel.center.common.ujes.task.PreviewDataModelUJESJobTask; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableMapper; +import com.webank.wedatasphere.dss.datamodel.table.dao.TableQueryMapper; +import com.webank.wedatasphere.dss.datamodel.table.dto.*; +import com.webank.wedatasphere.dss.datamodel.table.entity.*; +import com.webank.wedatasphere.dss.datamodel.table.event.*; +import com.webank.wedatasphere.dss.datamodel.table.service.*; +import com.webank.wedatasphere.dss.datamodel.table.vo.*; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import org.apache.linkis.ujes.client.exception.UJESJobException; +import org.apache.commons.lang3.StringUtils; +import org.modelmapper.ModelMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +@Service +public class TableServiceImpl extends ServiceImpl implements TableService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableServiceImpl.class); + + @Resource + private TableColumnsService tableColumnsService; + + @Resource + private TableVersionService tableVersionService; + + @Resource + private TableStatsService tableStatsService; + + @Resource + private ModelMapper modelMapper; + + @Resource + private TableCollectService tableCollectService; + + @Resource + private TableDictionaryService tableDictionaryService; + + @Resource + private TableMaterializedHistoryService tableMaterializedHistoryService; + + @Resource + private LinkisDataAssetsRemoteClient linkisDataAssetsRemoteClient; + + @Resource + private PreviewDataModelUJESJobLauncher previewDataModelUJESJobLauncher; + + @Resource + private TableQueryMapper tableQueryMapper; + + private Gson gson = new Gson(); + + @Resource + private ApplicationEventPublisher publisher; + + private final Gson assertsGson = new GsonBuilder().setDateFormat("yyyy MM-dd HH:mm:ss").create(); + + @Override + @Transactional(rollbackFor = Exception.class) + public Long addTable(TableAddVO vo) throws ErrorException { + + int sameCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getName, vo.getName())); + if (sameCount > 0) { + LOGGER.error("errorCode : {}, table name can not repeat, name : {}", ErrorCode.TABLE_ADD_ERROR.getCode(), vo.getName()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_ADD_ERROR.getCode(), "table name can not repeat"); + } + + DssDatamodelTable newOne = modelMapper.map(vo, DssDatamodelTable.class); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + newOne.setVersion("1"); + getBaseMapper().insert(newOne); + + Long tableId = newOne.getId(); + List columns = addColumns(tableId, vo.getColumns()); + + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + + //发布表绑定模型事件 + publisher.publishEvent(new BindModelByTableEvent(this, user, newOne)); + publisher.publishEvent(new BindModelByColumnsEvent(this, user, newOne.getName(), columns)); + + //发布绑定标签事件 + publisher.publishEvent(new BindLabelByTableEvent(this, user, newOne)); + + return newOne.getId(); + } + + + private List addColumns(Long tableId, List columnVOs) throws ErrorException { + List columns = Lists.newArrayList(); + for (TableColumnVO columnVO : columnVOs) { + DssDatamodelTableColumns newColumn = modelMapper.map(columnVO, DssDatamodelTableColumns.class); + columns.add(newColumn); + } + + tableColumnsService.batchInsert(tableId, columns); + return columns; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateTable(Long id, TableUpdateVO vo) throws ErrorException { + + DssDatamodelTable org = getBaseMapper().selectById(id); + if (org == null) { + LOGGER.error("errorCode : {}, update table error not exists", ErrorCode.TABLE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_UPDATE_ERROR.getCode(), "update table error not exists"); + } + + //判断数据表是否有数据 + tableMaterializedHistoryService.checkData(org, vo.getCreator()); + + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + + //当更新表名称时,存在其他名称同名或者当前名称已经存在版本信息,则不允许修改指标名称 + if (!StringUtils.equals(vo.getName(), org.getName())) { + //表如果已经物化不能修改名称 + if (tableMaterializedHistoryService.tableExists(org.getName(), user)) { + LOGGER.error("errorCode : {}, table name can not change as table has materialized", ErrorCode.TABLE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_UPDATE_ERROR.getCode(), "table name can not change as table has materialized"); + } + int repeat = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getName, vo.getName())); + String lastVersion = tableVersionService.findLastVersion(org.getName()); + if (repeat > 0 || StringUtils.isNotBlank(lastVersion)) { + LOGGER.error("errorCode : {}, table name can not repeat or has version", ErrorCode.TABLE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_UPDATE_ERROR.getCode(), "table name can not repeat or has version"); + } + } + + Long orgId = org.getId(); + String version = org.getVersion(); + List orgColumns = tableColumnsService.listByTableId(id); + + DssDatamodelTable updateOne = modelMapper.map(vo, DssDatamodelTable.class); + updateOne.setUpdateTime(new Date()); + int result = getBaseMapper().update(updateOne, Wrappers.lambdaUpdate().eq(DssDatamodelTable::getId, id)); + if (result != 1) { + LOGGER.error("errorCode : {}, update table error not exists", ErrorCode.TABLE_UPDATE_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_UPDATE_ERROR.getCode(), "update table error not exists"); + } + List newColumns = Lists.newArrayList(); + for (TableColumnVO columnVO : vo.getColumns()) { + DssDatamodelTableColumns newColumn = modelMapper.map(columnVO, DssDatamodelTableColumns.class); + newColumns.add(newColumn); + } + + tableColumnsService.batchUpdate(orgId, newColumns); + + + publisher.publishEvent(new UpdateBindModelByTableEvent(this, user, org, updateOne)); + publisher.publishEvent(new UpdateBindModelByColumnsEvent(this, user, org.getName(), orgColumns, newColumns)); + publisher.publishEvent(new UpdateBindLabelByTableEvent(this, user, org, updateOne)); + + return 1; + } + + + @Override + public TableQueryDTO queryByName(TableQueryOneVO vo) throws ErrorException { + DssDatamodelTable table = getBaseMapper().selectOne(Wrappers.lambdaQuery().eq(DssDatamodelTable::getName, vo.getName())); + //如果查询不到则查询资产 + if (table == null) { + //查资产 guid 086c5785-8bda-4756-8ba6-46f9c3d597f1 a3be4a97-6465-4c3d-adee-76dfa662e531 ef09c10a-e156-4d09-96af-af30eb3af26a + GetHiveTblBasicResult result = linkisDataAssetsRemoteClient.getHiveTblBasic(GetHiveTblBasicAction.builder().setUser(vo.getUser()).setGuid(vo.getGuid()).build()); + HiveTblDetailInfoDTO dto = assertsGson.fromJson(assertsGson.toJson(result.getResult()), HiveTblDetailInfoDTO.class); + HiveTblStatsResult hiveTblStatsResult = linkisDataAssetsRemoteClient.searchHiveTblStats(HiveTblStatsAction.builder().setUser(vo.getUser()).setGuid(vo.getGuid()).build()); + return TableQueryDTO.toTableStatsDTO(dto, hiveTblStatsResult.getInfo(), StringUtils.substringBefore(dto.getBasic().getQualifiedName(),"@")); + } + return queryTable(table); + } + + private TableQueryDTO queryTable(DssDatamodelTable table) throws ErrorException { + TableQueryDTO tableQueryDTO = modelMapper.map(table, TableQueryDTO.class); + + List columnQueryDTOS = tableColumnsService.listByTableId(table.getId()) + .stream().map(column -> modelMapper.map(column, TableColumnQueryDTO.class)).collect(Collectors.toList()); + tableQueryDTO.setColumns(columnQueryDTOS); + +// DssDatamodelTableStats tableStats = tableStatsService.queryByTableName(table.getName()); +// if (tableStats != null) { +// tableQueryDTO.setStats(modelMapper.map(tableStats, TableStatsDTO.class)); +// } + TableHeadlineDTO headlineDTO = new TableHeadlineDTO(); + headlineDTO.setStorageType(0); + headlineDTO.setTableType(0); + headlineDTO.setEntityType( + tableMaterializedHistoryService.isMaterialized(table.getName(), table.getVersion()) ? 1 : 0); + tableQueryDTO.setHeadline(headlineDTO); + + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + Integer collectionCount = tableCollectService.getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTableCollcetion::getName, table.getName())); + String dbName = StringUtils.substringBefore(table.getName(), "."); + String tblName = StringUtils.substringAfter(table.getName(), "."); + HiveTblStatsResult hiveTblStatsResult = linkisDataAssetsRemoteClient.searchHiveTblStats(HiveTblStatsAction.builder().setUser(user) + .setTableName(tblName) + .setDbName(dbName) + .build()); + tableQueryDTO.setStats(TableStatsDTO.from(hiveTblStatsResult.getInfo(), collectionCount)); + + tableQueryDTO.setLastAccessTime(tableMaterializedHistoryService.getHiveTblSimpleInfoByName(table.getName(),user).map(HiveTblSimpleInfoDTO::getLastAccessTime).orElse(null)); + + return tableQueryDTO; + } + + + @Override + public TableQueryDTO queryById(Long id) throws ErrorException { + DssDatamodelTable table = getBaseMapper().selectOne(Wrappers.lambdaQuery().eq(DssDatamodelTable::getId, id)); + if (table == null) { + LOGGER.error("errorCode : {}, table id : {} not exists", ErrorCode.TABLE_QUERY_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_QUERY_ERROR.getCode(), "table id " + id + " not exists"); + } + return queryTable(table); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer addTableVersion(Long id, TableVersionAddVO vo) throws ErrorException { + + //判断旧版本指标是否存在 + DssDatamodelTable orgVersion = getBaseMapper().selectById(id); + if (orgVersion == null) { + LOGGER.error("errorCode : {}, table id : {} not exists", ErrorCode.TABLE_VERSION_ADD_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_VERSION_ADD_ERROR.getCode(), "table id " + id + " not exists"); + } + + //判断旧版本是否有数据 + tableMaterializedHistoryService.checkData(orgVersion, vo.getCreator()); + //没有数据删除表 + //tableMaterializedHistoryService.dropTable(orgVersion.getName(),vo.getCreator()); + + String orgName = orgVersion.getName(); + String orgDatabase = orgVersion.getDataBase(); + String orgV = orgVersion.getVersion(); + String assignVersion = newVersion(orgName, orgV); + + //表名称和数据库不能改变 + if (!StringUtils.equals(orgName, vo.getName()) || !StringUtils.equals(orgDatabase, vo.getDataBase())) { + LOGGER.error("errorCode : {}, table name must be same", ErrorCode.TABLE_VERSION_ADD_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_VERSION_ADD_ERROR.getCode(), "table name must be same"); + } + + //查询字段信息 + List orgColumns = tableColumnsService.listByTableId(id); + + //备份旧版本 + tableVersionService.addOlderVersion(orgVersion, orgColumns); + + //删除旧版本 + getBaseMapper().deleteById(id); + tableColumnsService.deleteByTableId(id); + + DssDatamodelTable newOne = modelMapper.map(vo, DssDatamodelTable.class); + newOne.setVersion(assignVersion); + newOne.setCreateTime(new Date()); + newOne.setUpdateTime(new Date()); + getBaseMapper().insert(newOne); + + Long tableId = newOne.getId(); + List newColumns = addColumns(tableId, vo.getColumns()); + + //发布更新模型绑定事件 + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + publisher.publishEvent(new UpdateBindModelByTableEvent(this, user, orgVersion, newOne)); + publisher.publishEvent(new UpdateBindModelByColumnsEvent(this, user, orgVersion.getName(), orgColumns, newColumns)); + publisher.publishEvent(new UpdateBindLabelByTableEvent(this, user, orgVersion, newOne)); + return 1; + } + + private String newVersion(String orgName, String orgVersion) { + String lastVersion = tableVersionService.findLastVersion(orgName); + + return StringUtils.isBlank(lastVersion) ? + (Integer.parseInt(orgVersion) + 1 + "") : + (Integer.parseInt(lastVersion) > Integer.parseInt(orgVersion)) ? (Integer.parseInt(lastVersion) + 1 + "") : + (Integer.parseInt(orgVersion) + 1 + ""); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer versionRollBack(TableVersionRollBackVO vo) throws ErrorException { + + String name = vo.getName(); + String version = vo.getVersion(); + + //获取当前使用版本表 + DssDatamodelTable current = + getBaseMapper().selectOne(Wrappers.lambdaQuery().eq(DssDatamodelTable::getName, name)); + + //判断当前使用表 + if (current == null) { + LOGGER.error("errorCode : {}, current table not exists, name : {} version : {}", ErrorCode.TABLE_VERSION_ROLL_BACK_ERROR.getCode(), name, version); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_VERSION_ROLL_BACK_ERROR.getCode(), "current table not exists, name : " + name + " version : " + version); + } + + //判断当前版本是否有数据 + tableMaterializedHistoryService.checkData(current, vo.getUser()); + //没有数据删除表 + //tableMaterializedHistoryService.dropTable(current.getName(),vo.getUser()); + + //查询字段信息 + List currentColumns = tableColumnsService.listByTableId(current.getId()); + + //当前版本备份 + tableVersionService.addOlderVersion(current, currentColumns); + + //删除当前版本 + getBaseMapper().deleteById(current.getId()); + tableColumnsService.deleteByTableId(current.getId()); + + + //获取需要回退指标版本信息 + DssDatamodelTableVersion rollBackVersion = tableVersionService.findBackup(name, version); + if (rollBackVersion == null) { + LOGGER.error("errorCode : {}, table name : {} version : {}", ErrorCode.TABLE_VERSION_ROLL_BACK_ERROR.getCode(), name, version); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_VERSION_ROLL_BACK_ERROR.getCode(), "table name : " + name + " version : " + version + " not exist"); + } + + Long rollbackId = rollBackVersion.getId(); + + DssDatamodelTable rollbackOne = gson.fromJson(rollBackVersion.getTableParams(), DssDatamodelTable.class); + rollbackOne.setId(null); + getBaseMapper().insert(rollbackOne); + + List rollbackColumns = gson.fromJson(rollBackVersion.getColumns(), new TypeToken>() { + }.getType()); + rollbackColumns.forEach(columns -> columns.setId(null)); + tableColumnsService.batchInsert(rollbackOne.getId(), rollbackColumns); + tableVersionService.getBaseMapper().deleteById(rollbackId); + + + //发布更新模型绑定事件 + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + publisher.publishEvent(new UpdateBindModelByTableEvent(this, user, current, rollbackOne)); + publisher.publishEvent(new UpdateBindModelByColumnsEvent(this, user, current.getName(), currentColumns, rollbackColumns)); + publisher.publishEvent(new UpdateBindLabelByTableEvent(this, user, current, rollbackOne)); + + return 1; + } + + + @Override + public Message listTableVersions(TableVersionQueryVO vo) { + List list = tableVersionService.getBaseMapper() + .selectList(Wrappers.lambdaQuery().eq(DssDatamodelTableVersion::getName, vo.getName())) + .stream() + .map(dssDatamodelTableVersion -> modelMapper.map(dssDatamodelTableVersion, TableVersionQueryDTO.class)) + .collect(Collectors.toList()); + return Message.ok().data("list", list); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCollect(TableCollectVO vo) throws ErrorException { + if (vo.getTableId() != null) { + DssDatamodelTable collection = getBaseMapper().selectById(vo.getTableId()); + if (collection == null) { + LOGGER.error("errorCode : {}, collect table not exists id : {} ", ErrorCode.TABLE_COLLECT_ADD_ERROR.getCode(), vo.getTableId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_COLLECT_ADD_ERROR.getCode(), " collect table not exist id : " + vo.getTableId()); + } + return tableCollectService.tableCollect(vo.getUser(), collection); + } + + return tableCollectService.tableCollect(vo); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCancel(TableCollectCancelVO vo) throws ErrorException { + return tableCollectService.tableCollectCancel(vo.getUser(), vo.getTableName()); + } + + + @Override + public Message tableCollections(TableCollectQueryVO vo) throws ErrorException { + QueryWrapper queryWrapper = new QueryWrapper() + .like(StringUtils.isNotBlank(vo.getName()), "name", vo.getName()) + .like(StringUtils.isNotBlank(vo.getDataBase()), "database", vo.getName()) + .eq(StringUtils.isNotBlank(vo.getUser()), "user", vo.getUser()) + .eq(StringUtils.isNotBlank(vo.getWarehouseLayerName()), "warehouse_layer_name", vo.getWarehouseLayerName()) + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), "warehouse_theme_name", vo.getWarehouseThemeName()); + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(tableCollectService.getBaseMapper().selectList(queryWrapper)); + + return Message.ok() + .data("list", pageInfo.getList().stream().map(entity -> { + TableCollectionDTO dto = modelMapper.map(entity, TableCollectionDTO.class); + //收藏表的Id 不返回前端 + dto.setId(null); + return dto; + }).collect(Collectors.toList())) + .data("total", pageInfo.getTotal()); + } + + + @Override + public Message dictionaryList(TableDictionaryListVO vo) { + return Message.ok().data("list", tableDictionaryService.listByType(vo.getType())); + } + + + @Override + public Integer addTableColumn(TableColumnsAddVO vo) throws ErrorException { + int count = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getId, vo.getTableId())); + if (count < 1) { + LOGGER.error("errorCode : {}, table not exists id : {} ", ErrorCode.TABLE_COLUMN_ADD_ERROR.getCode(), vo.getTableId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_COLUMN_ADD_ERROR.getCode(), " table not exists id : " + vo.getTableId()); + } + DssDatamodelTableColumns newColumn = modelMapper.map(vo, DssDatamodelTableColumns.class); + return tableColumnsService.addColumn(newColumn); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableColumnBind(Long columnId, TableColumnBindVO vo) throws ErrorException { + return tableColumnsService.tableColumnBind(columnId, vo.getModelType(), vo.getModelName(), vo.getModelNameEn()); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer tableCreate(TableCreateVO vo) throws ErrorException { + DssDatamodelTable current = getBaseMapper().selectById(vo.getTableId()); + if (current == null) { + LOGGER.error("errorCode : {}, table not exists id : {} ", ErrorCode.TABLE_CREATE_ERROR.getCode(), vo.getTableId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_CREATE_ERROR.getCode(), " table not exists id : " + vo.getTableId()); + } + tableMaterializedHistoryService.materializedTable(current, vo.getUser()); + //发布尝试表绑定模型事件 + publisher.publishEvent(new TableFirstBindEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,current.getId() + ,current.getName())); + return 1; + } + + + + + @Override + public String tableCreateSql(TableCreateSqlVO vo) throws ErrorException { + + //先查询hdfs + if (StringUtils.isNotBlank(vo.getGuid())) { + GetHiveTblCreateResult result = linkisDataAssetsRemoteClient.getHiveTblCreate(GetHiveTblCreateAction.builder().setUser(vo.getUser()).setGuid(vo.getGuid()).build()); + if (StringUtils.isNotBlank(result.getResult())) { + LOGGER.info("sql : {}", result.getResult()); + return result.getResult(); + } + } + + DssDatamodelTable current = getBaseMapper().selectById(vo.getTableId()); + if (current == null) { + LOGGER.error("errorCode : {}, table not exists id : {} ", ErrorCode.TABLE_CREATE_SQL_ERROR.getCode(), vo.getTableId()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_CREATE_SQL_ERROR.getCode(), " table not exists id : " + vo.getTableId()); + } + String sql = tableMaterializedHistoryService.generateSql(current); + LOGGER.info("sql : {}", sql); + return sql; + } + + + @Override + public Message list(TableListVO vo) { + if (vo.getModelType() > 0) { + return listByIndicator(vo); + } + + if (vo.getTableType() < 0 || StringUtils.isNotBlank(vo.getWarehouseLayerName()) || StringUtils.isNotBlank(vo.getWarehouseThemeName())) { + return listDataModel(vo); + } + return listAssets(vo); + } + + private Message listByIndicator(TableListVO vo) { + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + + PageInfo pageInfo = new PageInfo<>(tableQueryMapper.page(Wrappers.lambdaQuery() + .eq(DssDatamodelTabelQuery::getModelType, vo.getModelType()) + .like(StringUtils.isNotBlank(vo.getModelName()), DssDatamodelTabelQuery::getModelName, vo.getModelName()) + .eq(StringUtils.isNotBlank(vo.getWarehouseLayerName()), DssDatamodelTabelQuery::getWarehouseLayerName, vo.getWarehouseLayerName()) + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), DssDatamodelTabelQuery::getWarehouseThemeName, vo.getWarehouseThemeName()) + .groupBy(DssDatamodelTabelQuery::getId))); + return Message.ok().data("list", pageInfo.getList().stream().map(entity -> modelMapper.map(entity, TableListDTO.class)).collect(Collectors.toList())) + .data("total", pageInfo.getTotal()); + } + + private Message listAssets(TableListVO vo) { + SearchHiveTblResult result = linkisDataAssetsRemoteClient.searchHiveTbl(SearchHiveTblAction.builder() + .setUser(vo.getUser()) + .setQuery(vo.getName()) + .setOffset((vo.getPageNum() - 1) * vo.getPageSize()) + .setLimit(vo.getPageSize()).build()); + List dtos = assertsGson.fromJson(assertsGson.toJson(result.getResult()), new TypeToken>() { + }.getType()); + if (CollectionUtils.isEmpty(dtos)) { + return Message.ok().data("list", Lists.newArrayList()); + } + List tableListDTOS = Lists.newArrayList(); + dtos.forEach(hiveTblSimpleInfoDTO -> { + TableListDTO tableListDTO = new TableListDTO(); + tableListDTO.setGuid(hiveTblSimpleInfoDTO.getGuid()); + tableListDTO.setCreator(hiveTblSimpleInfoDTO.getOwner()); + tableListDTO.setCreateTime(hiveTblSimpleInfoDTO.getCreateTime()); + tableListDTO.setName(StringUtils.substringBefore(hiveTblSimpleInfoDTO.getQualifiedName(), "@")); + tableListDTO.setDataBase(StringUtils.substringBefore(hiveTblSimpleInfoDTO.getQualifiedName(), ".")); + + tableListDTO.setUpdateTime(hiveTblSimpleInfoDTO.getLastAccessTime()); + tableListDTO.setAlias(hiveTblSimpleInfoDTO.getAliases()); + tableListDTO.setComment(hiveTblSimpleInfoDTO.getComment()); + tableListDTO.setSize(getSize(hiveTblSimpleInfoDTO)); + String theme = getThemes(hiveTblSimpleInfoDTO.getClassifications()); + tableListDTO.setWarehouseThemeName(theme); + tableListDTO.setWarehouseThemeNameEn(theme); + String layer = getLayer(hiveTblSimpleInfoDTO.getClassifications()); + tableListDTO.setWarehouseLayerName(layer); + tableListDTO.setWarehouseLayerNameEn(layer); + + tableListDTOS.add(tableListDTO); + }); + + return Message.ok().data("list", tableListDTOS) + .data("total", tableListDTOS.size()); + } + + private String getThemes(List classifications) { + return getModel(ClassificationConstant.THEME,classifications); + } + private String getLayer(List classifications) { + return getModel(ClassificationConstant.LAYER,classifications); + } + + private String getModel(ClassificationConstant classificationConstant,List classifications) { + if (CollectionUtils.isEmpty(classifications)) { + return null; + } + for (String classification : classifications) { + String prefix = StringUtils.substringBefore(classification, ClassificationConstant.SEPARATOR); + if (classificationConstant.getTypeCode().equals(prefix)) { + return StringUtils.substringAfter(classification, ClassificationConstant.SEPARATOR); + } + } + return null; + } + + private long getSize(HiveTblSimpleInfoDTO hiveTblSimpleInfoDTO) { + long size = 0L; + if (StringUtils.isBlank(hiveTblSimpleInfoDTO.getTotalSize())) { + return size; + } + try { + size = Long.parseLong(hiveTblSimpleInfoDTO.getTotalSize()); + } catch (Exception e) { + //ignore + } + return size; + } + + private Message listDataModel(TableListVO vo) { + PageHelper.clearPage(); + PageHelper.startPage(vo.getPageNum(), vo.getPageSize()); + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList(Wrappers.lambdaQuery() + .eq(StringUtils.isNotBlank(vo.getWarehouseThemeName()), DssDatamodelTable::getWarehouseThemeName, vo.getWarehouseThemeName()) + .eq(StringUtils.isNotBlank(vo.getWarehouseLayerName()), DssDatamodelTable::getWarehouseLayerName, vo.getWarehouseLayerName()) + .like(StringUtils.isNotBlank(vo.getName()), DssDatamodelTable::getName, vo.getName()))); + return Message.ok().data("list", pageInfo.getList().stream().map(entity -> modelMapper.map(entity, TableListDTO.class)).collect(Collectors.toList())) + .data("total", pageInfo.getTotal()); + } + + @Override + public Message listTablePartitionStats(TblPartitionStatsVO vo) { + if (StringUtils.isNotBlank(vo.getGuid())) { + return queryByGuid(vo.getGuid(), vo.getUser()); + } + SearchHiveTblResult result = linkisDataAssetsRemoteClient.searchHiveTbl(SearchHiveTblAction.builder().setUser(vo.getUser()).setPrecise(QueryType.PRECISE).setQuery(vo.getName()).setOffset(0).setLimit(1).build()); + List dtos = assertsGson.fromJson(assertsGson.toJson(result.getResult()), new TypeToken>() { + }.getType()); + if (CollectionUtils.isEmpty(dtos)) { + return Message.ok().data("list", Lists.newArrayList()); + } + return queryByGuid(dtos.get(0).getGuid(), vo.getUser()); + } + + @Override + public Message listDataBases(TableDatabasesQueryVO vo) { + SearchHiveDbResult result = linkisDataAssetsRemoteClient.searchHiveDb( + SearchHiveDbAction.builder().setQuery("hive_db").setUser(vo.getUser()).setOffset(vo.getPageNum() - 1).setLimit(vo.getPageSize() * (vo.getPageNum() - 1)).build()); + List> results=result.getResult(); + return Message.ok().data("list",results); + } + + @Override + public Message previewData(TableDataPreviewVO vo) throws ErrorException { + if (!tableMaterializedHistoryService.tableExists(vo.getTableName(), vo.getUser())) { + return Message.ok(); + } + DataModelUJESJobTask dataModelUJESJobTask = PreviewDataModelUJESJobTask.newBuilder().user(vo.getUser()).code(vo.getTableName()).count(10).build(); + PreviewDataDTO previewDataDTO = null; + try { + previewDataDTO = previewDataModelUJESJobLauncher.launch(dataModelUJESJobTask); + } catch (Exception e) { + if (e instanceof UJESJobException) { + UJESJobException ujesJobException = (UJESJobException) e; + //表不存在错误忽略 + if (ujesJobException.getErrCode() == 40002) { + LOGGER.error(e.getMessage(), e); + return Message.ok(); + } + } + throw e; + } + return Message.ok().data("detail", previewDataDTO); + } + + + @Override + public Integer tableCheckData(TableCheckDataVO vo) throws ErrorException { + return tableMaterializedHistoryService.hasData(vo.getTableName(), vo.getUser()) ? 1 : 0; + } + + private Message queryByGuid(String guid, String user) { + GetHiveTblPartitionResult result = linkisDataAssetsRemoteClient.getHiveTblPartition(GetHiveTblPartitionAction.builder().setUser(user).setGuid(guid).build()); + if (result.getResult() == null) { + return Message.ok().data("list", Lists.newArrayList()); + } + List partInfoDTOS = assertsGson.fromJson(assertsGson.toJson(result.getResult()), new TypeToken>() { + }.getType()); + return Message.ok().data("list", partInfoDTOS); + } + + + @Override + public int tableThemeReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getWarehouseThemeName, name)); + int currentCountEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getWarehouseThemeNameEn, name)); + // int versionCount = tableVersionService.tableContentReference(name); + + List preReferences = tableVersionService.tableContentMultipleReference(name); + int versionCount = (int) preReferences.stream().filter(e->{ + DssDatamodelTable temp = gson.fromJson(e.getTableParams(),DssDatamodelTable.class); + return StringUtils.equals(temp.getWarehouseThemeName(),name)||StringUtils.equals(temp.getWarehouseThemeNameEn(),name); + }).count(); + + return currentCount + versionCount + currentCountEn; + } + + @Override + public int tableLayerReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getWarehouseLayerName, name)); + int currentCountEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getWarehouseLayerNameEn, name)); + //int versionCount = tableVersionService.tableContentReference(name); + List preReferences = tableVersionService.tableContentMultipleReference(name); + int versionCount = (int) preReferences.stream().filter(e->{ + DssDatamodelTable temp = gson.fromJson(e.getTableParams(),DssDatamodelTable.class); + return StringUtils.equals(temp.getWarehouseLayerName(),name)||StringUtils.equals(temp.getWarehouseLayerNameEn(),name); + }).count(); + return currentCount + versionCount + currentCountEn; + } + + @Override + public int tableCycleReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getLifecycle, name)); + int currentCountEn = getBaseMapper().selectCount(Wrappers.lambdaQuery().eq(DssDatamodelTable::getLifecycleEn, name)); + List preReferences = tableVersionService.tableContentMultipleReference(name); + int versionCount = (int) preReferences.stream().filter(e->{ + DssDatamodelTable temp = gson.fromJson(e.getTableParams(),DssDatamodelTable.class); + return StringUtils.equals(temp.getLifecycle(),name)||StringUtils.equals(temp.getLifecycleEn(),name); + }).count(); + return currentCount + versionCount + currentCountEn; + } + + @Override + public int tableDimensionReferenceCount(String name) { + return referenceCount(name, ModeType.DIMENSION); + } + + private int referenceCount(String name, ModeType modeType) { + int currentCount = tableColumnsService.modelReferenceCount(modeType, name); + int currentCountEn = tableColumnsService.modelReferenceCountEn(modeType, name); +// int versionCount = tableVersionService.tableColumnsReference(name); + + List preReferences = tableVersionService.tableColumnsReference(name); + int versionCount = (int) preReferences.stream().filter(e->{ + DssDatamodelTableColumns temp = gson.fromJson(e.getTableParams(),DssDatamodelTableColumns.class); + //名称相同且类型相同 + return modeType.getType() == temp.getModelType()&&StringUtils.equals(name,temp.getModelName()); + }).count(); + return currentCount + versionCount + currentCountEn; + } + + @Override + public int tableMeasureReferenceCount(String name) { + return referenceCount(name, ModeType.MEASURE); + } + + @Override + public int tableIndicatorReferenceCount(String name) { + return referenceCount(name, ModeType.INDICATOR); + } + + @Override + public int tableModifierReferenceCount(String name) { + return 0; + } + + + @Override + public void bind(long id, String user) throws ErrorException { + DssDatamodelTable current = getBaseMapper().selectById(id); + if (current == null) { + LOGGER.error("errorCode : {}, bind table error not exists", ErrorCode.TABLE_BIND_ERROR.getCode()); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_BIND_ERROR.getCode(), "bind table error not exists"); + } + + List currentColumns = tableColumnsService.listByTableId(id); + publisher.publishEvent(new BindModelByTableEvent(this, user, current)); + publisher.publishEvent(new BindModelByColumnsEvent(this, user, current.getName(), currentColumns)); + publisher.publishEvent(new BindLabelByTableEvent(this, user, current)); + } + + @Override + public void tryBind(long id) throws ErrorException { + DssDatamodelTable current = getBaseMapper().selectById(id); + if (current == null) { + LOGGER.error("errorCode : {}, table not exists id : {} ", ErrorCode.TABLE_BIND_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_BIND_ERROR.getCode(), " table not exists id : " + id); + } + + //发布尝试表绑定模型事件 + publisher.publishEvent(new TableFirstBindEvent(this + ,DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser() + ,current.getId() + ,current.getName())); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteTable(Long id) throws ErrorException { + DssDatamodelTable current = getBaseMapper().selectById(id); + if (current == null) { + return 0; + } + //有数据则不能删除 + if (tableMaterializedHistoryService.hasData(current.getName(), DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser())) { + LOGGER.error("errorCode : {}, table id : {} has data", ErrorCode.TABLE_DELETE_ERROR.getCode(), id); + throw new DSSDatamodelCenterException(ErrorCode.TABLE_DELETE_ERROR.getCode(), "bind table id " + id + "has data"); + } + List columns = tableColumnsService.listByTableId(id); + + String user = DataModelSecurityContextHolder.getContext().getDataModelAuthentication().getUser(); + + //删除表相关内容 + getBaseMapper().deleteById(id); + //删除字段 + tableColumnsService.deleteByTableId(id); + //删除版本 + tableVersionService.getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelTableVersion::getName, current.getName())); + //删除收藏信息 + tableCollectService.getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelTableCollcetion::getName, current.getName())); + //删除物化信息 + tableMaterializedHistoryService.getBaseMapper().delete(Wrappers.lambdaQuery().eq(DssDatamodelTableMaterializedHistory::getTablename, current.getName())); + //发布表解绑模型事件 + publisher.publishEvent(new UnBindModelByTableEvent(this, user, current)); + publisher.publishEvent(new UnBindModelByColumnsEvent(this, user, current.getName(), columns)); + + return 1; + } + + + @Override + public int tableLabelReferenceCount(String name) { + int currentCount = getBaseMapper().selectCount(Wrappers.lambdaQuery() + .eq(DssDatamodelTable::getLabel, name) + .or() + .like(DssDatamodelTable::getLabel, name + ",") + .or() + .like(DssDatamodelTable::getLabel, "," + name + ",") + .or() + .like(DssDatamodelTable::getLabel, "," + name)); + + List preReferences = tableVersionService.tableContentMultipleReference(name); + int versionCount = (int) preReferences.stream().filter(e->{ + DssDatamodelTable temp = gson.fromJson(e.getTableParams(),DssDatamodelTable.class); + return Sets.newHashSet(StringUtils.split(temp.getLabel(), LabelConstant.SEPARATOR)).contains(name); + }).count(); + return currentCount + versionCount; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableStatsServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableStatsServiceImpl.java new file mode 100644 index 000000000..270ed5474 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableStatsServiceImpl.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableStatsMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableStats; +import com.webank.wedatasphere.dss.datamodel.table.service.TableStatsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@Service +public class TableStatsServiceImpl extends ServiceImpl implements TableStatsService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableServiceImpl.class); + + + @Override + public DssDatamodelTableStats queryByTableName(String tableName) { + return getBaseMapper().selectOne(Wrappers.lambdaQuery().eq(DssDatamodelTableStats::getName,tableName)); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableThemeReferenceServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableThemeReferenceServiceImpl.java new file mode 100644 index 000000000..388d059f8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableThemeReferenceServiceImpl.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + +import com.webank.wedatasphere.dss.datamodel.center.common.service.TableThemeReferenceService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class TableThemeReferenceServiceImpl implements TableThemeReferenceService { + + @Resource + private TableService tableService; + + @Override + public int tableThemeReferenceCount(String name) { + return tableService.tableThemeReferenceCount(name); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableVersionServiceImpl.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableVersionServiceImpl.java new file mode 100644 index 000000000..bb4a6c147 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/service/impl/TableVersionServiceImpl.java @@ -0,0 +1,109 @@ +package com.webank.wedatasphere.dss.datamodel.table.service.impl; + + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.gson.Gson; +import com.webank.wedatasphere.dss.datamodel.table.dao.DssDatamodelTableVersionMapper; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTable; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableCollcetion; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableColumns; +import com.webank.wedatasphere.dss.datamodel.table.entity.DssDatamodelTableVersion; +import com.webank.wedatasphere.dss.datamodel.table.service.TableMaterializedHistoryService; +import com.webank.wedatasphere.dss.datamodel.table.service.TableVersionService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Service +public class TableVersionServiceImpl extends ServiceImpl implements TableVersionService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableVersionServiceImpl.class); + + private Gson gson = new Gson(); + + @Resource + private TableMaterializedHistoryService tableMaterializedHistoryService; + + + @Override + public String findLastVersion(String name) { + PageHelper.clearPage(); + PageHelper.startPage(1,1); + //查询当前表名称最大版本 + PageInfo pageInfo = new PageInfo<>(getBaseMapper().selectList( + Wrappers.lambdaQuery() + .eq(DssDatamodelTableVersion::getName, name) + .orderByDesc(DssDatamodelTableVersion::getVersion))); + List list = pageInfo.getList(); + return !CollectionUtils.isEmpty(list) ? list.get(0).getVersion() : null; + } + + + + @Override + @Transactional(rollbackFor = Exception.class) + public Long addOlderVersion(DssDatamodelTable orgTable, List orgColumns) { + DssDatamodelTableVersion version = new DssDatamodelTableVersion(); + version.setTblId(orgTable.getId()); + version.setName(orgTable.getName()); + version.setComment(orgTable.getComment()); + version.setTableCode(tableMaterializedHistoryService.generateSql(orgTable));//todo 生成建表脚本 + version.setIsMaterialized(1);//todo 判断是否物化 + version.setColumns(gson.toJson(orgColumns)); + version.setTableParams(gson.toJson(orgTable)); + version.setSourceType("add");//todo 此字段的意义 + version.setCreateTime(new Date()); + version.setUpdateTime(new Date()); + version.setVersion(orgTable.getVersion()); + version.setCreator(orgTable.getCreator()); + getBaseMapper().insert(version); + return version.getId(); + } + + + @Override + public DssDatamodelTableVersion findBackup(String name, String version) { + return getBaseMapper().selectOne( + Wrappers.lambdaQuery() + .eq(DssDatamodelTableVersion::getName, name) + .eq(DssDatamodelTableVersion::getVersion, version)); + } + + + @Override + public List tableContentReference(String content) { + return getBaseMapper().selectList( + Wrappers.lambdaQuery() + .like(DssDatamodelTableVersion::getTableParams,"\""+content + "\"")); + } + + @Override + public List tableColumnsReference(String content) { + return getBaseMapper().selectList( + Wrappers.lambdaQuery() + .like(DssDatamodelTableVersion::getColumns,"\""+content + "\"")); + } + + + @Override + public List tableContentMultipleReference(String context) { + return getBaseMapper().selectList( + Wrappers.lambdaQuery() + .like(DssDatamodelTableVersion::getTableParams,"\""+ context + "\"") + .or() + .like(DssDatamodelTableVersion::getTableParams,"\""+ context + ",") + .or() + .like(DssDatamodelTableVersion::getTableParams,","+ context + ",") + .or() + .like(DssDatamodelTableVersion::getTableParams,","+ context + "\"")); + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelAddVO.java new file mode 100644 index 000000000..95501a37f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelAddVO.java @@ -0,0 +1,37 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; +import java.util.Map; +@Data +public class LabelAddVO { + + private String name; + + private String fieldIdentifier; + + /** + * 标签键值对 json + */ + private Map paramMap; + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + /** + * 英文 + */ + private String warehouseThemeNameEn; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelEnableVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelEnableVO.java new file mode 100644 index 000000000..2594f5b53 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelEnableVO.java @@ -0,0 +1,8 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; + +@Data +public class LabelEnableVO { + private Integer isAvailable; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelUpdateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelUpdateVO.java new file mode 100644 index 000000000..ac215667b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelUpdateVO.java @@ -0,0 +1,40 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; + +import java.util.Map; + +@Data +public class LabelUpdateVO { + + private String name; + + private String fieldIdentifier; + + /** + * 标签键值对 json + */ + private Map paramMap; + + + private String comment; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + private String owner; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + private Integer isAvailable; + + /** + * 英文 + */ + private String warehouseThemeNameEn; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelsQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelsQueryVO.java new file mode 100644 index 000000000..ddfc6fb3f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/LabelsQueryVO.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import com.webank.wedatasphere.dss.datamodel.center.common.vo.PageVO; +import lombok.Data; + +@Data +public class LabelsQueryVO extends PageVO { + private String name; + + private Integer isAvailable; + + private String owner; + + private String warehouseThemeName; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableAddVO.java new file mode 100644 index 000000000..d40885da1 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableAddVO.java @@ -0,0 +1,229 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +import java.util.List; +@Data +@ToString +public class TableAddVO { + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + /** + * 外部表时 location + */ + private String location; + + /** + * 标签 + */ + private String label; + + private List columns; + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public Integer getIsExternal() { + return isExternal; + } + + public void setIsExternal(Integer isExternal) { + this.isExternal = isExternal; + } + + public String getDataBase() { + return dataBase; + } + + public void setDataBase(String dataBase) { + this.dataBase = dataBase; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + + + public String getWarehouseLayerName() { + return warehouseLayerName; + } + + public void setWarehouseLayerName(String warehouseLayerName) { + this.warehouseLayerName = warehouseLayerName; + } + + public String getWarehouseThemeName() { + return warehouseThemeName; + } + + public void setWarehouseThemeName(String warehouseThemeName) { + this.warehouseThemeName = warehouseThemeName; + } + + public String getLifecycle() { + return lifecycle; + } + + public void setLifecycle(String lifecycle) { + this.lifecycle = lifecycle; + } + + public Integer getIsPartitionTable() { + return isPartitionTable; + } + + public void setIsPartitionTable(Integer isPartitionTable) { + this.isPartitionTable = isPartitionTable; + } + + public Integer getIsAvailable() { + return isAvailable; + } + + public void setIsAvailable(Integer isAvailable) { + this.isAvailable = isAvailable; + } + + public String getStorageType() { + return storageType; + } + + public void setStorageType(String storageType) { + this.storageType = storageType; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public String getCompress() { + return compress; + } + + public void setCompress(String compress) { + this.compress = compress; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public List getColumns() { + return columns; + } + + public void setColumns(List columns) { + this.columns = columns; + } + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCheckDataVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCheckDataVO.java new file mode 100644 index 000000000..b1eaa6663 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCheckDataVO.java @@ -0,0 +1,12 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableCheckDataVO { + String tableName; + String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectCancelVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectCancelVO.java new file mode 100644 index 000000000..561a64fd5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectCancelVO.java @@ -0,0 +1,33 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +public class TableCollectCancelVO { + + private String user; + + private String tableName; + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String toString() { + return "TableCollectCancelVO{" + + "user='" + user + '\'' + + ", tableName='" + tableName + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectQueryVO.java new file mode 100644 index 000000000..7adedc957 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectQueryVO.java @@ -0,0 +1,99 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + + +public class TableCollectQueryVO { + + private Integer pageSize = 20; + + private Integer pageNum = 1; + + + private String dataBase; + + + private String name; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + + private String user; + + + public String getDataBase() { + return dataBase; + } + + public void setDataBase(String dataBase) { + this.dataBase = dataBase; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWarehouseLayerName() { + return warehouseLayerName; + } + + public void setWarehouseLayerName(String warehouseLayerName) { + this.warehouseLayerName = warehouseLayerName; + } + + public String getWarehouseThemeName() { + return warehouseThemeName; + } + + public void setWarehouseThemeName(String warehouseThemeName) { + this.warehouseThemeName = warehouseThemeName; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public Integer getPageNum() { + return pageNum; + } + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + @Override + public String toString() { + return "TableCollectQueryVO{" + + "pageSize=" + pageSize + + ", pageNum=" + pageNum + + ", dataBase='" + dataBase + '\'' + + ", name='" + name + '\'' + + ", warehouseLayerName='" + warehouseLayerName + '\'' + + ", warehouseThemeName='" + warehouseThemeName + '\'' + + ", user='" + user + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectVO.java new file mode 100644 index 000000000..425da6431 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCollectVO.java @@ -0,0 +1,94 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class TableCollectVO { + + private Long tableId; + + private String user; + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 标签 + */ + private String label; + + + /** + * atlas标识 + */ + private String guid; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnBindVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnBindVO.java new file mode 100644 index 000000000..99f5be455 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnBindVO.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; + +@Data +public class TableColumnBindVO { + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 模型信息名称 + */ + private String modelName; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnVO.java new file mode 100644 index 000000000..adb2ae943 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnVO.java @@ -0,0 +1,44 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableColumnVO { + + private String name; + + private String alias; + + private String type; + + private String comment; + + private Integer isPartitionField; + + private Integer isPrimary; + + private Integer length; + + private String rule; + + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 关联具体模型id信息 + */ + private Long modelId; + + + private String modelName; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnsAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnsAddVO.java new file mode 100644 index 000000000..987489dca --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableColumnsAddVO.java @@ -0,0 +1,42 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; + +@Data +public class TableColumnsAddVO { + + private Long tableId; + + private String name; + + private String alias; + + private String type; + + private String comment; + + private Integer isPartitionField; + + private Integer isPrimary; + + private Integer length; + + private String rule; + + /** + * 0 维度,1 指标 2 度量 + */ + private Integer modelType; + + /** + * 模型信息名称 + */ + private String modelName; + + /** + * 模型信息英文名称 + */ + private String modelNameEn; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateSqlVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateSqlVO.java new file mode 100644 index 000000000..d7623760d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateSqlVO.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableCreateSqlVO { + private Long tableId; + + private String guid; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateVO.java new file mode 100644 index 000000000..01077cb4d --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableCreateVO.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableCreateVO { + private Long tableId; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDataPreviewVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDataPreviewVO.java new file mode 100644 index 000000000..f203ddac8 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDataPreviewVO.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; + +@Data +public class TableDataPreviewVO { + private String tableName; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDatabasesQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDatabasesQueryVO.java new file mode 100644 index 000000000..13f8a455b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDatabasesQueryVO.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableDatabasesQueryVO { + private String name; + + private Integer pageSize = 20; + + private Integer pageNum = 1; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDictionaryListVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDictionaryListVO.java new file mode 100644 index 000000000..00e09209b --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableDictionaryListVO.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +public class TableDictionaryListVO { + + private String type; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return "TableDictionaryListVO{" + + "type='" + type + '\'' + + '}'; + } +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableListVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableListVO.java new file mode 100644 index 000000000..9c3e4e41f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableListVO.java @@ -0,0 +1,40 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import com.webank.wedatasphere.dss.datamodel.center.common.vo.PageVO; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableListVO extends PageVO { + + private String name; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + + private String user; + + /** + * 0 维度 1 指标 2 度量 -1 按照表名查询 + */ + private Integer modelType = -1; + + + private String modelName; + + /** + * -1 表示查询逻辑表 0 表示查询asserts + */ + private Integer tableType = -1; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TablePartitionStatsVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TablePartitionStatsVO.java new file mode 100644 index 000000000..62a027c9f --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TablePartitionStatsVO.java @@ -0,0 +1,6 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +public class TablePartitionStatsVO { + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableQueryOneVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableQueryOneVO.java new file mode 100644 index 000000000..82904d072 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableQueryOneVO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableQueryOneVO { + + private String name; + + /** + * atlas标识 + */ + private String guid; + + + private String user; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableUpdateVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableUpdateVO.java new file mode 100644 index 000000000..abd9e6bfa --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableUpdateVO.java @@ -0,0 +1,99 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +@Data +@ToString +public class TableUpdateVO { + + + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + private Date createTime; + + private Date updateTime; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + + /** + * 外部表时 location + */ + private String location; + + /** + * 标签 + */ + private String label; + + + private List columns; + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionAddVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionAddVO.java new file mode 100644 index 000000000..397892ca5 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionAddVO.java @@ -0,0 +1,90 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +@Data +@ToString +public class TableVersionAddVO { + private String dataBase; + + private String name; + + private String alias; + + private String creator; + + private String comment; + + /** + * 数仓层级 + */ + private String warehouseLayerName; + + /** + * 数仓层级英文 + */ + private String warehouseLayerNameEn; + + /** + * 数仓主题格式为: theme_domain_name.theme_name + */ + private String warehouseThemeName; + + /** + * 数仓主题英文 + */ + private String warehouseThemeNameEn; + + /** + * 生命周期 + */ + private String lifecycle; + + private String lifecycleEn; + + private Integer isPartitionTable; + + private Integer isAvailable; + + /** + * 存储类型:hive/mysql + */ + private String storageType; + + /** + * 授权的名字:userName、roleName + */ + private String principalName; + + /** + * 压缩格式 + */ + private String compress; + + /** + * 文件格式 + */ + private String fileType; + + + /** + * 是否外部表 0 内部表 1外部表 + */ + private Integer isExternal; + + /** + * 外部表时 location + */ + private String location; + + private String label; + + private List columns; + + +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionQueryVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionQueryVO.java new file mode 100644 index 000000000..c6ae4e44c --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionQueryVO.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TableVersionQueryVO { + + private String name; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionRollBackVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionRollBackVO.java new file mode 100644 index 000000000..795a03197 --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TableVersionRollBackVO.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + + +import lombok.Data; + +@Data +public class TableVersionRollBackVO { + + private String name; + + private String version; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TblPartitionStatsVO.java b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TblPartitionStatsVO.java new file mode 100644 index 000000000..a8c7b00aa --- /dev/null +++ b/dss-apps/dss-datamodel-center/dss-datamodel-table-management/src/main/java/com/webank/wedatasphere/dss/datamodel/table/vo/TblPartitionStatsVO.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.dss.datamodel.table.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TblPartitionStatsVO { + + private String name; + + private String guid; + + private String user; +} diff --git a/dss-apps/dss-datamodel-center/pom.xml b/dss-apps/dss-datamodel-center/pom.xml new file mode 100644 index 000000000..4a4aea0d2 --- /dev/null +++ b/dss-apps/dss-datamodel-center/pom.xml @@ -0,0 +1,55 @@ + + + + dss + com.webank.wedatasphere.dss + 1.1.0 + ../../pom.xml + + 4.0.0 + + dss-datamodel-center + pom + + dss-datamodel-center-server + dss-datamodel-dimension-management + dss-datamodel-indicator-management + dss-datamodel-measure-management + dss-datamodel-table-management + dss-datamodel-center-common + dss-datamodel-center-client + + + + + UTF-8 + 2.16 + 2.22.2 + 2.22.2 + + + + + org.modelmapper + modelmapper + 2.4.4 + + + + junit + junit + 4.12 + test + + + org.junit.platform + junit-platform-launcher + 1.5.2 + test + + + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/pom.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/pom.xml new file mode 100644 index 000000000..1309a6459 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + dss-datawarehouse-design + com.webank.wedatasphere.dss + 1.1.0 + + + dss-data-warehouse-client + jar + + + 8 + 8 + + + + + + org.apache.linkis + linkis-module + + + + org.apache.linkis + linkis-httpclient + + + + org.apache.linkis + linkis-gateway-httpclient-support + + + + org.projectlombok + lombok + provided + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwLayerVO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwLayerVO.java new file mode 100644 index 000000000..601d804a6 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwLayerVO.java @@ -0,0 +1,121 @@ +package com.webank.wedatasphere.warehouse.domain; + +//import lombok.Getter; +//import lombok.Setter; +//import lombok.ToString; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +//@Setter +//@Getter +//@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class DwLayerVO { + private String id; + private String name; + private String enName; + private Boolean preset; + private String description; + private String principalName; + private String dbs; + private Integer sort; + private Boolean isAvailable; + private Long createTime; + private Long updateTime; + private int referenceCount; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public Boolean getPreset() { + return preset; + } + + public void setPreset(Boolean preset) { + this.preset = preset; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public String getDbs() { + return dbs; + } + + public void setDbs(String dbs) { + this.dbs = dbs; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public Boolean getAvailable() { + return isAvailable; + } + + public void setAvailable(Boolean available) { + isAvailable = available; + } + + public Long getCreateTime() { + return createTime; + } + + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Long updateTime) { + this.updateTime = updateTime; + } + + public int getReferenceCount() { + return referenceCount; + } + + public void setReferenceCount(int referenceCount) { + this.referenceCount = referenceCount; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwModifierVO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwModifierVO.java new file mode 100644 index 000000000..0076ce598 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwModifierVO.java @@ -0,0 +1,123 @@ +package com.webank.wedatasphere.warehouse.domain; + +//import lombok.Getter; +//import lombok.Setter; +//import lombok.ToString; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +import java.util.Date; + +//@Setter +//@Getter +//@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class DwModifierVO { + private Long id; + private String modifierType; + private String modifierTypeEn; + private String layerArea; + private String layerAreaEn; + private String themeArea; + private String themeAreaEn; + private String description; + private Boolean isAvailable; + private Date createTime; + private Date updateTime; + private int referenceCount; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getModifierType() { + return modifierType; + } + + public void setModifierType(String modifierType) { + this.modifierType = modifierType; + } + + public String getModifierTypeEn() { + return modifierTypeEn; + } + + public void setModifierTypeEn(String modifierTypeEn) { + this.modifierTypeEn = modifierTypeEn; + } + + public String getLayerArea() { + return layerArea; + } + + public void setLayerArea(String layerArea) { + this.layerArea = layerArea; + } + + public String getLayerAreaEn() { + return layerAreaEn; + } + + public void setLayerAreaEn(String layerAreaEn) { + this.layerAreaEn = layerAreaEn; + } + + public String getThemeArea() { + return themeArea; + } + + public void setThemeArea(String themeArea) { + this.themeArea = themeArea; + } + + public String getThemeAreaEn() { + return themeAreaEn; + } + + public void setThemeAreaEn(String themeAreaEn) { + this.themeAreaEn = themeAreaEn; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Boolean getAvailable() { + return isAvailable; + } + + public void setAvailable(Boolean available) { + isAvailable = available; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public int getReferenceCount() { + return referenceCount; + } + + public void setReferenceCount(int referenceCount) { + this.referenceCount = referenceCount; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwStatisticalPeriodVO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwStatisticalPeriodVO.java new file mode 100644 index 000000000..4534a286d --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwStatisticalPeriodVO.java @@ -0,0 +1,214 @@ +package com.webank.wedatasphere.warehouse.domain; + +//import lombok.Getter; +//import lombok.Setter; +//import lombok.ToString; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +import java.util.Date; + +//@Setter +//@Getter +//@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class DwStatisticalPeriodVO { + private Long id; + + private Long themeDomainId; + + private Long layerId; + + private String name; + + private String enName; + + private String description; + + private String startTimeFormula; + + private String endTimeFormula; + + private String principalName; + + private Boolean isAvailable; + + private String owner; + + private Date createTime; + + private Date updateTime; + + private String themeArea; + + private String themeAreaEn; + + private String layerArea; + + private String layerAreaEn; + + transient private Boolean status; + + private Boolean referenced; + + private int referenceCount; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getThemeDomainId() { + return themeDomainId; + } + + public void setThemeDomainId(Long themeDomainId) { + this.themeDomainId = themeDomainId; + } + + public Long getLayerId() { + return layerId; + } + + public void setLayerId(Long layerId) { + this.layerId = layerId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getStartTimeFormula() { + return startTimeFormula; + } + + public void setStartTimeFormula(String startTimeFormula) { + this.startTimeFormula = startTimeFormula; + } + + public String getEndTimeFormula() { + return endTimeFormula; + } + + public void setEndTimeFormula(String endTimeFormula) { + this.endTimeFormula = endTimeFormula; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public Boolean getAvailable() { + return isAvailable; + } + + public void setAvailable(Boolean available) { + isAvailable = available; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getThemeArea() { + return themeArea; + } + + public void setThemeArea(String themeArea) { + this.themeArea = themeArea; + } + + public String getThemeAreaEn() { + return themeAreaEn; + } + + public void setThemeAreaEn(String themeAreaEn) { + this.themeAreaEn = themeAreaEn; + } + + public String getLayerArea() { + return layerArea; + } + + public void setLayerArea(String layerArea) { + this.layerArea = layerArea; + } + + public String getLayerAreaEn() { + return layerAreaEn; + } + + public void setLayerAreaEn(String layerAreaEn) { + this.layerAreaEn = layerAreaEn; + } + + public Boolean getStatus() { + return status; + } + + public void setStatus(Boolean status) { + this.status = status; + } + + public Boolean getReferenced() { + return referenced; + } + + public void setReferenced(Boolean referenced) { + this.referenced = referenced; + } + + public int getReferenceCount() { + return referenceCount; + } + + public void setReferenceCount(int referenceCount) { + this.referenceCount = referenceCount; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwThemeDomainVO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwThemeDomainVO.java new file mode 100644 index 000000000..89200431d --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/java/com/webank/wedatasphere/warehouse/domain/DwThemeDomainVO.java @@ -0,0 +1,124 @@ +package com.webank.wedatasphere.warehouse.domain; + +//import lombok.Getter; +//import lombok.Setter; +//import lombok.ToString; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +import java.util.Date; + +//@Setter +//@Getter +//@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class DwThemeDomainVO { + private Long id; + private String name; + private String enName; + private String owner; + private String principalName; + private Integer sort; + private String description; + private Date createTime; + private Date updateTime; + private Boolean preset; + private Boolean isAvailable; + + private int referenceCount; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getPrincipalName() { + return principalName; + } + + public void setPrincipalName(String principalName) { + this.principalName = principalName; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Boolean getPreset() { + return preset; + } + + public void setPreset(Boolean preset) { + this.preset = preset; + } + + public Boolean getAvailable() { + return isAvailable; + } + + public void setAvailable(Boolean available) { + isAvailable = available; + } + + public int getReferenceCount() { + return referenceCount; + } + + public void setReferenceCount(int referenceCount) { + this.referenceCount = referenceCount; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/AbstractDwRemoteClient.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/AbstractDwRemoteClient.scala new file mode 100644 index 000000000..b4259e2b1 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/AbstractDwRemoteClient.scala @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.warehouse.client + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result + +abstract class AbstractDwRemoteClient extends RemoteClient { + protected val dwsHttpClient: DWSHttpClient + override def execute(action: Action) : Result = action match { + case action: Action => dwsHttpClient.execute(action) + } + override def close() : scala.Unit = dwsHttpClient.close() +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwAction.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwAction.scala new file mode 100644 index 000000000..0415687d7 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwAction.scala @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.warehouse.client + +import org.apache.linkis.httpclient.dws.request.DWSHttpAction +import org.apache.linkis.httpclient.request.UserAction + +trait DwAction extends DWSHttpAction with UserAction { +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwRemoteClient.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwRemoteClient.scala new file mode 100644 index 000000000..5fb3fe76f --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/DwRemoteClient.scala @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.warehouse.client + +import com.webank.wedatasphere.warehouse.client.action.{ListDwLayerAction, ListDwModifierAction, ListDwStatisticalPeriodAction, ListDwThemeDomainAction} +import com.webank.wedatasphere.warehouse.client.result.{ListLayersResult, ListModifiersResult, ListStatisticalPeriodsResult, ListThemeDomainsResult} + +trait DwRemoteClient extends RemoteClient { + def listLayers(action : ListDwLayerAction) : ListLayersResult + + def listThemeDomains(action : ListDwThemeDomainAction) : ListThemeDomainsResult + + def listModifiers(action : ListDwModifierAction) : ListModifiersResult + + def listStatisticalPeriods(action : ListDwStatisticalPeriodAction) : ListStatisticalPeriodsResult +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/GovernanceDwRemoteClient.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/GovernanceDwRemoteClient.scala new file mode 100644 index 000000000..a27aaf0c7 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/GovernanceDwRemoteClient.scala @@ -0,0 +1,26 @@ +package com.webank.wedatasphere.warehouse.client + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.config.DWSClientConfig +import com.webank.wedatasphere.warehouse.client.action.{ListDwLayerAction, ListDwModifierAction, ListDwStatisticalPeriodAction, ListDwThemeDomainAction} +import com.webank.wedatasphere.warehouse.client.result.{ListLayersResult, ListModifiersResult, ListStatisticalPeriodsResult, ListThemeDomainsResult} + +class GovernanceDwRemoteClient(clientConfig: DWSClientConfig) extends AbstractDwRemoteClient with DwRemoteClient { + protected override val dwsHttpClient = new DWSHttpClient(clientConfig, "Governance-DataWarehouse-Client") + + override def listLayers(action: ListDwLayerAction): ListLayersResult = { + return execute(action).asInstanceOf[ListLayersResult] + } + + override def listThemeDomains(action: ListDwThemeDomainAction): ListThemeDomainsResult = { + execute(action).asInstanceOf[ListThemeDomainsResult] + } + + override def listModifiers(action: ListDwModifierAction): ListModifiersResult = { + execute(action).asInstanceOf[ListModifiersResult] + } + + override def listStatisticalPeriods(action: ListDwStatisticalPeriodAction): ListStatisticalPeriodsResult = { + execute(action).asInstanceOf[ListStatisticalPeriodsResult] + } +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/RemoteClient.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/RemoteClient.scala new file mode 100644 index 000000000..150331fa5 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/RemoteClient.scala @@ -0,0 +1,10 @@ +package com.webank.wedatasphere.warehouse.client + +import org.apache.linkis.httpclient.request.Action +import org.apache.linkis.httpclient.response.Result + +trait RemoteClient extends java.io.Closeable { + protected def execute(action: Action): Result + + override def close(): scala.Unit +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwLayerAction.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwLayerAction.scala new file mode 100644 index 000000000..bfd721fb9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwLayerAction.scala @@ -0,0 +1,55 @@ +package com.webank.wedatasphere.warehouse.client.action + +import org.apache.linkis.httpclient.request.GetAction +import com.webank.wedatasphere.warehouse.client.DwAction + +class ListDwLayerAction() extends GetAction with DwAction { + private var user: String = _ +// private var isAvailable: Boolean = true +// def setIsAvailable(isAvailable: Boolean): Unit = this.isAvailable = isAvailable +// def getIsAvailable: Boolean = this.isAvailable + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-warehouse", "layers", "all") +} + +object ListDwLayerAction { + def builder(): Builder = new Builder + + class Builder private[ListDwLayerAction]() { + private var user: String = _ + private var db: String = _ + private var isAvailable: Boolean = true + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setIsAvailable(isAvailable: Boolean): Builder = { + this.isAvailable = isAvailable + this + } + + def setDb(db: String): Builder = { + this.db = db + this + } + + def build(): ListDwLayerAction = { + val action = new ListDwLayerAction + if (null != user) { + action.setUser(user) + } + if (null != db) { + action.setParameter("db", db); + } + action.setParameter("isAvailable", isAvailable) + action + } + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwModifierAction.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwModifierAction.scala new file mode 100644 index 000000000..a9b495c5c --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwModifierAction.scala @@ -0,0 +1,90 @@ +package com.webank.wedatasphere.warehouse.client.action + +import org.apache.linkis.httpclient.request.GetAction +import com.webank.wedatasphere.warehouse.client.DwAction + +class ListDwModifierAction extends GetAction with DwAction { + private var user: String = _ +// private var isAvailable: Boolean = _ +// private var theme: String = _ +// private var layer: String = _ + +// def setIsAvailable(isAvailable: Boolean): Unit = this.isAvailable = isAvailable +// +// def getIsAvailable: Boolean = this.isAvailable +// +// def setTheme(theme: String): Unit = this.theme = theme +// +// def getTheme: String = this.theme +// +// def setLayer(layer: String): Unit = this.layer = layer +// +// def getLayer: String = this.layer + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-warehouse", "modifiers", "all") +} + +object ListDwModifierAction { + def builder(): Builder = new Builder + + class Builder private[ListDwModifierAction]() { + private var user: String = _ + private var name: String = "" + private var layer: String = "" + private var theme: String = "" + private var isAvailable: Boolean = true + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setName(name: String): Builder = { + this.name = name + this + } + + def setLayer(layer: String): Builder = { + this.layer = layer + this + } + + def setTheme(theme: String): Builder = { + this.theme = theme + this + } + + def setIsAvailable(isAvailable: Boolean): Builder = { + this.isAvailable = isAvailable + this + } + + def build(): ListDwModifierAction = { + val action = new ListDwModifierAction +// action.setUser(user) +// action.setParameter("isAvailable", isAvailable) +// action.setParameter("typeName", name) +// action.setParameter("layer", layer) +// action.setParameter("theme", theme) + if (null != user) { + action.setUser(user) + } + action.setParameter("isAvailable", isAvailable) + if (null != name) { + action.setParameter("typeName", name) + } + if (null != layer) { + action.setParameter("layer", layer) + } + if (null != theme) { + action.setParameter("theme", theme) + } + action + } + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwStatisticalPeriodAction.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwStatisticalPeriodAction.scala new file mode 100644 index 000000000..db69c32bd --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwStatisticalPeriodAction.scala @@ -0,0 +1,73 @@ +package com.webank.wedatasphere.warehouse.client.action + +import org.apache.linkis.httpclient.request.GetAction +import com.webank.wedatasphere.warehouse.client.DwAction + +class ListDwStatisticalPeriodAction extends GetAction with DwAction { + private var user: String = _ +// private var isAvailable: Boolean = true +// def setIsAvailable(isAvailable: Boolean): Unit = this.isAvailable = isAvailable +// def getIsAvailable: Boolean = this.isAvailable + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-warehouse", "statistical_periods", "all") +} + +object ListDwStatisticalPeriodAction { + def builder(): Builder = new Builder + + class Builder private[ListDwStatisticalPeriodAction]() { + private var user: String = _ + private var name: String = "" + private var layer: String = "" + private var theme: String = "" + private var isAvailable: Boolean = true + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setName(name: String): Builder = { + this.name = name + this + } + + def setLayer(layer: String): Builder = { + this.layer = layer + this + } + + def setTheme(theme: String): Builder = { + this.theme = theme + this + } + + def setIsAvailable(isAvailable: Boolean): Builder = { + this.isAvailable = isAvailable + this + } + + def build(): ListDwStatisticalPeriodAction = { + val action = new ListDwStatisticalPeriodAction + if (null != user) { + action.setUser(user) + } + action.setParameter("isAvailable", isAvailable) + if (null != name) { + action.setParameter("name", name) + } + if (null != layer) { + action.setParameter("layer", layer) + } + if (null != theme) { + action.setParameter("theme", theme) + } + action + } + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwThemeDomainAction.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwThemeDomainAction.scala new file mode 100644 index 000000000..d040284fb --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/action/ListDwThemeDomainAction.scala @@ -0,0 +1,46 @@ +package com.webank.wedatasphere.warehouse.client.action + +import org.apache.linkis.httpclient.request.GetAction +import com.webank.wedatasphere.warehouse.client.DwAction + +class ListDwThemeDomainAction extends GetAction with DwAction { + private var user: String = _ +// private var isAvailable: Boolean = true +// def setIsAvailable(isAvailable: Boolean): Unit = this.isAvailable = isAvailable +// def getIsAvailable: Boolean = this.isAvailable + + override def setUser(user: String): Unit = this.user = user + + override def getUser: String = this.user + + override def suffixURLs: Array[String] = Array("data-warehouse", "themedomains", "all") +} + +object ListDwThemeDomainAction { + def builder(): Builder = new Builder + + class Builder private[ListDwThemeDomainAction]() { + private var user: String = _ + private var isAvailable: Boolean = true + + def setUser(user: String): Builder = { + this.user = user + this + } + + def setIsAvailable(isAvailable: Boolean): Builder = { + this.isAvailable = isAvailable + this + } + + def build(): ListDwThemeDomainAction = { + val action = new ListDwThemeDomainAction + if (null != user) { + action.setUser(user) + } + action.setParameter("isAvailable", isAvailable) + action + } + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListLayersResult.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListLayersResult.scala new file mode 100644 index 000000000..e66892d38 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListLayersResult.scala @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.warehouse.client.result + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.response.DWSResult +import com.webank.wedatasphere.warehouse.domain.DwLayerVO +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult(value = "/api/rest_j/v\\d+/data-warehouse/layers/all") +class ListLayersResult extends DWSResult { + @BeanProperty var list: java.util.List[java.util.Map[String, Any]] = _ + + def getAll: util.List[DwLayerVO] = { + import scala.collection.JavaConverters._ + list.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[DwLayerVO]) + }).asJava + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListModifiersResult.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListModifiersResult.scala new file mode 100644 index 000000000..aefeb646a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListModifiersResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.warehouse.client.result + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult +import com.webank.wedatasphere.warehouse.domain.DwModifierVO + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult(value = "/api/rest_j/v\\d+/data-warehouse/modifiers/all") +class ListModifiersResult extends DWSResult { + @BeanProperty var list: java.util.List[java.util.Map[String, Any]] = _ + + def getAll: util.List[DwModifierVO] = { + import scala.collection.JavaConverters._ + list.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[DwModifierVO]) + }).asJava + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListStatisticalPeriodsResult.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListStatisticalPeriodsResult.scala new file mode 100644 index 000000000..1d0f5df0f --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListStatisticalPeriodsResult.scala @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.warehouse.client.result + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult +import com.webank.wedatasphere.warehouse.domain.DwStatisticalPeriodVO + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult(value = "/api/rest_j/v\\d+/data-warehouse/statistical_periods/all") +class ListStatisticalPeriodsResult extends DWSResult { + @BeanProperty var list: java.util.List[java.util.Map[String, Any]] = _ + + def getAll: util.List[DwStatisticalPeriodVO] = { + import scala.collection.JavaConverters._ + list.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[DwStatisticalPeriodVO]) + }).asJava + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListThemeDomainsResult.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListThemeDomainsResult.scala new file mode 100644 index 000000000..8424265d0 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/main/scala/com/webank/wedatasphere/warehouse/client/result/ListThemeDomainsResult.scala @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.warehouse.client.result + +import org.apache.linkis.httpclient.dws.DWSHttpClient +import org.apache.linkis.httpclient.dws.annotation.DWSHttpMessageResult +import org.apache.linkis.httpclient.dws.response.DWSResult +import com.webank.wedatasphere.warehouse.domain.DwThemeDomainVO + +import java.util +import scala.beans.BeanProperty + +@DWSHttpMessageResult(value = "/api/rest_j/v\\d+/data-warehouse/themedomains/all") +class ListThemeDomainsResult extends DWSResult { + @BeanProperty var list: java.util.List[java.util.Map[String, Any]] = _ + + def getAll: util.List[DwThemeDomainVO] = { + import scala.collection.JavaConverters._ + list.asScala.map(x=>{ + val str = DWSHttpClient.jacksonJson.writeValueAsString(x) + DWSHttpClient.jacksonJson.readValue(str, classOf[DwThemeDomainVO]) + }).asJava + } + +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/java/com/webank/wedatasphere/warehouse/client/RemoteClientTest.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/java/com/webank/wedatasphere/warehouse/client/RemoteClientTest.java new file mode 100644 index 000000000..89717b913 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/java/com/webank/wedatasphere/warehouse/client/RemoteClientTest.java @@ -0,0 +1,51 @@ +package com.webank.wedatasphere.warehouse.client; + +import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy; +import org.apache.linkis.httpclient.dws.config.DWSClientConfig; +import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder; +import com.webank.wedatasphere.warehouse.client.action.ListDwLayerAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwModifierAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwStatisticalPeriodAction; +import com.webank.wedatasphere.warehouse.client.action.ListDwThemeDomainAction; +import com.webank.wedatasphere.warehouse.client.result.ListLayersResult; +import com.webank.wedatasphere.warehouse.client.result.ListModifiersResult; +import com.webank.wedatasphere.warehouse.client.result.ListStatisticalPeriodsResult; +import com.webank.wedatasphere.warehouse.client.result.ListThemeDomainsResult; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class RemoteClientTest { + + public static void main(String[] args) { + DWSClientConfig clientConfig = ((DWSClientConfigBuilder) (DWSClientConfigBuilder.newBuilder().addServerUrl("http://dss.shineweng.com:8088") + .connectionTimeout(30000).discoveryEnabled(true) + .discoveryFrequency(1, TimeUnit.MINUTES) + .loadbalancerEnabled(true).maxConnectionSize(5) + .retryEnabled(false).readTimeout(30000) + .setAuthenticationStrategy(new StaticAuthenticationStrategy()).setAuthTokenKey("hdfs") + .setAuthTokenValue("hdfs"))).setDWSVersion("v1").build(); + GovernanceDwRemoteClient governanceDwRemoteClient = new GovernanceDwRemoteClient(clientConfig); + + ListDwStatisticalPeriodAction action = new ListDwStatisticalPeriodAction.Builder().setLayer(null).setTheme(null).setUser("hdfs").setIsAvailable(false).build(); + ListStatisticalPeriodsResult listStatisticalPeriodsResult = governanceDwRemoteClient.listStatisticalPeriods(action); + System.out.println(listStatisticalPeriodsResult.getAll().size()); + + ListDwLayerAction listDwLayerAction = new ListDwLayerAction.Builder().setUser("hdfs").setIsAvailable(false).build(); + String url = listDwLayerAction.getURL(); + System.out.println(url); + ListLayersResult listLayersResult = governanceDwRemoteClient.listLayers(listDwLayerAction); + System.out.println(listLayersResult.getAll()); + + ListDwThemeDomainAction listDwThemeDomainAction = new ListDwThemeDomainAction.Builder().setUser("hdfs").setIsAvailable(false).build(); + ListThemeDomainsResult listThemeDomainsResult = governanceDwRemoteClient.listThemeDomains(listDwThemeDomainAction); + System.out.println(listThemeDomainsResult.getList().size()); + + ListDwModifierAction listDwModifierAction = new ListDwModifierAction.Builder().setUser("hdfs").setIsAvailable(true).build(); + ListModifiersResult listModifiersResult = governanceDwRemoteClient.listModifiers(listDwModifierAction); + System.out.println(listModifiersResult.getAll().size()); + + } + + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/scala/com/webank/wedatasphere/warehouse/client/DwLayerRemoteClientTest.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/scala/com/webank/wedatasphere/warehouse/client/DwLayerRemoteClientTest.scala new file mode 100644 index 000000000..18285736e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-client/src/test/scala/com/webank/wedatasphere/warehouse/client/DwLayerRemoteClientTest.scala @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.warehouse.client + +import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy +import org.apache.linkis.httpclient.dws.config.{DWSClientConfig, DWSClientConfigBuilder} +import com.webank.wedatasphere.warehouse.client.action.{ListDwLayerAction, ListDwModifierAction, ListDwThemeDomainAction} + +import java.util.concurrent.TimeUnit + +object DwLayerRemoteClientTest { + val serverUrl: String = s"http://192.168.0.120:9001" + val clientConfig: DWSClientConfig = DWSClientConfigBuilder.newBuilder() + .addServerUrl(serverUrl) + .connectionTimeout(30000L) + .discoveryEnabled(true) + .discoveryFrequency(1L, TimeUnit.MINUTES) + .loadbalancerEnabled(true) + .maxConnectionSize(5) + .retryEnabled(false) + .readTimeout(30000L) + .setAuthenticationStrategy(new StaticAuthenticationStrategy()) + .setAuthTokenKey("BML-AUTH") + .setAuthTokenValue("BML-AUTH") + .setDWSVersion("v1") + .build() + + val client = new GovernanceDwRemoteClient(clientConfig) + + def main(args: Array[String]): Unit = { + val action = new ListDwLayerAction + action.setUser("hdfs") + val result = client.listLayers(action) + println(result.getAll) + + val action1 = new ListDwThemeDomainAction + val result1 = client.listThemeDomains(action1) + println(result1.getAll) + + val action2 = new ListDwModifierAction + val result2 = client.listModifiers(action2) + println(result2.getAll) + + val action3 = new ListDwThemeDomainAction + val result3 = client.listThemeDomains(action3) + println(result3.getAll) + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/pom.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/pom.xml new file mode 100644 index 000000000..2dff0a698 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + dss-datawarehouse-design + com.webank.wedatasphere.dss + 1.1.0 + + + dss-data-warehouse-mybatis + jar + + + 8 + 8 + 3.4.1 + + + + + org.apache.linkis + linkis-module + provided + + + spring-jdbc + org.springframework + ${spring.version} + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.boot.starter.version} + + + spring-boot-starter + org.springframework.boot + + + spring-boot-autoconfigure + org.springframework.boot + + + spring-beans + org.springframework + + + spring-jdbc + org.springframework + + + + + org.projectlombok + lombok + provided + + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceConfig.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceConfig.java new file mode 100644 index 000000000..033fb8cff --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceConfig.java @@ -0,0 +1,76 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.linkis.mybatis; + +import org.apache.linkis.common.utils.JavaLog; +import org.apache.linkis.mybatis.conf.MybatisConfiguration; +import org.apache.commons.dbcp.BasicDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +@Configuration +@ConfigurationProperties +public class DataSourceConfig extends JavaLog { + + private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class); + + @Bean(name="dataSource", destroyMethod = "close") + @ConditionalOnMissingBean + public DataSource dataSource(){ + String dbUrl = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_URL.getValue(); + String username = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_USERNAME.getValue(); + String password = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_PASSWORD.getValue(); + String driverClassName = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_DRIVER_CLASS_NAME.getValue(); + int initialSize = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_INITIALSIZE.getValue(); + int minIdle = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_MINIDLE.getValue(); + int maxActive = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_MAXACTIVE.getValue(); + int maxWait = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_MAXWAIT.getValue(); + int timeBetweenEvictionRunsMillis = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_TBERM.getValue(); + int minEvictableIdleTimeMillis = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_MEITM.getValue(); + String validationQuery = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_VALIDATIONQUERY.getValue(); + boolean testWhileIdle = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_TESTWHILEIDLE.getValue(); + boolean testOnBorrow = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_TESTONBORROW.getValue(); + boolean testOnReturn = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_TESTONRETURN.getValue(); + boolean poolPreparedStatements = MybatisConfiguration.BDP_SERVER_MYBATIS_DATASOURCE_POOLPREPAREDSTATEMENTS.getValue(); + BasicDataSource datasource = new BasicDataSource(); + info("Database connection address information(数据库连接地址信息)=" + dbUrl); + datasource.setUrl(dbUrl); + datasource.setUsername(username); + datasource.setPassword(password); + datasource.setDriverClassName(driverClassName); + datasource.setInitialSize(initialSize); + datasource.setMinIdle(minIdle); + datasource.setMaxActive(maxActive); + datasource.setMaxWait(maxWait); + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setValidationQuery(validationQuery); + datasource.setTestWhileIdle(testWhileIdle); + datasource.setTestOnBorrow(testOnBorrow); + datasource.setTestOnReturn(testOnReturn); + datasource.setPoolPreparedStatements(poolPreparedStatements); + datasource.setDefaultAutoCommit(false); + return datasource; + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MyBatisMapperScannerConfig.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MyBatisMapperScannerConfig.java new file mode 100644 index 000000000..804c562b6 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MyBatisMapperScannerConfig.java @@ -0,0 +1,39 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.linkis.mybatis; + +import org.apache.linkis.mybatis.conf.MybatisConfiguration; +import org.mybatis.spring.mapper.MapperScannerConfigurer; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Configuration +@AutoConfigureAfter(MybatisConfigurationFactory.class) +public class MyBatisMapperScannerConfig { + @Bean + public MapperScannerConfigurer mapperScannerConfigurer() { + MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); + mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); + //Each table corresponds to the XXMapper.java interface type Java file + //每张表对应的XXMapper.java interface类型的Java文件 + mapperScannerConfigurer.setBasePackage(MybatisConfiguration.BDP_SERVER_MYBATIS_BASEPACKAGE.getValue()); + return mapperScannerConfigurer; + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MybatisConfigurationFactory.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MybatisConfigurationFactory.java new file mode 100644 index 000000000..3f05b2d31 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/MybatisConfigurationFactory.java @@ -0,0 +1,130 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.linkis.mybatis; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import org.apache.linkis.common.utils.JavaLog; +import org.apache.linkis.mybatis.conf.MybatisConfiguration; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.plugin.Interceptor; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + + +@Configuration +@ConfigurationProperties +@AutoConfigureAfter(DataSourceConfig.class) +@EnableTransactionManagement +public class MybatisConfigurationFactory extends JavaLog { + + @Autowired + private DataSource dataSource; + // Provide SqlSeesion(提供SqlSeesion) + @Bean(name = "sqlSessionFactory") + @Primary + public MybatisSqlSessionFactoryBean sqlSessionFactory(ObjectProvider interceptorsProvider) { + String typeAliasesPackage = MybatisConfiguration.BDP_SERVER_MYBATIS_TYPEALIASESPACKAGE.getValue(); + //Configure the mapper scan to find all mapper.xml mapping files(配置mapper的扫描,找到所有的mapper.xml映射文件) + String mapperLocations = MybatisConfiguration.BDP_SERVER_MYBATIS_MAPPER_LOCATIONS.getValue(); + //Load the global configuration file(加载全局的配置文件) + String configLocation = MybatisConfiguration.BDP_SERVER_MYBATIS_CONFIGLOCATION.getValue(); + try { + MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); + sessionFactoryBean.setDataSource(dataSource); + + info("Mybatis typeAliasesPackage=" + typeAliasesPackage); + info("Mybatis mapperLocations=" + mapperLocations); + info("Mybatis configLocation=" + configLocation); + // Read configuration(读取配置) + sessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage); + + //Set the location of the mapper.xml file(设置mapper.xml文件所在位置) + if(StringUtils.isNotBlank(mapperLocations)) { + String[] mapperArray = mapperLocations.split(","); + List resources = new ArrayList<>(); + for(String mapperLocation : mapperArray){ + CollectionUtils.addAll(resources,new PathMatchingResourcePatternResolver().getResources(mapperLocation)); + } + sessionFactoryBean.setMapperLocations(resources.toArray(new Resource[0])); + } + /* Resource[] resources = new PathMatchingResourcePatternResolver().getResources(mapperLocations); + sessionFactoryBean.setMapperLocations(resources);*/ +// Set the location of the mybatis-config.xml configuration file(设置mybatis-config.xml配置文件位置) + sessionFactoryBean.setConfigLocation(new DefaultResourceLoader().getResource(configLocation)); + + sessionFactoryBean.setPlugins(interceptorsProvider.getIfAvailable()); + + return sessionFactoryBean; + } catch (IOException e) { + error("mybatis resolver mapper*xml is error",e); + return null; + } catch (Exception e) { + error("mybatis sqlSessionFactoryBean create error",e); + return null; + } + } + + @Bean + @Primary + public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + + //Transaction management(事务管理) + @Bean + @Primary + public PlatformTransactionManager annotationDrivenTransactionManager() { + return new DataSourceTransactionManager(dataSource); + } +// Log the log to be executed (if you don't want to intercept it, comment out this method) +// 将要执行的sql进行日志打印(不想拦截,就把这方法注释掉) +// @Bean +// public SqlPrintInterceptor sqlPrintInterceptor(){ +// return new SqlPrintInterceptor(); +// } + + // 3.4.1 + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java new file mode 100644 index 000000000..43b91c5d8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java @@ -0,0 +1,43 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.linkis.mybatis.conf; + +import org.apache.linkis.common.conf.CommonVars; + +public class MybatisConfiguration { + //Mybatis configuration + public static final CommonVars BDP_SERVER_MYBATIS_MAPPER_LOCATIONS = CommonVars.apply("wds.linkis.server.mybatis.mapperLocations", ""); + public static final CommonVars BDP_SERVER_MYBATIS_TYPEALIASESPACKAGE = CommonVars.apply("wds.linkis.server.mybatis.typeAliasesPackage", ""); + public static final CommonVars BDP_SERVER_MYBATIS_CONFIGLOCATION = CommonVars.apply("wds.linkis.server.mybatis.configLocation", "classpath:/mybatis-config.xml"); + public static final CommonVars BDP_SERVER_MYBATIS_BASEPACKAGE = CommonVars.apply("wds.linkis.server.mybatis.BasePackage", ""); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_URL = CommonVars.apply("wds.linkis.server.mybatis.datasource.url", ""); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_USERNAME = CommonVars.apply("wds.linkis.server.mybatis.datasource.username", ""); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_PASSWORD = CommonVars.apply("wds.linkis.server.mybatis.datasource.password", ""); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_DRIVER_CLASS_NAME = CommonVars.apply("wds.linkis.server.mybatis.datasource.driver-class-name", "com.mysql.jdbc.Driver"); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_INITIALSIZE = CommonVars.apply("wds.linkis.server.mybatis.datasource.initialSize", new Integer(1)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_MINIDLE = CommonVars.apply("wds.linkis.server.mybatis.datasource.minIdle", new Integer(1)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_MAXACTIVE = CommonVars.apply("wds.linkis.server.mybatis.datasource.maxActive", new Integer(20)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_MAXWAIT = CommonVars.apply("wds.linkis.server.mybatis.datasource.maxWait", new Integer(6000)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_TBERM = CommonVars.apply("wds.linkis.server.mybatis.datasource.timeBetweenEvictionRunsMillis", new Integer(60000)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_MEITM = CommonVars.apply("wds.linkis.server.mybatis.datasource.minEvictableIdleTimeMillis", new Integer(300000)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_VALIDATIONQUERY = CommonVars.apply("wds.linkis.server.mybatis.datasource.validationQuery", "SELECT 1"); + + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_TESTWHILEIDLE = CommonVars.apply("wds.linkis.server.mybatis.datasource.testWhileIdle", new Boolean(true)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_TESTONBORROW = CommonVars.apply("wds.linkis.server.mybatis.datasource.testOnBorrow", new Boolean(false)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_TESTONRETURN = CommonVars.apply("wds.linkis.server.mybatis.datasource.testOnReturn", new Boolean(false)); + public static final CommonVars BDP_SERVER_MYBATIS_DATASOURCE_POOLPREPAREDSTATEMENTS = CommonVars.apply("wds.linkis.server.mybatis.datasource.poolPreparedStatements", new Boolean(true)); +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/datawarehouse.sql b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/datawarehouse.sql new file mode 100644 index 000000000..1818a6371 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/datawarehouse.sql @@ -0,0 +1,224 @@ + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +SET NAMES utf8mb4; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE='NO_AUTO_VALUE_ON_ZERO', SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + +# 转储表 dss_datawarehouse_layer +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_layer`; + +CREATE TABLE `dss_datawarehouse_layer` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `preset` bit(1) NOT NULL DEFAULT b'0', + `sort` int(4) NOT NULL DEFAULT '1', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `dbs` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '如果为空代表所有的库', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +LOCK TABLES `dss_datawarehouse_layer` WRITE; +/*!40000 ALTER TABLE `dss_datawarehouse_layer` DISABLE KEYS */; + +INSERT INTO `dss_datawarehouse_layer` (`id`, `name`, `en_name`, `owner`, `principal_name`, `is_available`, `preset`, `sort`, `description`, `dbs`, `create_time`, `update_time`, `status`, `lock_version`) +VALUES + (1,'原数据层(ODS)','ods','admin','所有角色',b'1',b'1',10,'由业务系统同步到数据仓库的原始数据,一般不经过加工','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1), + (2,'明细层(DWD)','dwd','admin','所有角色',b'1',b'1',20,'从ods层经过ETL得到的明细数据,表示具体的事实','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1), + (3,'汇总层(DWS)','dws','admin','所有角色',b'1',b'1',30,'由明细数据经过汇总得到的数据,主要由统计维度和指标构成','ALL','2021-09-01 00:00:00','2021-09-01 00:00:00',b'1',1); + +/*!40000 ALTER TABLE `dss_datawarehouse_layer` ENABLE KEYS */; +UNLOCK TABLES; + + +# 转储表 dss_datawarehouse_layer_generalize_rule +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_layer_generalize_rule`; + +CREATE TABLE `dss_datawarehouse_layer_generalize_rule` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `layer_id` bigint(20) NOT NULL, + `regex` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '自动归纳表达式', + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `en_identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_modifier +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_modifier`; + +CREATE TABLE `dss_datawarehouse_modifier` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_type` varchar(64) COLLATE utf8_bin NOT NULL, + `theme_domain_id` bigint(20) DEFAULT NULL, + `layer_id` bigint(20) DEFAULT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_modifier_list +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_modifier_list`; + +CREATE TABLE `dss_datawarehouse_modifier_list` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_statistical_period +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_statistical_period`; + +CREATE TABLE `dss_datawarehouse_statistical_period` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `layer_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `start_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `end_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_table_rule +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_table_rule`; + +CREATE TABLE `dss_datawarehouse_table_rule` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` bigint(20) NOT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `table_name_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `table_props_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `partation_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `column_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_theme +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_theme`; + +CREATE TABLE `dss_datawarehouse_theme` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `parent_theme_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '默认为空,如果不为空则指向父主题', + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + + + +# 转储表 dss_datawarehouse_theme_domain +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `dss_datawarehouse_theme_domain`; + +CREATE TABLE `dss_datawarehouse_theme_domain` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +LOCK TABLES `dss_datawarehouse_theme_domain` WRITE; +/*!40000 ALTER TABLE `dss_datawarehouse_theme_domain` DISABLE KEYS */; + +INSERT INTO `dss_datawarehouse_theme_domain` (`id`, `name`, `en_name`, `owner`, `principal_name`, `is_available`, `sort`, `description`, `create_time`, `update_time`, `status`, `lock_version`) +VALUES + (1,'主题','英文名','负责人','New York',b'1',1,'描述','2021-09-28 13:18:48','2021-09-28 13:18:48',b'1',1); + +/*!40000 ALTER TABLE `dss_datawarehouse_theme_domain` ENABLE KEYS */; +UNLOCK TABLES; + + + +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/ddl.sql b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/ddl.sql new file mode 100644 index 000000000..1cfb217f9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/ddl.sql @@ -0,0 +1,180 @@ +-- governance.dss_datawarehouse_layer definition + +DROP TABLE IF EXISTS `dss_datawarehouse_layer`; +CREATE TABLE `dss_datawarehouse_layer` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `preset` bit(1) NOT NULL DEFAULT b'0', + `sort` int(4) NOT NULL DEFAULT '1', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `dbs` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '如果为空代表所有的库', + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 44 + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + + +-- governance.dss_datawarehouse_layer_generalize_rule definition +DROP TABLE IF EXISTS `dss_datawarehouse_layer_generalize_rule`; +CREATE TABLE `dss_datawarehouse_layer_generalize_rule` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `layer_id` bigint(20) NOT NULL, + `regex` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '自动归纳表达式', + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `en_identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + +-- governance.dss_datawarehouse_modifier definition +DROP TABLE IF EXISTS `dss_datawarehouse_modifier`; +CREATE TABLE `dss_datawarehouse_modifier` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_type` varchar(64) COLLATE utf8_bin NOT NULL, + `modifier_type_en` varchar(128) COLLATE utf8_bin DEFAULT NULL, + `theme_domain_id` bigint(20) DEFAULT NULL, + `layer_id` bigint(20) DEFAULT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `theme_area_en` varchar(100) COLLATE utf8_bin DEFAULT NULL, + `layer_area_en` varchar(100) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 25 + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + +-- governance.dss_datawarehouse_modifier_list definition +DROP TABLE IF EXISTS `dss_datawarehouse_modifier_list`; +CREATE TABLE `dss_datawarehouse_modifier_list` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `modifier_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `identifier` varchar(255) COLLATE utf8_bin NOT NULL, + `formula` varchar(255) COLLATE utf8_bin NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 37 + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + +-- governance.dss_datawarehouse_statistical_period definition +DROP TABLE IF EXISTS `dss_datawarehouse_statistical_period`; +CREATE TABLE `dss_datawarehouse_statistical_period` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `layer_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `start_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `end_time_formula` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 23 + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + +-- governance.dss_datawarehouse_table_rule definition +DROP TABLE IF EXISTS `dss_datawarehouse_table_rule`; +CREATE TABLE `dss_datawarehouse_table_rule` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` bigint(20) NOT NULL, + `theme_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names', + `layer_area` varchar(1000) COLLATE utf8_bin NOT NULL COMMENT '空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names', + `table_name_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `table_props_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `partation_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `column_rule` varchar(1000) COLLATE utf8_bin NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + + +-- governance.dss_datawarehouse_theme definition +DROP TABLE IF EXISTS `dss_datawarehouse_theme`; +CREATE TABLE `dss_datawarehouse_theme` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `theme_domain_id` bigint(20) NOT NULL, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `parent_theme_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '默认为空,如果不为空则指向父主题', + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; + +-- governance.dss_datawarehouse_theme_domain definition +DROP TABLE IF EXISTS `dss_datawarehouse_theme_domain`; +CREATE TABLE `dss_datawarehouse_theme_domain` +( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_bin NOT NULL, + `en_name` varchar(255) COLLATE utf8_bin NOT NULL, + `owner` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `principal_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '授权的名字:userName、roleName', + `is_available` bit(1) NOT NULL, + `sort` int(4) NOT NULL, + `description` varchar(255) COLLATE utf8_bin DEFAULT NULL, + `create_time` datetime NOT NULL, + `update_time` datetime NOT NULL, + `status` bit(1) NOT NULL DEFAULT b'1', + `lock_version` bigint(20) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 56 + DEFAULT CHARSET = utf8 + COLLATE = utf8_bin; \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/dml.sql b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/dml.sql new file mode 100644 index 000000000..65493a39d --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/db/dml.sql @@ -0,0 +1,4 @@ +INSERT INTO `dss_datawarehouse_layer` (name,en_name,owner,principal_name,is_available,preset,sort,description,dbs,create_time,update_time,status,lock_version) VALUES +('原数据层(ODS)','ods','admin','ALL',1,1,10,'由业务系统同步到数据仓库的原始数据,一般不经过加工','ALL','2021-09-01 00:00:00','2021-12-08 11:04:38',1,23), +('明细层(DWD)','dwd','admin','ALL',1,1,20,'从ods层经过ETL得到的明细数据,表示具体的事实','ALL','2021-09-01 00:00:00','2021-11-09 15:44:47',1,8), +('汇总层(DWS)','dws','admin','ALL',1,1,30,'由明细数据经过汇总得到的数据,主要由统计维度和指标构成','ALL','2021-09-01 00:00:00','2021-11-09 15:44:47',1,9); \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/pom.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/pom.xml similarity index 80% rename from dss-apps/dss-data-governance/dss-data-governance-server/pom.xml rename to dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/pom.xml index 325560a69..cf3329fd8 100644 --- a/dss-apps/dss-data-governance/dss-data-governance-server/pom.xml +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/pom.xml @@ -2,31 +2,33 @@ + 4.0.0 - dss + dss-datawarehouse-design com.webank.wedatasphere.dss 1.1.0 - ../../../pom.xml - 4.0.0 - dss-data-governance-server + dss-data-warehouse-server + jar - 2.1.0 + 8 + 8 + + com.webank.wedatasphere.dss - dss-data-asset-server - ${dss.version} + dss-data-warehouse-service com.webank.wedatasphere.dss - dss-data-classification-server + dss-common ${dss.version} + provided - org.apache.linkis linkis-module @@ -44,9 +46,8 @@ - com.webank.wedatasphere.dss - dss-common - ${dss.version} + org.projectlombok + lombok provided @@ -111,16 +112,14 @@ **/*.xml - - - - - - - - + + + + + + + + - - \ No newline at end of file diff --git a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/assembly/distribution.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/assembly/distribution.xml similarity index 59% rename from dss-apps/dss-data-governance/dss-data-classification-server/src/main/assembly/distribution.xml rename to dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/assembly/distribution.xml index 46d83d32f..1080803d7 100644 --- a/dss-apps/dss-data-governance/dss-data-classification-server/src/main/assembly/distribution.xml +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/assembly/distribution.xml @@ -1,31 +1,30 @@ - dss-data-asset-server + dss-data-warehouse-server dir true - dss-data-asset-server + dss-data-warehouse-server @@ -40,7 +39,5 @@ - - diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/MybatisPlusConfig.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/MybatisPlusConfig.java new file mode 100644 index 000000000..61dd65abb --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/MybatisPlusConfig.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.warehouse.configuration; + +import com.webank.wedatasphere.warehouse.dao.interceptor.DssWorkspaceNameAutoExtractQueryInterceptor; +import com.webank.wedatasphere.warehouse.dao.interceptor.DssWorkspaceNameAutoTransformUpdateInteceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +@Configuration +public class MybatisPlusConfig { + + @Bean + public DssWorkspaceNameAutoTransformUpdateInteceptor dssWorkspaceNameAutoTransformUpdateInteceptor( + DataSource dataSource + ) { + return new DssWorkspaceNameAutoTransformUpdateInteceptor(dataSource); + } + + @Bean + public DssWorkspaceNameAutoExtractQueryInterceptor dssWorkspaceNameAutoExtractQueryInterceptor( + DataSource dataSource + ) { + return new DssWorkspaceNameAutoExtractQueryInterceptor(dataSource); + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/WebMvcConfig.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/WebMvcConfig.java new file mode 100644 index 000000000..e53eb7240 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/configuration/WebMvcConfig.java @@ -0,0 +1,31 @@ +package com.webank.wedatasphere.warehouse.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver; + +import java.util.Locale; + +@Configuration +@EnableWebMvc +public class WebMvcConfig implements WebMvcConfigurer { + @Bean(name = "messageSource") + public ResourceBundleMessageSource resourceBundleMessageSource() { + ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource(); + resourceBundleMessageSource.setBasename("i18n/messages"); + resourceBundleMessageSource.setDefaultEncoding("UTF-8"); + resourceBundleMessageSource.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); + return resourceBundleMessageSource; + } + + @Bean + public LocaleResolver localeResolver() { + AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver(); + localeResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); + return localeResolver; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwDsRestfulApi.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwDsRestfulApi.java new file mode 100644 index 000000000..128af7d55 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwDsRestfulApi.java @@ -0,0 +1,47 @@ +package com.webank.wedatasphere.warehouse.restful; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.service.DwDsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; + +@RequestMapping(path = "/data-warehouse", produces = {"application/json"}) +@RestController +public class DwDsRestfulApi { + private static final String DEFAULT_LIMIT = "25"; + private static final String DEFAULT_OFFSET = "0"; + private final DwDsService dwDsService; + + + + @Autowired + public DwDsRestfulApi(DwDsService dwDsService) { + this.dwDsService = dwDsService; + } + + // list all hive dbs +// @RequestMapping(value = "/dbs/hive",method = RequestMethod.GET) +// public Message getAllHiveDbs(HttpServletRequest request) throws Exception { +// Message message = this.dwDsService.getAllHiveDbs(request); +// return message; +// } + @RequestMapping(value = "/dbs/hive",method = RequestMethod.GET) + public Message getAllHiveDbs(HttpServletRequest request, @RequestParam(value="limit",defaultValue = DEFAULT_LIMIT) int limit,@RequestParam(value="offset",defaultValue = DEFAULT_OFFSET) int offset) throws Exception { + Message message = this.dwDsService.getAllHiveDbs(request,limit,offset); + return message; + } + + + @RequestMapping(value = "/workspace/{id}/principal_users",method = RequestMethod.GET) + public Message getAllAvailableUsers(HttpServletRequest request, @PathVariable(value = "id") String id) throws Exception { + Message message = this.dwDsService.getPrincipalUsers(request, id); + return message; + } + + @RequestMapping(value = "/workspace/{id}/principal_roles",method = RequestMethod.GET) + public Message getAllAvailableRoles(HttpServletRequest request, @PathVariable(value = "id") String id) throws Exception { + Message message = this.dwDsService.getPrincipalRoles(request, id); + return message; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwLayerRestfulApi.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwLayerRestfulApi.java new file mode 100644 index 000000000..41c080669 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwLayerRestfulApi.java @@ -0,0 +1,114 @@ +package com.webank.wedatasphere.warehouse.restful; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.DwLayerCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerUpdateCommand; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwLayerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +@RequestMapping(path = "/data-warehouse", produces = {"application/json"}) +@RestController +public class DwLayerRestfulApi { + + private final DwLayerService dwLayerService; + + @Autowired + public DwLayerRestfulApi(DwLayerService dwLayerService) { + this.dwLayerService = dwLayerService; + } + + // list all preset layers + @RequestMapping(value = "/layers/preset",method = RequestMethod.GET) + public Message getAllPresetLayers(HttpServletRequest request) throws DwException { + Message message = this.dwLayerService.getAllPresetLayers(request); + return message; + } + + @RequestMapping(value = "/layers/all",method = RequestMethod.GET) + public Message getAllLayers(HttpServletRequest request, @RequestParam(value = "isAvailable",required = false) Boolean isAvailable, @RequestParam(value = "db",required = false) String db) throws DwException { + Message message = this.dwLayerService.getAllLayers(request, isAvailable, db); + return message; + } + + // query paged custom layers + @RequestMapping(value = "/layers/custom",method = RequestMethod.GET) + public Message queryPagedCustomLayers( + HttpServletRequest request, + @RequestParam(value = "page",required = false) Integer page, + @RequestParam(value = "size",required = false) Integer size, + @RequestParam(value = "name",required = false) String name, + @RequestParam(value = "enabled",required = false) Boolean enabled + )throws DwException { + final DwLayerQueryCommand command = new DwLayerQueryCommand(); + command.setName(name); + command.setEnabled(enabled); + command.setPage(page); + command.setSize(size); + Message message = this.dwLayerService.queryPagedCustomLayers(request, command); + return message; + } + + // create custom layer + @RequestMapping(value = "/layers/custom",method = RequestMethod.POST) + public Message createDwCustomLayer(HttpServletRequest request, @RequestBody DwLayerCreateCommand command) throws DwException { + Message message = this.dwLayerService.createDwCustomLayer(request, command); + return message; + } + + // get layer by id + @RequestMapping(value = "/layers/{id}",method = RequestMethod.GET) + public Message getLayerById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwLayerService.getLayerById(request, id); + return message; + } + + // delete layer + @RequestMapping(value = "/layers/{id}",method = RequestMethod.DELETE) + public Message deleteById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwLayerService.deleteById(request, id); + return message; + } + + // update layer + @RequestMapping(value = "/layers/{id}",method = RequestMethod.PUT) + public Message update( + HttpServletRequest request, + @PathVariable("id") Long id, + @RequestBody DwLayerUpdateCommand command + ) throws DwException { + command.setId(id); + Message message = this.dwLayerService.update(request, command); + return message; + } + + // enable layer + @RequestMapping(value = "/layers/{id}/enable",method = RequestMethod.PUT) + public Message enable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwLayerService.enable(request, id); + return message; + } + + // disable layer + @RequestMapping(value = "/layers/{id}/disable",method = RequestMethod.PUT) + public Message disable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwLayerService.disable(request, id); + return message; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwModifierRestfulApi.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwModifierRestfulApi.java new file mode 100644 index 000000000..3e3baa419 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwModifierRestfulApi.java @@ -0,0 +1,119 @@ +package com.webank.wedatasphere.warehouse.restful; + +import com.google.common.base.Strings; +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.*; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwModifierService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +@RequestMapping(path = "/data-warehouse", produces = {"application/json"}) +@RestController +public class DwModifierRestfulApi { + + private final DwModifierService dwModifierService; + + @Autowired + public DwModifierRestfulApi(DwModifierService dwModifierService) { + this.dwModifierService = dwModifierService; + } + + @RequestMapping(value = "/modifiers/all",method = RequestMethod.GET) + public Message queryAllModifiers( + HttpServletRequest request, + @RequestParam(value = "typeName",required = false) String typeName, + @RequestParam(value = "isAvailable",required = false) Boolean isAvailable, + @RequestParam(value = "theme",required = false) String theme, + @RequestParam(value = "layer",required = false) String layer + )throws DwException { + final DwModifierQueryCommand command = new DwModifierQueryCommand(); + command.setName(typeName); + command.setEnabled(isAvailable); + command.setTheme(theme); + command.setLayer(layer); + Message message = this.dwModifierService.queryAllModifiers(request, command); + return message; + } + + // query paged modifiers + @RequestMapping(value = "/modifiers",method = RequestMethod.GET) + public Message queryPagedDecorations( + HttpServletRequest request, + @RequestParam(value="page",required = false) Integer page, + @RequestParam(value="size",required = false) Integer size, + @RequestParam(value = "name",required = false) String typeName, + @RequestParam(value = "enabled",required = false) String enabled + )throws DwException { + final DwModifierQueryCommand command = new DwModifierQueryCommand(); + command.setName(typeName); + command.setPage(page); + command.setSize(size); + if (!Strings.isNullOrEmpty(enabled)) { + command.setEnabled(Boolean.parseBoolean(enabled)); + } + Message message = this.dwModifierService.queryPage(request, command); + return message; + } + + // create dw decoration word + @RequestMapping(value = "/modifiers",method = RequestMethod.POST) + public Message create(HttpServletRequest request,@RequestBody DwModifierCreateCommand command) throws DwException { + Message message = this.dwModifierService.create(request, command); + return message; + } + + // fetch one decoration details by id + @RequestMapping(value = "/modifiers/{id}",method = RequestMethod.GET) + public Message getById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwModifierService.getById(request, id); + return message; + } + + // remove decoration logic + @RequestMapping(value = "/modifiers/{id}",method = RequestMethod.DELETE) + public Message deleteById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwModifierService.deleteById(request, id); + return message; + } + + // update + @RequestMapping(value = "/modifiers/{id}",method = RequestMethod.PUT) + public Message update( + HttpServletRequest request, + @PathVariable("id") Long id, + @RequestBody DwModifierUpdateCommand command + ) throws DwException { + command.setId(id); + Message message = this.dwModifierService.update(request, command); + return message; + } + + // enable modifier + @RequestMapping(value = "/modifiers/{id}/enable",method = RequestMethod.PUT) + public Message enable( + HttpServletRequest request, + @RequestParam("id") Long id + ) throws DwException { + Message message = this.dwModifierService.enable(request, id); + return message; + } + + // disable modifier + @RequestMapping(value = "/modifiers/{id}/disable",method = RequestMethod.PUT) + public Message disable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwModifierService.disable(request, id); + return message; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwStatisticalPeriodRestfulApi.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwStatisticalPeriodRestfulApi.java new file mode 100644 index 000000000..7e776b9d9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwStatisticalPeriodRestfulApi.java @@ -0,0 +1,120 @@ +package com.webank.wedatasphere.warehouse.restful; + +import com.google.common.base.Strings; +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.*; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwStatisticalPeriodService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +@RequestMapping(path = "/data-warehouse", produces = {"application/json"}) +@RestController +public class DwStatisticalPeriodRestfulApi { + + private final DwStatisticalPeriodService dwStatisticalPeriodService; + + @Autowired + public DwStatisticalPeriodRestfulApi(final DwStatisticalPeriodService dwStatisticalPeriodService) { + this.dwStatisticalPeriodService = dwStatisticalPeriodService; + } + + @RequestMapping(value = "/statistical_periods/all",method = RequestMethod.GET) + public Message queryAll( + HttpServletRequest request, + @RequestParam(value="name",required = false) String name, + @RequestParam(value = "isAvailable",required = false) Boolean isAvailable, + @RequestParam(value = "theme",required = false) String theme, + @RequestParam(value = "layer",required = false) String layer + )throws DwException { + final DwStatisticalPeriodQueryCommand command = new DwStatisticalPeriodQueryCommand(); + command.setName(name); + command.setEnabled(isAvailable); + command.setTheme(theme); + command.setLayer(layer); + Message message = this.dwStatisticalPeriodService.queryAll(request, command); + return message; + } + + // query paged statistical periods + @RequestMapping(value = "/statistical_periods",method = RequestMethod.GET) + public Message queryPagedDecorations( + HttpServletRequest request, + @RequestParam(value="page",required = false) Integer page, + @RequestParam(value="size",required = false) Integer size, + @RequestParam(value="name",required = false) String name, + @RequestParam(value = "enabled",required = false) String enabled + )throws DwException { + final DwStatisticalPeriodQueryCommand command = new DwStatisticalPeriodQueryCommand(); + command.setName(name); + command.setPage(page); + command.setSize(size); + if (!Strings.isNullOrEmpty(enabled)) { + command.setEnabled(Boolean.parseBoolean(enabled)); + } + Message message = this.dwStatisticalPeriodService.queryPage(request, command); + return message; + } + + // create dw statistical_periods + @RequestMapping(value = "/statistical_periods",method = RequestMethod.POST) + public Message create(HttpServletRequest request, @RequestBody DwStatisticalPeriodCreateCommand command) throws DwException { + Message message = this.dwStatisticalPeriodService.create(request, command); + return message; + } + + // fetch one statistical_periods details by id + @RequestMapping(value = "/statistical_periods/{id}",method = RequestMethod.GET) + public Message getById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwStatisticalPeriodService.getById(request, id); + return message; + } + + // remove statistical_periods logic + @RequestMapping(value = "/statistical_periods/{id}",method = RequestMethod.DELETE) + public Message deleteById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwStatisticalPeriodService.deleteById(request, id); + return message; + } + + // update statistical_periods + @RequestMapping(value = "/statistical_periods/{id}",method = RequestMethod.PUT) + public Message update( + HttpServletRequest request, + @PathVariable("id") Long id, + @RequestBody DwStatisticalPeriodUpdateCommand command + ) throws DwException { + command.setId(id); + Message message = this.dwStatisticalPeriodService.update(request, command); + return message; + } + + + // enable statistical_periods + @RequestMapping(value = "/statistical_periods/{id}/enable",method = RequestMethod.PUT) + public Message enable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwStatisticalPeriodService.enable(request, id); + return message; + } + + // disable statistical_periods + @RequestMapping(value = "/statistical_periods/{id}/disable",method = RequestMethod.PUT) + public Message disable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwStatisticalPeriodService.disable(request, id); + return message; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwThemeDomainRestfulApi.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwThemeDomainRestfulApi.java new file mode 100644 index 000000000..8e8bcef99 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/java/com/webank/wedatasphere/warehouse/restful/DwThemeDomainRestfulApi.java @@ -0,0 +1,112 @@ +package com.webank.wedatasphere.warehouse.restful; +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.*; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwThemeDomainService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + +@RequestMapping(path = "/data-warehouse", produces = {"application/json"}) +@RestController +public class DwThemeDomainRestfulApi { + + private final DwThemeDomainService dwThemeDomainService; + + @Autowired + public DwThemeDomainRestfulApi(DwThemeDomainService dwThemeDomainService) { + this.dwThemeDomainService = dwThemeDomainService; + } + + // query paged theme domains + @RequestMapping(value = "/themedomains",method = RequestMethod.GET) + public Message queryPagedCustomLayers( + HttpServletRequest request, + @RequestParam(value = "page",required = false) Integer page, + @RequestParam(value="size",required = false) Integer size, + @RequestParam(value="name",required = false) String name, + @RequestParam(value = "enabled",required = false) Boolean enabled + )throws DwException { + final DwThemeDomainQueryCommand command = new DwThemeDomainQueryCommand(); + command.setName(name); + command.setPage(page); + command.setSize(size); + command.setEnabled(enabled); + Message message = this.dwThemeDomainService.queryPage(request, command); + return message; + } + + @RequestMapping(value = "/themedomains/all",method = RequestMethod.GET) + public Message queryAllThemeDomains( + HttpServletRequest request, + @RequestParam(value="name",required = false) String name, + @RequestParam(value = "isAvailable",required = false) Boolean isAvailable + )throws DwException { + final DwThemeDomainQueryCommand command = new DwThemeDomainQueryCommand(); + command.setName(name); + command.setEnabled(isAvailable); + Message message = this.dwThemeDomainService.queryAllThemeDomains(request, command); + return message; + } + + // create theme domain + @RequestMapping(value = "/themedomains",method = RequestMethod.POST) + public Message createDwCustomLayer(HttpServletRequest request, @RequestBody DwThemeDomainCreateCommand command) throws DwException { + Message message = this.dwThemeDomainService.create(request, command); + return message; + } + + // get theme domain by id + @RequestMapping(value = "/themedomains/{id}",method = RequestMethod.GET) + public Message getLayerById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwThemeDomainService.getById(request, id); + return message; + } + + // delete theme domain + @RequestMapping(value = "/themedomains/{id}",method = RequestMethod.DELETE) + public Message deleteById( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwThemeDomainService.deleteById(request, id); + return message; + } + + // update theme domain + @RequestMapping(value = "/themedomains/{id}",method = RequestMethod.PUT) + public Message update( + HttpServletRequest request, + @PathVariable("id") Long id, + @RequestBody DwThemeDomainUpdateCommand command + ) throws DwException { + command.setId(id); + Message message = this.dwThemeDomainService.update(request, command); + return message; + } + + // enable theme domain + @RequestMapping(value = "/themedomains/{id}/enable",method = RequestMethod.PUT) + public Message enable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwThemeDomainService.enable(request, id); + return message; + } + + // disable theme domain + @RequestMapping(value = "/themedomains/{id}/disable",method = RequestMethod.PUT) + public Message disable( + HttpServletRequest request, + @PathVariable("id") Long id + ) throws DwException { + Message message = this.dwThemeDomainService.disable(request, id); + return message; + } +} diff --git a/dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/application-dss.yml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/application-dss.yml similarity index 100% rename from dss-apps/dss-data-governance/dss-data-governance-server/src/main/resources/application-dss.yml rename to dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/application-dss.yml diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss-data-warehouse-server.properties b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss-data-warehouse-server.properties new file mode 100644 index 000000000..a179709e3 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss-data-warehouse-server.properties @@ -0,0 +1,51 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +spring.server.port=9500 +spring.spring.application.name=dss-data-warehouse-server +wds.linkis.test.mode=true + +wds.linkis.server.mybatis.datasource.url=jdbc:mysql://localhost:3306/governance?useSSL=false&characterEncoding=UTF-8 + +wds.linkis.server.mybatis.datasource.username=root + +wds.linkis.server.mybatis.datasource.password=root + +wds.linkis.log.clear=true + +wds.linkis.server.version=v1 + + +## datasource client +wds.datawarehouse.datasource.client.serverurl=http://hdp:8090 +wds.datawarehouse.datasource.client.authtoken.key=hadoop +wds.datawarehouse.datasource.client.authtoken.value=hadoop +wds.datawarehouse.datasource.client.dws.version=v1 + +##restful +wds.linkis.server.restful.scan.packages=com.webank.wedatasphere.warehouse.restful + +wds.linkis.server.mybatis.mapperLocations=classpath*:com/webank/wedatasphere/warehouse/dao/mapper/impl/*.xml + +wds.linkis.server.mybatis.BasePackage=com.webank.wedatasphere.warehouse.dao.mapper + +wds.entity.workspace.name.auto.transform=false + +spring.spring.mvc.servlet.path=/api/rest_j/v1 + + + + diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss.properties b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss.properties new file mode 100644 index 000000000..b68aa7ff6 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/dss.properties @@ -0,0 +1,37 @@ +# +# Copyright 2019 WeBank +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +wds.linkis.gateway.ip=127.0.0.1 +wds.linkis.gateway.port=9001 +wds.linkis.gateway.url=http://127.0.0.1:9001/ +wds.linkis.gateway.wtss.url=http://127.0.0.1:9001/ + +wds.linkis.mysql.is.encrypt=false +wds.linkis.server.mybatis.datasource.url= +wds.linkis.server.mybatis.datasource.username= +wds.linkis.server.mybatis.datasource.password= + +wds.dss.esb.appid= +wds.dss.esb.token= + +wds.dss.appconn.scheduler.job.label=dev + + +wds.linkis.reflect.scan.package=org.apache.linkis,com.webank.wedatasphere.dss +spring.spring.mvc.servlet.path=/api/rest_j/v1 +spring.spring.servlet.multipart.max-file-size=200MB +spring.spring.servlet.multipart.max-request-size=200MB +wds.dss.project.strict.mode=true diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j.properties b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j.properties new file mode 100644 index 000000000..0807e6087 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j.properties @@ -0,0 +1,37 @@ +# +# Copyright 2019 WeBank +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +### set log levels ### + +log4j.rootCategory=INFO,console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Threshold=INFO +log4j.appender.console.layout=org.apache.log4j.PatternLayout +#log4j.appender.console.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n +log4j.appender.console.layout.ConversionPattern= %d{ISO8601} %-5p (%t) %p %c{1} - %m%n + + +log4j.appender.com.webank.bdp.ide.core=org.apache.log4j.DailyRollingFileAppender +log4j.appender.com.webank.bdp.ide.core.Threshold=INFO +log4j.additivity.com.webank.bdp.ide.core=false +log4j.appender.com.webank.bdp.ide.core.layout=org.apache.log4j.PatternLayout +log4j.appender.com.webank.bdp.ide.core.Append=true +log4j.appender.com.webank.bdp.ide.core.File=logs/linkis.log +log4j.appender.com.webank.bdp.ide.core.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n + +log4j.logger.org.springframework=INFO diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j2.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j2.xml new file mode 100644 index 000000000..fe03a3b7c --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/log4j2.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/mybatis-config.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/mybatis-config.xml new file mode 100644 index 000000000..038936310 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/resources/mybatis-config.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/scala/com/webank/wedatasphere/warehouse/DataWarehouseApplication.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/scala/com/webank/wedatasphere/warehouse/DataWarehouseApplication.scala new file mode 100644 index 000000000..2bac9f1cd --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-server/src/main/scala/com/webank/wedatasphere/warehouse/DataWarehouseApplication.scala @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.warehouse + +import com.webank.wedatasphere.dss.common.utils.DSSMainHelper +import org.apache.linkis.DataWorkCloudApplication +import org.apache.linkis.common.utils.{Logging, Utils} + +object DataWarehouseApplication extends Logging{ + + val userName: String = System.getProperty("user.name") + val hostName: String = Utils.getComputerName + + def main(args: Array[String]): Unit = { + val serviceName = System.getProperty("serviceName")//ProjectConf.SERVICE_NAME.getValue + DSSMainHelper.formatPropertyFiles(serviceName) + val allArgs = args ++ DSSMainHelper.getExtraSpringOptions + System.setProperty("hostName", hostName) + System.setProperty("userName", userName) + info(s"Ready to start $serviceName with args: ${allArgs.toList}.") + println(s"Test Ready to start $serviceName with args: ${allArgs.toList}.") + DataWorkCloudApplication.main(allArgs) + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/pom.xml b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/pom.xml new file mode 100644 index 000000000..1351ef576 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/pom.xml @@ -0,0 +1,164 @@ + + + 4.0.0 + + dss-datawarehouse-design + com.webank.wedatasphere.dss + 1.1.0 + + + dss-data-warehouse-service + jar + + + 8 + 8 + + + + + com.webank.wedatasphere.dss + dss-governance-dao + + + org.apache.linkis + linkis-mybatis + + + + + + org.apache.linkis + linkis-module + + + + org.apache.linkis + linkis-datasource-client + ${linkis.version} + + + org.apache.linkis + linkis-metadata + + + org.apache.linkis + linkis-publicservice + + + org.apache.linkis + linkis-bml + + + + + + com.webank.wedatasphere.dss + dss-datamodel-center-client + ${dss.version} + + + org.modelmapper + modelmapper + + + org.apache.linkis + linkis-gateway-httpclient-support + + + org.projectlombok + lombok + + + + + + com.webank.wedatasphere.dss + dss-data-assets-client + ${dss.version} + + + org.apache.linkis + linkis-mybatis + + + org.modelmapper + modelmapper + + + org.apache.linkis + linkis-module + + + org.apache.linkis + linkis-gateway-httpclient-support + + + + + + com.webank.wedatasphere.dss + dss-framework-workspace-client + ${dss.version} + + + org.apache.linkis + linkis-gateway-httpclient-support + + + org.projectlombok + lombok + + + + + + org.apache.linkis + linkis-computation-client + ${linkis.version} + + + org.apache.linkis + linkis-gateway-httpclient-support + + + org.apache.linkis + linkis-bml + + + com.google.code.gson + gson + + + + + + + org.projectlombok + lombok + provided + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DataSourceDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DataSourceDTO.java new file mode 100644 index 000000000..305803dda --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DataSourceDTO.java @@ -0,0 +1,115 @@ +package com.webank.wedatasphere.warehouse.client; + +import java.util.Date; + +public class DataSourceDTO { + + private Long id; + private String name; + private String type; + private Long dataSourceTypeId; + private String createIdentify; + private String desc; + private String createUser; + private String labels; + private Long versionId; + private String modifyUser; + private Date modifyTime; + private boolean expire; + + public boolean isExpire() { + return expire; + } + + public void setExpire(boolean expire) { + this.expire = expire; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCreateIdentify() { + return createIdentify; + } + + public void setCreateIdentify(String createIdentify) { + this.createIdentify = createIdentify; + } + + public Long getDataSourceTypeId() { + return dataSourceTypeId; + } + + public void setDataSourceTypeId(Long dataSourceTypeId) { + this.dataSourceTypeId = dataSourceTypeId; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getLabels() { + return labels; + } + + public void setLabels(String labels) { + this.labels = labels; + } + + public Long getVersionId() { + return versionId; + } + + public void setVersionId(Long versionId) { + this.versionId = versionId; + } + + public String getModifyUser() { + return modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DwDataSourceConfiguration.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DwDataSourceConfiguration.java new file mode 100644 index 000000000..eca2f3985 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/client/DwDataSourceConfiguration.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.warehouse.client; + +import org.apache.linkis.common.conf.CommonVars; + +public class DwDataSourceConfiguration { + public static final CommonVars SERVER_URL = CommonVars.apply("wds.datawarehouse.datasource.client.serverurl", ""); + public static final CommonVars CONNECTION_TIMEOUT = CommonVars.apply("wds.datawarehouse.datasource.client.connection.timeout", 30000L); + public static final CommonVars DISCOVERY_ENABLED = CommonVars.apply("wds.datawarehouse.datasource.client.discovery.enabled", false); + public static final CommonVars DISCOVERY_FREQUENCY_PERIOD = CommonVars.apply("wds.datawarehouse.datasource.client.discoveryfrequency.period", 1L); + public static final CommonVars LOAD_BALANCER_ENABLED = CommonVars.apply("wds.datawarehouse.datasource.client.loadbalancer.enabled", true); + public static final CommonVars MAX_CONNECTION_SIZE = CommonVars.apply("wds.datawarehouse.datasource.client.maxconnection.size", 5); + public static final CommonVars RETRY_ENABLED = CommonVars.apply("wds.datawarehouse.datasource.client.retryenabled", false); + public static final CommonVars READ_TIMEOUT = CommonVars.apply("wds.datawarehouse.datasource.client.readtimeout", 30000L); + public static final CommonVars AUTHTOKEN_KEY = CommonVars.apply("wds.datawarehouse.datasource.client.authtoken.key", ""); + public static final CommonVars AUTHTOKEN_VALUE = CommonVars.apply("wds.datawarehouse.datasource.client.authtoken.value", ""); + public static final CommonVars DWS_VERSION = CommonVars.apply("wds.datawarehouse.datasource.client.dws.version", ""); +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerCreateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerCreateCommand.java new file mode 100644 index 000000000..38e481f9a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerCreateCommand.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwLayerCreateCommand { + private String name; + private String enName; + private String owner; + private String principalName; + private String databases; + private String description; + private Integer order; +// private String autoCollectStrategy; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerQueryCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerQueryCommand.java new file mode 100644 index 000000000..4e5a18e95 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerQueryCommand.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import com.webank.wedatasphere.warehouse.cqe.common.PageCommand; +import lombok.*; + +@Setter +@Getter +@ToString +//@Builder +//@Accessors(chain = true) +public class DwLayerQueryCommand extends PageCommand { + private String name; + private Boolean enabled; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerUpdateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerUpdateCommand.java new file mode 100644 index 000000000..bda4fb73a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwLayerUpdateCommand.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwLayerUpdateCommand { + private Long id; + private String name; + private String enName; + private String databases; + private Integer order; +// private String autoCollectStrategy; + private String owner; + private String description; + private String principalName; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierCreateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierCreateCommand.java new file mode 100644 index 000000000..463116164 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierCreateCommand.java @@ -0,0 +1,37 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.util.List; + +@Setter +@Getter +@ToString +public class DwModifierCreateCommand { + private Long themeDomainId; + + private String themeArea; + + private Long layerId; + + private String layerArea; + + private String typeName; + + private String typeEnName; + + private String description; + + private List list; + + @Setter + @Getter + @ToString + public static class DwModifierCreateListItem { + private String name; + private String identifier; + private String formula; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierQueryCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierQueryCommand.java new file mode 100644 index 000000000..7e15f3a64 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierQueryCommand.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import com.webank.wedatasphere.warehouse.cqe.common.PageCommand; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwModifierQueryCommand extends PageCommand { + private String name; + private Boolean enabled; + private String theme; + private String layer; +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierUpdateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierUpdateCommand.java new file mode 100644 index 000000000..03b5fd470 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwModifierUpdateCommand.java @@ -0,0 +1,39 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.util.List; + +@Setter +@Getter +@ToString +public class DwModifierUpdateCommand { + private Long id; + + private Long themeDomainId; + + private String themeArea; + + private Long layerId; + + private String layerArea; + + private String typeName; + + private String typeEnName; + + private String description; + + private List list; + + @Setter + @Getter + @ToString + public static class DwModifierUpdateListItem { + private String name; + private String identifier; + private String formula; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodCreateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodCreateCommand.java new file mode 100644 index 000000000..82ce869e8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodCreateCommand.java @@ -0,0 +1,20 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwStatisticalPeriodCreateCommand { + private Long themeDomainId; + private Long layerId; + private String name; + private String enName; + private String description; + private String statStartFormula; + private String statEndFormula; + private String principalName; + private String owner; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodQueryCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodQueryCommand.java new file mode 100644 index 000000000..1a83859c1 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodQueryCommand.java @@ -0,0 +1,16 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import com.webank.wedatasphere.warehouse.cqe.common.PageCommand; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwStatisticalPeriodQueryCommand extends PageCommand { + private String name; + private Boolean enabled; + private String theme; + private String layer; +} \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodUpdateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodUpdateCommand.java new file mode 100644 index 000000000..4a0840474 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwStatisticalPeriodUpdateCommand.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwStatisticalPeriodUpdateCommand { + private Long id; + private Long themeDomainId; + private Long layerId; + private String name; + private String enName; + private String description; + private String statStartFormula; + private String statEndFormula; + private String principalName; + private String owner; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainCreateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainCreateCommand.java new file mode 100644 index 000000000..244cadb55 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainCreateCommand.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwThemeDomainCreateCommand { + private String name; + private String enName; + private String owner; + private String principalName; + private String description; + private Integer sort; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainQueryCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainQueryCommand.java new file mode 100644 index 000000000..810823f8c --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainQueryCommand.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import com.webank.wedatasphere.warehouse.cqe.common.PageCommand; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwThemeDomainQueryCommand extends PageCommand { + private String name; + private Boolean enabled; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainUpdateCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainUpdateCommand.java new file mode 100644 index 000000000..a065e4ad1 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/DwThemeDomainUpdateCommand.java @@ -0,0 +1,19 @@ +package com.webank.wedatasphere.warehouse.cqe; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +public class DwThemeDomainUpdateCommand { + private Long id; + private String name; + private String enName; + private String owner; + private String principalName; + private String description; + private Integer sort; +// private String authority; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/common/PageCommand.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/common/PageCommand.java new file mode 100644 index 000000000..47b1a5a3b --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/cqe/common/PageCommand.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.warehouse.cqe.common; + + + +import lombok.*; + +@Setter +@Getter +@ToString +@AllArgsConstructor +@NoArgsConstructor +//@Builder +//@Accessors(chain = true) +public class PageCommand { + private Integer page; + private Integer size; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerDTO.java new file mode 100644 index 000000000..58ff72c5a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerDTO.java @@ -0,0 +1,23 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +@NoArgsConstructor +public class DwLayerDTO { + private Long id; + private String name; + private String enName; + private Boolean preset; + private String description; + private String principalName; + private String dbs; + private String owner; + private Integer sort; + private boolean referenced; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerListItemDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerListItemDTO.java new file mode 100644 index 000000000..49d7ba062 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwLayerListItemDTO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.*; + +import java.util.Date; + +@Data +public class DwLayerListItemDTO { + private Long id; + private String name; + private String enName; + private Boolean preset; + private String description; + private String principalName; + private String dbs; + private Integer sort; + private Boolean isAvailable; + private Date createTime; + private Date updateTime; + private int referenceCount; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierDTO.java new file mode 100644 index 000000000..c537c6f51 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierDTO.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.List; + +@Setter +@Getter +@ToString +@NoArgsConstructor +public class DwModifierDTO { + private Long id; + private String modifierType; + private String modifierTypeEn; + private Long layerId; + private String layerArea; + private Long themeDomainId; + private String themeArea; + private String description; + private List list; + private boolean referenced; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListDTO.java new file mode 100644 index 000000000..a9b1f3fb4 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListDTO.java @@ -0,0 +1,18 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +@NoArgsConstructor +public class DwModifierListDTO { + private Long id; + private Long modifierId; + private String name; + private String identifier; + private String formula; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListItemDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListItemDTO.java new file mode 100644 index 000000000..805fa84a2 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwModifierListItemDTO.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.*; + +import java.util.Date; +import java.util.List; + +@Data +public class DwModifierListItemDTO { + private Long id; + private String modifierType; + private String modifierTypeEn; + private String layerArea; + private String layerAreaEn; + private String themeArea; + private String themeAreaEn; + private String description; + private Boolean isAvailable; + private Date createTime; + private Date updateTime; + private int referenceCount; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwStatisticalPeriodListItemDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwStatisticalPeriodListItemDTO.java new file mode 100644 index 000000000..766e15a6f --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwStatisticalPeriodListItemDTO.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class DwStatisticalPeriodListItemDTO { + private Long id; + private Long themeDomainId; + private Long layerId; + private String name; + private String enName; + private Boolean isAvailable; + private String description; + private String owner; + private String statStartFormula; + private String statEndFormula; + private String principalName; + private Date createTime; + private Date updateTime; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainDTO.java new file mode 100644 index 000000000..fbbf9e972 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainDTO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Setter +@Getter +@ToString +@NoArgsConstructor +public class DwThemeDomainDTO { + private Long id; + private String name; + private String enName; + private String owner; + private String principalName; + private Integer sort; + private String description; + private boolean referenced; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainListItemDTO.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainListItemDTO.java new file mode 100644 index 000000000..c5318735e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/DwThemeDomainListItemDTO.java @@ -0,0 +1,21 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.*; + +import java.util.Date; + +@Data +public class DwThemeDomainListItemDTO { + private Long id; + private String name; + private String enName; + private String owner; + private String principalName; + private Integer sort; + private String description; + private Date createTime; + private Date updateTime; + private Boolean preset; + private Boolean isAvailable; + private int referenceCount; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/PageInfo.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/PageInfo.java new file mode 100644 index 000000000..9e3fb9a5e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/dto/PageInfo.java @@ -0,0 +1,17 @@ +package com.webank.wedatasphere.warehouse.dto; + +import lombok.*; + +import java.util.List; + +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class PageInfo { + private List items; + private Long current; + private Long pageSize; + private Long total; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwException.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwException.java new file mode 100644 index 000000000..39520dac8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwException.java @@ -0,0 +1,56 @@ +package com.webank.wedatasphere.warehouse.exception; + +import org.apache.linkis.common.exception.ErrorException; + +public class DwException extends ErrorException { + + public static final Integer ARGUMENT_ERROR = 21101; + public static final Integer BUSINESS_ERROR = 22101; + + private int errorCode; + private Object[] parameters; + + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public Object[] getParameters() { + return parameters; + } + + public static DwException argumentReject(String errorMessage, Object... parameters) { + return new DwException(ARGUMENT_ERROR, errorMessage, parameters); + } + + public static DwException argumentReject(String errorMessage) { + return new DwException(ARGUMENT_ERROR, errorMessage); + } + + public static DwException stateReject(String errorMessage) { + return new DwException(BUSINESS_ERROR, errorMessage); + } + + public static DwException stateReject(String errorMessage, Object... parameters) { + return new DwException(BUSINESS_ERROR, errorMessage, parameters); + } + + public DwException(int errorCode, String message) { + super(errorCode, message); + this.errorCode = errorCode; + } + + public DwException(int errorCode, String message, Object... parameters) { + super(errorCode, message); + this.errorCode = errorCode; + this.parameters = parameters; + } + + public DwException(int errorCode, String message, Throwable cause) { + super(errorCode, message); + this.errorCode = errorCode; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwExceptionCode.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwExceptionCode.java new file mode 100644 index 000000000..569ba6e6a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/exception/DwExceptionCode.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.warehouse.exception; + +// 41000 ~ 41999 +public enum DwExceptionCode { + + CREATE_MODEL_TYPE_ERROR(41001), + DELETE_MODEL_TYPE_ERROR(41002), + UPDATE_MODEL_TYPE_ERROR(41003), + GET_AVAILABLE_DBS_ERROR(41004), + GET_PRINCIPAL_USERS_ERROR(41005), + GET_PRINCIPAL_ROLES_ERROR(41006), + ; + + private int code; + + DwExceptionCode(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDomainReferenceAdapter.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDomainReferenceAdapter.java new file mode 100644 index 000000000..e9339051e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDomainReferenceAdapter.java @@ -0,0 +1,237 @@ +package com.webank.wedatasphere.warehouse.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.common.base.Strings; +import com.webank.wedatasphere.dss.datamodel.center.client.impl.LinkisDatamodelCenterRemoteClient; +import com.webank.wedatasphere.dss.datamodel.center.client.request.CyclesReferenceAction; +import com.webank.wedatasphere.dss.datamodel.center.client.request.LayersReferenceAction; +import com.webank.wedatasphere.dss.datamodel.center.client.request.ModifiersReferenceAction; +import com.webank.wedatasphere.dss.datamodel.center.client.request.ThemesReferenceAction; +import com.webank.wedatasphere.dss.datamodel.center.client.response.CyclesReferenceResult; +import com.webank.wedatasphere.dss.datamodel.center.client.response.LayersReferenceResult; +import com.webank.wedatasphere.dss.datamodel.center.client.response.ModifiersReferenceResult; +import com.webank.wedatasphere.dss.datamodel.center.client.response.ThemesReferenceResult; +import com.webank.wedatasphere.warehouse.LinkisRemoteClientHolder; +import com.webank.wedatasphere.warehouse.dao.domain.DwLayer; +import com.webank.wedatasphere.warehouse.dao.domain.DwModifier; +import com.webank.wedatasphere.warehouse.dao.domain.DwStatisticalPeriod; +import com.webank.wedatasphere.warehouse.dao.domain.DwThemeDomain; +import com.webank.wedatasphere.warehouse.dao.mapper.DwLayerMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwModifierMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwStatisticalPeriodMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwThemeDomainMapper; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.utils.PreconditionUtil; + +import java.util.Optional; + +public interface DwDomainReferenceAdapter { + + DwStatisticalPeriodMapper getDwStatisticalPeriodMapper(); + + DwModifierMapper getDwModifierMapper(); + + DwLayerMapper getDwLayerMapper(); + + DwThemeDomainMapper getDwThemeDomainMapper(); + + default void checkMapper() throws DwException { +// DwLayerMapper dwLayerMapper = getDwLayerMapper(); +// PreconditionUtil.checkState(Optional.ofNullable(dwLayerMapper).isPresent(), DwException.stateReject("dw layer mapper should not be null")); +// +// DwThemeDomainMapper dwThemeDomainMapper = getDwThemeDomainMapper(); +// PreconditionUtil.checkState(Optional.ofNullable(dwThemeDomainMapper).isPresent(), DwException.stateReject("dw theme domain mapper should not be null")); +// +// DwModifierMapper dwModifierMapper = getDwModifierMapper(); +// PreconditionUtil.checkState(Optional.ofNullable(dwModifierMapper).isPresent(), DwException.stateReject("dw modifier mapper should not be null")); +// +// DwStatisticalPeriodMapper dwStatisticalPeriodMapper = getDwStatisticalPeriodMapper(); +// PreconditionUtil.checkState(Optional.ofNullable(dwStatisticalPeriodMapper).isPresent(), DwException.stateReject("dw statistical period mapper should not be null")); + checkLayerMapper(); + + checkThemeDomainMapper(); + + checkModifierMapper(); + + checkStatisticalPeriodMapper(); + } + + default void checkModifierMapper() throws DwException { + DwModifierMapper dwModifierMapper = getDwModifierMapper(); + PreconditionUtil.checkState(Optional.ofNullable(dwModifierMapper).isPresent(), DwException.stateReject("dw modifier mapper should not be null")); + } + + default void checkLayerMapper() throws DwException { + DwLayerMapper dwLayerMapper = getDwLayerMapper(); + PreconditionUtil.checkState(Optional.ofNullable(dwLayerMapper).isPresent(), DwException.stateReject("dw layer mapper should not be null")); + } + + default void checkThemeDomainMapper() throws DwException { + DwThemeDomainMapper dwThemeDomainMapper = getDwThemeDomainMapper(); + PreconditionUtil.checkState(Optional.ofNullable(dwThemeDomainMapper).isPresent(), DwException.stateReject("dw theme domain mapper should not be null")); + } + + default void checkStatisticalPeriodMapper() throws DwException { + DwStatisticalPeriodMapper dwStatisticalPeriodMapper = getDwStatisticalPeriodMapper(); + PreconditionUtil.checkState(Optional.ofNullable(dwStatisticalPeriodMapper).isPresent(), DwException.stateReject("dw statistical period mapper should not be null")); + } + + // get theme reference count + default int getThemeDomainReferenceCount(Long id, String username) throws DwException { + checkThemeDomainMapper(); + + DwThemeDomain themeDomain = getDwThemeDomainMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(themeDomain).isPresent(), DwException.stateReject("dw theme domain should not be null, id = {}", id)); + + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + ThemesReferenceAction themesReferenceAction = new ThemesReferenceAction.Builder().setName(themeDomain.getEnName()).setUser(username).build(); + ThemesReferenceResult themesReferenceResult = dataModelRemoteClient.themesReference(themesReferenceAction); + return themesReferenceResult.getResult(); + } + + // get modifier reference count + default int getModifierReferenceCount(Long id, String username) throws DwException { + checkModifierMapper(); + + DwModifier modifier = getDwModifierMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(modifier).isPresent(), DwException.stateReject("dw modifier should not be null, id = {}", id)); + + if (Strings.isNullOrEmpty(modifier.getModifierTypeEn())) { + return 0; + } + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + ModifiersReferenceAction modifiersReferenceAction = new ModifiersReferenceAction.Builder().setName(modifier.getModifierTypeEn()).setUser(username).build(); + ModifiersReferenceResult modifiersReferenceResult = dataModelRemoteClient.modifiersReference(modifiersReferenceAction); + return modifiersReferenceResult.getResult(); + } + + default int getStatisticalPeriodReferenceCount(Long id, String username) throws DwException { + checkStatisticalPeriodMapper(); + + DwStatisticalPeriod period = getDwStatisticalPeriodMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(period).isPresent(), DwException.stateReject("dw statistical period should not be null, id = {}", id)); + + // check datamodel + if (Strings.isNullOrEmpty(period.getEnName())) { + return 0; + } + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + CyclesReferenceAction cyclesReferenceAction = new CyclesReferenceAction.Builder().setName(period.getEnName()).setUser(username).build(); + CyclesReferenceResult cyclesReferenceResult = dataModelRemoteClient.cyclesReference(cyclesReferenceAction); + return cyclesReferenceResult.getResult(); + } + + default int getLayerReferenceCount(Long id, String username) throws DwException { + checkLayerMapper(); + + DwLayer dwLayer = getDwLayerMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(dwLayer).isPresent(), DwException.stateReject("dw layer should not be null, id = {}", id)); + + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + LayersReferenceAction action = new LayersReferenceAction.Builder().setUser(username).setName(dwLayer.getEnName()).build(); + LayersReferenceResult layersReferenceResult = dataModelRemoteClient.layersReference(action); + return layersReferenceResult.getResult(); + } + + default boolean isModifierInUse(Long id, String username) throws DwException { + checkMapper(); + + DwModifier modifier = getDwModifierMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(modifier).isPresent(), DwException.stateReject("dw modifier should not be null, id = {}", id)); + + // check datamodel + if (!Strings.isNullOrEmpty(modifier.getModifierTypeEn())) { + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + ModifiersReferenceAction modifiersReferenceAction = new ModifiersReferenceAction.Builder().setName(modifier.getModifierTypeEn()).setUser(username).build(); + ModifiersReferenceResult modifiersReferenceResult = dataModelRemoteClient.modifiersReference(modifiersReferenceAction); + int referenceCount = modifiersReferenceResult.getResult(); + return referenceCount > 0; + } + + return false; + } + + default boolean isStatisticalPeriodInUse(Long id, String username) throws DwException { + checkMapper(); + + DwStatisticalPeriod period = getDwStatisticalPeriodMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(period).isPresent(), DwException.stateReject("dw statistical period should not be null, id = {}", id)); + + // check datamodel + if (!Strings.isNullOrEmpty(period.getEnName())) { + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + CyclesReferenceAction cyclesReferenceAction = new CyclesReferenceAction.Builder().setName(period.getEnName()).setUser(username).build(); + CyclesReferenceResult cyclesReferenceResult = dataModelRemoteClient.cyclesReference(cyclesReferenceAction); + int referenceCount = cyclesReferenceResult.getResult(); + return referenceCount > 0; + } + + return false; + } + + default boolean isThemeDomainInUse(Long id, String username) throws DwException { + checkMapper(); + + // 检查修饰词关联数量 + QueryWrapper queryModifierWrapper = new QueryWrapper<>(); + queryModifierWrapper.eq("theme_domain_id", id); + queryModifierWrapper.eq("status", Boolean.TRUE); + queryModifierWrapper.eq("is_available", Boolean.TRUE); + Integer count1 = getDwModifierMapper().selectCount(queryModifierWrapper); + boolean isRelModifier = Optional.ofNullable(count1).orElse(0) > 0; + + // 检查统计周期关联数量 + QueryWrapper statisticalPeriodQueryWrapper = new QueryWrapper<>(); + statisticalPeriodQueryWrapper.eq("theme_domain_id", id); + statisticalPeriodQueryWrapper.eq("status", Boolean.TRUE); + statisticalPeriodQueryWrapper.eq("is_available", Boolean.TRUE); + Integer count2 = getDwStatisticalPeriodMapper().selectCount(statisticalPeriodQueryWrapper); + boolean isRelStatisticalPeriod = Optional.ofNullable(count2).orElse(0) > 0; + + DwThemeDomain themeDomain = getDwThemeDomainMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(themeDomain).isPresent(), DwException.stateReject("dw theme domain should not be null, id = {}", id)); + + // check datamodel + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + ThemesReferenceAction themesReferenceAction = new ThemesReferenceAction.Builder().setName(themeDomain.getEnName()).setUser(username).build(); + ThemesReferenceResult themesReferenceResult = dataModelRemoteClient.themesReference(themesReferenceAction); + int referenceCount = themesReferenceResult.getResult(); + boolean isDataModelReferenced = referenceCount > 0; + +// LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + + return isRelModifier || isRelStatisticalPeriod || isDataModelReferenced; + } + + default boolean isLayerInUse(Long id, String username) throws DwException { + checkMapper(); + + // 检查修饰词关联数量 + QueryWrapper queryModifierWrapper = new QueryWrapper<>(); + queryModifierWrapper.eq("layer_id", id); + queryModifierWrapper.eq("status", Boolean.TRUE); + queryModifierWrapper.eq("is_available", Boolean.TRUE); + Integer count1 = getDwModifierMapper().selectCount(queryModifierWrapper); + boolean isRelModifier = Optional.ofNullable(count1).orElse(0) > 0; + + // 检查统计周期关联数量 + QueryWrapper statisticalPeriodQueryWrapper = new QueryWrapper<>(); + statisticalPeriodQueryWrapper.eq("layer_id", id); + statisticalPeriodQueryWrapper.eq("status", Boolean.TRUE); + statisticalPeriodQueryWrapper.eq("is_available", Boolean.TRUE); + Integer count2 = getDwStatisticalPeriodMapper().selectCount(statisticalPeriodQueryWrapper); + boolean isRelStatisticalPeriod = Optional.ofNullable(count2).orElse(0) > 0; + + DwLayer dwLayer = getDwLayerMapper().selectById(id); + PreconditionUtil.checkState(Optional.ofNullable(dwLayer).isPresent(), DwException.stateReject("dw layer should not be null, id = {}", id)); + + LinkisDatamodelCenterRemoteClient dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient(); + LayersReferenceAction action = new LayersReferenceAction.Builder().setUser(username).setName(dwLayer.getEnName()).build(); + LayersReferenceResult layersReferenceResult = dataModelRemoteClient.layersReference(action); + int referenceCount = layersReferenceResult.getResult(); + boolean isDataModelReferenced = referenceCount > 0; + + return isRelModifier || isRelStatisticalPeriod || isDataModelReferenced; + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDsService.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDsService.java new file mode 100644 index 000000000..30fc68533 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwDsService.java @@ -0,0 +1,13 @@ +package com.webank.wedatasphere.warehouse.service; + +import org.apache.linkis.server.Message; + +import javax.servlet.http.HttpServletRequest; + +public interface DwDsService { + Message getAllHiveDbs(HttpServletRequest request,Integer limit, Integer offset) throws Exception; + + Message getPrincipalUsers(HttpServletRequest request, String id) throws Exception; + + Message getPrincipalRoles(HttpServletRequest request, String id) throws Exception; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwLayerService.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwLayerService.java new file mode 100644 index 000000000..226ab3429 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwLayerService.java @@ -0,0 +1,29 @@ +package com.webank.wedatasphere.warehouse.service; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.DwLayerCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerUpdateCommand; +import com.webank.wedatasphere.warehouse.exception.DwException; + +import javax.servlet.http.HttpServletRequest; + +public interface DwLayerService { + Message createDwCustomLayer(HttpServletRequest request, final DwLayerCreateCommand command) throws DwException; + + Message getLayerById(HttpServletRequest request, final Long id) throws DwException; + + Message getAllPresetLayers(HttpServletRequest request) throws DwException; + + Message queryPagedCustomLayers(HttpServletRequest request, final DwLayerQueryCommand command) throws DwException; + + Message deleteById(HttpServletRequest request, Long id) throws DwException; + + Message update(HttpServletRequest request, DwLayerUpdateCommand command) throws DwException; + + Message enable(HttpServletRequest request, Long id) throws DwException; + + Message disable(HttpServletRequest request, Long id) throws DwException; + + Message getAllLayers(HttpServletRequest request, Boolean isAvailable, String db) throws DwException; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwModifierService.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwModifierService.java new file mode 100644 index 000000000..849444e99 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwModifierService.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.warehouse.service; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.DwModifierCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwModifierQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwModifierUpdateCommand; +import com.webank.wedatasphere.warehouse.exception.DwException; + +import javax.servlet.http.HttpServletRequest; + +public interface DwModifierService { + Message queryAllModifiers(HttpServletRequest request, DwModifierQueryCommand command) throws DwException; + + Message queryPage(HttpServletRequest request, DwModifierQueryCommand command) throws DwException; + + Message create(HttpServletRequest request, DwModifierCreateCommand command) throws DwException; + + Message getById(HttpServletRequest request, Long id) throws DwException; + + Message deleteById(HttpServletRequest request, Long id) throws DwException; + + Message update(HttpServletRequest request, DwModifierUpdateCommand command) throws DwException; + + Message enable(HttpServletRequest request, Long id) throws DwException; + + Message disable(HttpServletRequest request, Long id) throws DwException; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwStatisticalPeriodService.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwStatisticalPeriodService.java new file mode 100644 index 000000000..e6cacb86a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwStatisticalPeriodService.java @@ -0,0 +1,27 @@ +package com.webank.wedatasphere.warehouse.service; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodUpdateCommand; +import com.webank.wedatasphere.warehouse.exception.DwException; + +import javax.servlet.http.HttpServletRequest; + +public interface DwStatisticalPeriodService { + Message queryAll(HttpServletRequest request, DwStatisticalPeriodQueryCommand command) throws DwException; + + Message queryPage(HttpServletRequest request, DwStatisticalPeriodQueryCommand command) throws DwException; + + Message create(HttpServletRequest request, DwStatisticalPeriodCreateCommand command) throws DwException; + + Message getById(HttpServletRequest request, Long id) throws DwException; + + Message deleteById(HttpServletRequest request, Long id) throws DwException; + + Message update(HttpServletRequest request, DwStatisticalPeriodUpdateCommand command) throws DwException; + + Message enable(HttpServletRequest request, Long id) throws DwException; + + Message disable(HttpServletRequest request, Long id) throws DwException; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwThemeDomainService.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwThemeDomainService.java new file mode 100644 index 000000000..772e8348e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/DwThemeDomainService.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.warehouse.service; + +import org.apache.linkis.server.Message; +import com.webank.wedatasphere.warehouse.cqe.*; +import com.webank.wedatasphere.warehouse.exception.DwException; + +import javax.servlet.http.HttpServletRequest; + +public interface DwThemeDomainService { + Message queryAllThemeDomains(HttpServletRequest request, DwThemeDomainQueryCommand command) throws DwException; + + Message queryPage(HttpServletRequest request, DwThemeDomainQueryCommand command) throws DwException; + + Message create(HttpServletRequest request, DwThemeDomainCreateCommand command) throws DwException; + + Message getById(HttpServletRequest request, Long id) throws DwException; + + Message deleteById(HttpServletRequest request, Long id) throws DwException; + + Message update(HttpServletRequest request, DwThemeDomainUpdateCommand command) throws DwException; + + Message enable(HttpServletRequest request, Long id) throws DwException; + + Message disable(HttpServletRequest request, Long id) throws DwException; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwDsServiceImpl.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwDsServiceImpl.java new file mode 100644 index 000000000..af1595255 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwDsServiceImpl.java @@ -0,0 +1,83 @@ +package com.webank.wedatasphere.warehouse.service.impl; + +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.SearchHiveDbAction; +import com.webank.wedatasphere.dss.data.governance.response.SearchHiveDbResult; +import com.webank.wedatasphere.dss.framework.workspace.client.WorkSpaceRemoteClient; +import com.webank.wedatasphere.dss.framework.workspace.client.request.GetWorkspaceRolesAction; +import com.webank.wedatasphere.dss.framework.workspace.client.request.GetWorkspaceUsersAction; +import com.webank.wedatasphere.dss.framework.workspace.client.response.GetWorkspaceRolesResult; +import com.webank.wedatasphere.dss.framework.workspace.client.response.GetWorkspaceUsersResult; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import com.webank.wedatasphere.warehouse.LinkisRemoteClientHolder; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.exception.DwExceptionCode; +import com.webank.wedatasphere.warehouse.service.DwDsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Service +public class DwDsServiceImpl implements DwDsService { + private final static Logger LOGGER = LoggerFactory.getLogger(DwDsServiceImpl.class); + @Override + public Message getAllHiveDbs(HttpServletRequest request,Integer limit, Integer offset) throws Exception { + String userName = SecurityFilter.getLoginUsername(request); + LOGGER.info("listAllDataSources userName:" + userName); + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + SearchHiveDbResult result = dataAssetsRemoteClient.searchHiveDb( + SearchHiveDbAction.builder().setQuery("hive_db").setUser(userName).setOffset(offset).setLimit(limit).build()); + List> results=result.getResult(); + List dbs=new ArrayList<>(); + for (Map map:results){ + dbs.add(map.get("name")); + } + return Message.ok().data("list", dbs); + } + + @Override + public Message getPrincipalUsers(HttpServletRequest request, String workspaceId) throws Exception { + String userName = SecurityFilter.getLoginUsername(request); + LOGGER.info("get Principal users, userName:" + userName); + try { + WorkSpaceRemoteClient client = LinkisRemoteClientHolder.getWorkspaceRemoteClient(); + GetWorkspaceUsersAction action = GetWorkspaceUsersAction.builder().setUser(userName).setWorkspaceId(workspaceId).setPageNow(1).setPageSize(500).build(); + GetWorkspaceUsersResult result = client.getWorkspaceUsers(action); + List> users = result.getWorkspaceUsers(); + return Message.ok().data("list", users); + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.GET_PRINCIPAL_USERS_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.GET_PRINCIPAL_USERS_ERROR.getCode(), e.getMessage()); + } + } + } + + @Override + public Message getPrincipalRoles(HttpServletRequest request, String workspaceId) throws Exception { + String userName = SecurityFilter.getLoginUsername(request); + LOGGER.info("get Principal roles, userName:" + userName); + try { + WorkSpaceRemoteClient client = LinkisRemoteClientHolder.getWorkspaceRemoteClient(); + GetWorkspaceRolesAction action = GetWorkspaceRolesAction.builder().setUser(userName).setWorkspaceId(workspaceId).build(); + GetWorkspaceRolesResult result = client.getWorkspaceRoles(action); + List> roles = result.getWorkspaceRoles(); + return Message.ok().data("list", roles); + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.GET_PRINCIPAL_ROLES_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.GET_PRINCIPAL_ROLES_ERROR.getCode(), e.getMessage()); + } + } + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwLayerServiceImpl.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwLayerServiceImpl.java new file mode 100644 index 000000000..baaaf8f27 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwLayerServiceImpl.java @@ -0,0 +1,523 @@ +package com.webank.wedatasphere.warehouse.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.CreateModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.request.DeleteModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.request.UpdateModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.response.CreateModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.DeleteModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.UpdateModelTypeResult; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import com.webank.wedatasphere.warehouse.LinkisRemoteClientHolder; +import com.webank.wedatasphere.warehouse.cqe.DwLayerCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwLayerUpdateCommand; +import com.webank.wedatasphere.warehouse.dao.domain.DwLayer; +import com.webank.wedatasphere.warehouse.dao.mapper.DwModifierMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwStatisticalPeriodMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwThemeDomainMapper; +import com.webank.wedatasphere.warehouse.dto.DwLayerDTO; +import com.webank.wedatasphere.warehouse.dto.DwLayerListItemDTO; +import com.webank.wedatasphere.warehouse.dto.PageInfo; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.dao.mapper.DwLayerMapper; +//import com.webank.wedatasphere.warehouse.mapper.DwLayerModelMapper; +import com.webank.wedatasphere.warehouse.exception.DwExceptionCode; +import com.webank.wedatasphere.warehouse.service.DwDomainReferenceAdapter; +import com.webank.wedatasphere.warehouse.service.DwLayerService; +import com.webank.wedatasphere.warehouse.utils.PreconditionUtil; +import com.webank.wedatasphere.warehouse.utils.RegexUtil; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +@Service +public class DwLayerServiceImpl implements DwLayerService, DwDomainReferenceAdapter { + + private final DwLayerMapper dwLayerMapper; + private final DwThemeDomainMapper dwThemeDomainMapper; + private final DwModifierMapper dwModifierMapper; + private final DwStatisticalPeriodMapper dwStatisticalPeriodMapper; + + @Autowired + public DwLayerServiceImpl(final DwLayerMapper dwLayerMapper, final DwThemeDomainMapper dwThemeDomainMapper, final DwModifierMapper dwModifierMapper, final DwStatisticalPeriodMapper dwStatisticalPeriodMapper) { + this.dwLayerMapper = dwLayerMapper; + this.dwThemeDomainMapper = dwThemeDomainMapper; + this.dwModifierMapper = dwModifierMapper; + this.dwStatisticalPeriodMapper = dwStatisticalPeriodMapper; + } + + @Override + public DwModifierMapper getDwModifierMapper() { + return dwModifierMapper; + } + + @Override + public DwStatisticalPeriodMapper getDwStatisticalPeriodMapper() { + return dwStatisticalPeriodMapper; + } + + @Override + public DwLayerMapper getDwLayerMapper() { + return dwLayerMapper; + } + + @Override + public DwThemeDomainMapper getDwThemeDomainMapper() { + return dwThemeDomainMapper; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message createDwCustomLayer(HttpServletRequest request, DwLayerCreateCommand command) throws DwException { + String username = SecurityFilter.getLoginUsername(request); +// String username = "hdfs"; + String name = command.getName(); + String enName = command.getEnName(); + String databases = command.getDatabases(); + Integer order = command.getOrder(); +// String autoCollectStrategy = command.getAutoCollectStrategy(); + String owner = command.getOwner(); + String description = command.getDescription(); + String principalName = command.getPrincipalName(); + + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("charge user should not empty")); +// authority = PreconditionUtil.checkStringArgumentNotBlankTrim(authority, DwException.argumentReject("authority should not empty")); + QueryWrapper nameUniqueCheckQuery = new QueryWrapper<>(); + nameUniqueCheckQuery.eq("name", name); + nameUniqueCheckQuery.eq("status", Boolean.TRUE); + DwLayer exist = this.dwLayerMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist), DwException.stateReject("layer name aleardy exists")); + + if (Strings.isBlank(databases)) { + databases = "ALL"; + } + if (Objects.isNull(order)) { + order = 1; + } + +// if (Strings.isBlank(autoCollectStrategy)) { +// autoCollectStrategy = "{}"; +// } + +// String user = "hdfs"; + + Date now = new Date(); + + DwLayer layer = new DwLayer(); + layer.setName(name); + layer.setEnName(enName); + layer.setDescription(description); + layer.setPrincipalName(principalName); + layer.setOwner(owner); + layer.setDbs(databases); +// layer.setAutoCollectStrategy(autoCollectStrategy); + // 设置为 FALSE ,因为是自定义分层 + layer.setPreset(Boolean.FALSE); + layer.setIsAvailable(Boolean.TRUE); +// layer.setCreateUser(user); + layer.setSort(order); + layer.setCreateTime(now); + layer.setUpdateTime(now); + layer.setStatus(Boolean.TRUE); + layer.setLockVersion(1L); + + int insert = this.dwLayerMapper.insert(layer); + PreconditionUtil.checkState(1 == insert, DwException.stateReject("create dw layer failed")); + + // 建立关联 + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + CreateModelTypeAction action = new CreateModelTypeAction.Builder().setType(ClassificationConstant.LAYER).setName(enName).setUser(username).build(); + CreateModelTypeResult result = dataAssetsRemoteClient.createModelType(action); + + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.CREATE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.CREATE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + + + return Message.ok().data("id", layer.getId()); + } + + @Override + public Message getLayerById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwLayer layer = this.dwLayerMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(layer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(layer.getStatus(), DwException.stateReject("layer has been removed")); + +// DwLayerDTO dto = this.dwLayerModelMapper.toDTO(layer); + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isLayerInUse(layer.getId(), username); + + DwLayerDTO dto = new DwLayerDTO(); + BeanUtils.copyProperties(layer, dto); + dto.setReferenced(inUse); + + return Message.ok().data("item", dto); + } + + + @Override + public Message getAllLayers(HttpServletRequest request, Boolean isAvailable, String db) throws DwException { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (!Objects.isNull(isAvailable)) { + queryWrapper.eq("is_available", isAvailable); + } + List records = this.dwLayerMapper.selectList(queryWrapper); + String username = SecurityFilter.getLoginUsername(request); + + List dtos = new ArrayList<>(); + boolean contain; + for (DwLayer record : records) { + contain = true; + if (Strings.isNotBlank(db)) { + if ("all".equalsIgnoreCase(db)) { + // 查询的时候传入的参数 db = all + contain = true; + } else { + // 预置分层所有库都可以用 + if (record.getPreset()) { + contain = true; + } else { + contain = false; + String dbs = record.getDbs(); + if (Strings.isNotBlank(dbs)) { + String[] splitDbs = dbs.split(","); + for (String splitDb : splitDbs) { + // 如果分层可用库选择了所有,则直接添加到查询记录中 + if ("all".equalsIgnoreCase(splitDb)) { + contain = true; + break; + } + // 否则就遍历判断当前查询库是否在当前分层中存在 + if (Objects.equals(splitDb, db)) { + contain = true; + break; + } + } + } + } + } + } + + if (!contain) { + continue; + } + + DwLayerListItemDTO dto = new DwLayerListItemDTO(); + BeanUtils.copyProperties(record, dto); + // get reference count + int layerReferenceCount = getLayerReferenceCount(record.getId(), username); + dto.setReferenceCount(layerReferenceCount); + dtos.add(dto); + } + + return Message.ok().data("list", dtos); + } + + + @Override + public Message getAllPresetLayers(HttpServletRequest request) throws DwException { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + queryWrapper.eq("preset", Boolean.TRUE); + List records = this.dwLayerMapper.selectList(queryWrapper); +// List dtos = DwLayerModelMapper.INSTANCE.toList(dwLayers); + List dtos = new ArrayList<>(); + + String username = SecurityFilter.getLoginUsername(request); + + for (DwLayer record : records) { + DwLayerListItemDTO dto = new DwLayerListItemDTO(); + BeanUtils.copyProperties(record, dto); + // get reference count + int layerReferenceCount = getLayerReferenceCount(record.getId(), username); + dto.setReferenceCount(layerReferenceCount); + dtos.add(dto); + } + + return Message.ok().data("list", dtos); + } + + @Override + public Message queryPagedCustomLayers(HttpServletRequest request, DwLayerQueryCommand command) throws DwException { + Integer page = command.getPage(); + Integer size = command.getSize(); + String name = command.getName(); + Boolean enabled = command.getEnabled(); + if (Objects.isNull(page)) + page = 1; + + if (Objects.isNull(size)) + size = 10; + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + queryWrapper.eq("preset", Boolean.FALSE); + if (!Objects.isNull(enabled)) { + queryWrapper.eq("is_available", enabled); + } + if (Strings.isNotBlank(name)) { + queryWrapper.like("name", name).or().like("en_name", name); + } + + Page queryPage = new Page<>(page, size); + + IPage _page = this.dwLayerMapper.selectPage(queryPage, queryWrapper); + + List records = _page.getRecords(); + +// List list = DwLayerModelMapper.INSTANCE.toList(records); + List list = new ArrayList<>(); + String username = SecurityFilter.getLoginUsername(request); + for (DwLayer record : records) { + DwLayerListItemDTO dto = new DwLayerListItemDTO(); + BeanUtils.copyProperties(record, dto); + // get reference count + int layerReferenceCount = getLayerReferenceCount(record.getId(), username); + dto.setReferenceCount(layerReferenceCount); + + list.add(dto); + + } + + + PageInfo __page = new PageInfo<>(list, _page.getCurrent(), _page.getSize(), _page.getTotal()); + + return Message.ok().data("page", __page); + } + + // TODO 后面需要检查主题域下有没有关联的 Hive 表,才决定是否删除 + @Transactional(rollbackFor = Exception.class) + @Override + public Message deleteById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + DwLayer layer = this.dwLayerMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(layer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(Objects.equals(Boolean.FALSE, layer.getPreset()), DwException.stateReject("preset layer could not be removed")); + + String username = SecurityFilter.getLoginUsername(request); + // check in use + // statistical_period & modifier & data_model client api check + boolean inUse = isLayerInUse(layer.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("layer is in use")); + +// if (Objects.equals(Boolean.FALSE, layer.getStatus())) { +// return Message.ok(); +// } +// layer.setStatus(Boolean.FALSE); +// int i = this.dwLayerMapper.updateById(layer); + int i = this.dwLayerMapper.deleteById(layer); + PreconditionUtil.checkState(1 == i, DwException.stateReject("remove action failed")); + + // 删除关联 + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + DeleteModelTypeAction action = new DeleteModelTypeAction.Builder().setType(ClassificationConstant.LAYER).setName(layer.getEnName()).setUser(username).build(); + DeleteModelTypeResult result = dataAssetsRemoteClient.deleteModelType(action); + + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.DELETE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.DELETE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + + return Message.ok(); + } + + /** + * 更新操作涉及到 预置分层和自定义分层 + * + * 预置分层是不能更新名称的,其它字段的更新和自定义分层一致。 + * 所以针对预置分层,是不需要传递 name 参数的,所以要稍微区分逻辑判断来处理 + * + * 预留分层的 name name_alias charge_user 无法改变 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Message update(HttpServletRequest request, DwLayerUpdateCommand command) throws DwException { + String username = SecurityFilter.getLoginUsername(request); + // 基本参数校验 + Long id = command.getId(); + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + // 实体校验 + DwLayer layer = this.dwLayerMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(layer), DwException.stateReject("layer not found")); + String orgEnName = layer.getEnName(); + + // 分层类型后的name参数单独校验 + String name = command.getName(); + String enName = command.getEnName(); + String owner = command.getOwner(); + Integer order = command.getOrder(); + String description = command.getDescription(); + String principalName = command.getPrincipalName(); +// authority = PreconditionUtil.checkStringArgumentNotBlankTrim(authority, DwException.argumentReject("authority should not empty")); + String databases = command.getDatabases(); +// String autoCollectStrategy = command.getAutoCollectStrategy(); + if (Strings.isBlank(databases)) { + databases = "ALL"; + } + + if (Objects.isNull(order)) { + order = 1; + } + +// if (Strings.isBlank(autoCollectStrategy)) { +// autoCollectStrategy = "{}"; +// } + + // 预置分层也能修改 +// if (!layer.getPreset()) { + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + + if (!Objects.equals(name, layer.getName()) || !Objects.equals(enName, layer.getEnName())) { + // check name enName if not equal, we should check if in use + // check in use + // statistical_period & modifier & data_model client api check + + boolean inUse = isLayerInUse(layer.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("layer is in use")); + } + + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("owner should not empty")); + // 并且自定义分层在更新名称的时候,名称不能重复 + QueryWrapper nameUniqueCheckQuery = new QueryWrapper<>(); + nameUniqueCheckQuery.eq("name", name); + nameUniqueCheckQuery.ne("id", id); + nameUniqueCheckQuery.eq("status", Boolean.TRUE); + DwLayer exist = this.dwLayerMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist), DwException.stateReject("layer name aleardy exists")); + layer.setName(name); + + // 并且自定义分层在更新名称的时候,name alias不能重复 + QueryWrapper nameAliasUniqueCheckQuery = new QueryWrapper<>(); + nameAliasUniqueCheckQuery.eq("en_name", name); + nameAliasUniqueCheckQuery.ne("id", id); + nameAliasUniqueCheckQuery.eq("status", Boolean.TRUE); + DwLayer nameAliasExist = this.dwLayerMapper.selectOne(nameAliasUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(nameAliasExist), DwException.stateReject("layer en name aleardy exists")); + layer.setEnName(enName); + + layer.setOwner(owner); +// } + +// String user = SecurityFilter.getLoginUsername(request); + + Long oldVersion = layer.getLockVersion(); + + Date now = new Date(); + layer.setDbs(databases); +// layer.set(autoCollectStrategy); + layer.setDescription(description); + layer.setPrincipalName(principalName); + layer.setSort(order); +// layer.setModifyUser(user); + layer.setUpdateTime(now); + layer.setLockVersion(oldVersion + 1); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", layer.getId()); + updateWrapper.eq("lock_version", oldVersion); + + int i = this.dwLayerMapper.update(layer, updateWrapper); + + PreconditionUtil.checkState(1 == i, DwException.stateReject("update layer failed")); + + // 更新关联 + if (!Objects.equals(orgEnName, layer.getEnName())) { + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + UpdateModelTypeAction action = new UpdateModelTypeAction.Builder().setType(ClassificationConstant.LAYER).setName(layer.getEnName()).setOrgName(orgEnName).setUser(username).build(); + UpdateModelTypeResult result = dataAssetsRemoteClient.updateModelType(action); + + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.UPDATE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.UPDATE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + } + + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message enable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.TRUE); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message disable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.FALSE); + return Message.ok(); + } + + private void changeEnable(HttpServletRequest request, Long id, Boolean enabled) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwLayer record = this.dwLayerMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("layer has been removed")); + if (Objects.equals(enabled, record.getIsAvailable())) { + return; + } + +// String user = "hdfs"; + Long oldVersion = record.getLockVersion(); +// record.setModifyUser(user); + record.setUpdateTime(new Date()); + record.setIsAvailable(enabled); + record.setLockVersion(oldVersion + 1); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + int update = this.dwLayerMapper.update(record, updateWrapper); + PreconditionUtil.checkState(1 == update, DwException.stateReject(enabled ? "enable" : "disable" + " failed")); + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwModifierServiceImpl.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwModifierServiceImpl.java new file mode 100644 index 000000000..7374442aa --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwModifierServiceImpl.java @@ -0,0 +1,455 @@ +package com.webank.wedatasphere.warehouse.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import com.webank.wedatasphere.warehouse.cqe.DwModifierCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwModifierQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwModifierUpdateCommand; +import com.webank.wedatasphere.warehouse.dao.domain.*; +import com.webank.wedatasphere.warehouse.dao.domain.DwLayer; +import com.webank.wedatasphere.warehouse.dao.domain.DwThemeDomain; +import com.webank.wedatasphere.warehouse.dao.mapper.*; +import com.webank.wedatasphere.warehouse.dto.DwModifierDTO; +import com.webank.wedatasphere.warehouse.dto.DwModifierListDTO; +import com.webank.wedatasphere.warehouse.dto.DwModifierListItemDTO; +import com.webank.wedatasphere.warehouse.dto.PageInfo; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwDomainReferenceAdapter; +import com.webank.wedatasphere.warehouse.service.DwModifierService; +import com.webank.wedatasphere.warehouse.utils.PreconditionUtil; +import com.webank.wedatasphere.warehouse.utils.RegexUtil; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class DwModifierServiceImpl implements DwModifierService, DwDomainReferenceAdapter { + + private final DwModifierMapper dwModifierMapper; + private final DwModifierListMapper dwModifierListMapper; + private final DwStatisticalPeriodMapper dwStatisticalPeriodMapper; + private final DwLayerMapper dwLayerMapper; + private final DwThemeDomainMapper dwThemeDomainMapper; + + @Autowired + public DwModifierServiceImpl( + DwModifierMapper dwModifierMapper, + DwStatisticalPeriodMapper dwStatisticalPeriodMapper, + DwModifierListMapper dwModifierListMapper, + DwLayerMapper dwLayerMapper, + DwThemeDomainMapper dwThemeDomainMapper + ) { + this.dwModifierMapper = dwModifierMapper; + this.dwStatisticalPeriodMapper = dwStatisticalPeriodMapper; + this.dwModifierListMapper = dwModifierListMapper; + this.dwLayerMapper = dwLayerMapper; + this.dwThemeDomainMapper = dwThemeDomainMapper; + } + + @Override + public DwLayerMapper getDwLayerMapper() { + return dwLayerMapper; + } + + @Override + public DwThemeDomainMapper getDwThemeDomainMapper() { + return dwThemeDomainMapper; + } + + @Override + public DwStatisticalPeriodMapper getDwStatisticalPeriodMapper() { + return this.dwStatisticalPeriodMapper; + } + + @Override + public DwModifierMapper getDwModifierMapper() { + return dwModifierMapper; + } + + @Override + public Message queryAllModifiers(HttpServletRequest request, DwModifierQueryCommand command) throws DwException { + String typeName = command.getName(); + Boolean isAvailable = command.getEnabled(); + String theme = command.getTheme(); + String layer = command.getLayer(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (!Objects.isNull(isAvailable)) { + queryWrapper.eq("is_available", isAvailable); + } + if (Strings.isNotBlank(theme)) { + queryWrapper.eq("theme_area_en", theme); + } + if (Strings.isNotBlank(layer)) { + queryWrapper.eq("layer_area_en", layer); + } + + if (Strings.isNotBlank(typeName)) { + queryWrapper.and(qw -> { + queryWrapper.like("modifier_type", typeName).or().like("modifier_type_en", typeName); + }); + } + List records = this.dwModifierMapper.selectList(queryWrapper); + + List list = new ArrayList<>(); + DwModifierListItemDTO dto; + for (DwModifier modifier : records) { + dto = new DwModifierListItemDTO(); + BeanUtils.copyProperties(modifier, dto); + list.add(dto); + } + return Message.ok().data("list", list); + } + + @Override + public Message queryPage(HttpServletRequest request, DwModifierQueryCommand command) throws DwException { + Integer page = command.getPage(); + Integer size = command.getSize(); + String typeName = command.getName(); + if (Objects.isNull(page)) + page = 1; + + if (Objects.isNull(size)) + size = 10; + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (Strings.isNotBlank(typeName)) { + queryWrapper.like("modifier_type", typeName); + } + + if (!Objects.isNull(command.getEnabled())) { + queryWrapper.eq("is_available", command.getEnabled()); + } + + Page queryPage = new Page<>(page, size); + + IPage _page = this.dwModifierMapper.selectPage(queryPage, queryWrapper); + + List records = _page.getRecords(); + + List list = new ArrayList<>(); + DwModifierListItemDTO dto; + String username = SecurityFilter.getLoginUsername(request); + for (DwModifier modifier : records) { + dto = new DwModifierListItemDTO(); + BeanUtils.copyProperties(modifier, dto); + int modifierReferenceCount = getModifierReferenceCount(modifier.getId(), username); + dto.setReferenceCount(modifierReferenceCount); + list.add(dto); + } + +// List list = DwDecorationModelMapper.INSTANCE.toList(records); +// List list = new ArrayList<>(); + + PageInfo __page = new PageInfo<>(list, _page.getCurrent(), _page.getSize(), _page.getTotal()); + + return Message.ok().data("page", __page); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message create(HttpServletRequest request, DwModifierCreateCommand command) throws DwException { + Long themeDomainId = command.getThemeDomainId(); + Long layerId = command.getLayerId(); + String typeName = command.getTypeName(); + String typeEnName = command.getTypeEnName(); + +// String typeNameAlias = command.getTypeNameAlias(); +// String decorationList = command.getDecorationList(); + String description = command.getDescription(); + + PreconditionUtil.checkArgument(!Objects.isNull(themeDomainId), DwException.argumentReject("theme domain id should not empty")); + PreconditionUtil.checkArgument(!Objects.isNull(layerId), DwException.argumentReject("layer id should not empty")); + typeName = PreconditionUtil.checkStringArgumentNotBlankTrim(typeName, DwException.argumentReject("type name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(typeName), DwException.argumentReject("type name must be digitg, chinese and underline")); + typeEnName = PreconditionUtil.checkStringArgumentNotBlankTrim(typeEnName, DwException.argumentReject("type en name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(typeEnName), DwException.argumentReject("type en name must be digitg, alpha and underline")); +// typeNameAlias = PreconditionUtil.checkStringArgumentNotBlankTrim(typeNameAlias, DwException.argumentReject("typeNameAlias should not empty")); + + // 验证 主题域 分层是否存在 + QueryWrapper layerQueryWrapper = new QueryWrapper<>(); + layerQueryWrapper.eq("id", layerId); + layerQueryWrapper.eq("status", Boolean.TRUE); + DwLayer dwLayer = this.dwLayerMapper.selectOne(layerQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwLayer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(dwLayer.getIsAvailable(), DwException.stateReject("layer disabled")); + + QueryWrapper themeDomainQueryWrapper = new QueryWrapper<>(); + themeDomainQueryWrapper.eq("id", themeDomainId); + themeDomainQueryWrapper.eq("status", Boolean.TRUE); + DwThemeDomain dwThemeDomain = this.dwThemeDomainMapper.selectOne(themeDomainQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwThemeDomain), DwException.stateReject("theme domain not found")); + + // typeName 唯一性检测 + QueryWrapper nameUniqueCheckQuery = new QueryWrapper<>(); + nameUniqueCheckQuery.eq("modifier_type", typeName); + nameUniqueCheckQuery.eq("status", Boolean.TRUE); + DwModifier exist = this.dwModifierMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist), DwException.stateReject("modifier type name aleardy exists")); + + // typeNameEn 唯一性检测 + QueryWrapper nameAliasUniqueCheckQuery = new QueryWrapper<>(); + nameAliasUniqueCheckQuery.eq("modifier_type_en", typeEnName); + nameAliasUniqueCheckQuery.eq("status", Boolean.TRUE); + DwModifier exist2 = this.dwModifierMapper.selectOne(nameAliasUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist2), DwException.stateReject("modifier type en name aleardy exists")); + + Date now = new Date(); + + DwModifier record = new DwModifier(); + record.setThemeDomainId(dwThemeDomain.getId()); + record.setThemeArea(dwThemeDomain.getName()); + record.setThemeAreaEn(dwThemeDomain.getEnName()); + record.setLayerId(dwLayer.getId()); + record.setLayerArea(dwLayer.getName()); + record.setLayerAreaEn(dwLayer.getEnName()); + record.setModifierType(typeName); + record.setModifierTypeEn(typeEnName); + record.setDescription(description); + record.setIsAvailable(Boolean.TRUE); + record.setCreateTime(now); + record.setUpdateTime(now); + record.setStatus(Boolean.TRUE); + record.setLockVersion(1L); + + int insert = this.dwModifierMapper.insert(record); + PreconditionUtil.checkState(1 == insert, DwException.stateReject("create dw modifier failed")); + + // 新增修饰词列表信息 + List list = command.getList(); + if (!Objects.isNull(list) && !list.isEmpty()) { + for (DwModifierCreateCommand.DwModifierCreateListItem item : list) { + String name = item.getName(); + String identifier = item.getIdentifier(); + String formula = item.getFormula(); + if (Strings.isBlank(name) || Strings.isBlank(identifier) || Strings.isBlank(formula)) { + continue; + } + + DwModifierList m = new DwModifierList(); + m.setModifierId(record.getId()); + m.setName(name); + m.setIdentifier(identifier); + m.setFormula(formula); + m.setCreateTime(now); + m.setUpdateTime(now); + this.dwModifierListMapper.insert(m); + } + } + + return Message.ok().data("id", record.getId()); + } + + @Override + public Message getById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwModifier record = this.dwModifierMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("modifier not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("modifier has been removed")); + + DwModifierDTO dto = new DwModifierDTO(); +// DwModifierDTO dto = this.dwModifierModelMapper.toDTO(record); + BeanUtils.copyProperties(record, dto); + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isModifierInUse(record.getId(), username); + dto.setReferenced(inUse); + + QueryWrapper dwModifierListQueryWrapper = new QueryWrapper<>(); + dwModifierListQueryWrapper.eq("modifier_id", record.getId()); + List dwModifierLists = this.dwModifierListMapper.selectList(dwModifierListQueryWrapper); + + List dwModifierListDTOs = new ArrayList<>(); + for (DwModifierList item : dwModifierLists) { + DwModifierListDTO dwModifierListDTO = new DwModifierListDTO();/*this.dwModifierListModelMapper.toListItem(item);*/ + BeanUtils.copyProperties(item, dwModifierListDTO); + dwModifierListDTOs.add(dwModifierListDTO); + } + + dto.setList(dwModifierListDTOs); + + return Message.ok().data("item", dto); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message deleteById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + DwModifier record = this.dwModifierMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("modifier not found")); + + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isModifierInUse(record.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("modifier is in use, id = {}, name = {}", record.getId(), record.getModifierType())); + +// if (Objects.equals(Boolean.FALSE, record.getStatus())) { +// return Message.ok(); +// } +// record.setStatus(Boolean.FALSE); +// int i = this.dwModifierMapper.updateById(record); + int i = this.dwModifierMapper.deleteById(record); + PreconditionUtil.checkState(1 == i, DwException.stateReject("remove action failed")); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message update(HttpServletRequest request, DwModifierUpdateCommand command) throws DwException { + Long id = command.getId(); + Long themeDomainId = command.getThemeDomainId(); + Long layerId = command.getLayerId(); + String typeName = command.getTypeName(); + String typeEnName = command.getTypeEnName(); + String description = command.getDescription(); + + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not empty")); + PreconditionUtil.checkArgument(!Objects.isNull(themeDomainId), DwException.argumentReject("theme domain id should not empty")); + PreconditionUtil.checkArgument(!Objects.isNull(layerId), DwException.argumentReject("layer id should not empty")); +// typeName = PreconditionUtil.checkStringArgumentNotBlankTrim(typeName, DwException.argumentReject("modifier type name should not empty")); + typeName = PreconditionUtil.checkStringArgumentNotBlankTrim(typeName, DwException.argumentReject("type name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(typeName), DwException.argumentReject("type name must be digitg, chinese and underline")); + + typeEnName = PreconditionUtil.checkStringArgumentNotBlankTrim(typeEnName, DwException.argumentReject("type en name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(typeEnName), DwException.argumentReject("type en name must be digitg, alpha and underline")); + // 验证 主题域 分层是否存在 + QueryWrapper layerQueryWrapper = new QueryWrapper<>(); + layerQueryWrapper.eq("id", layerId); + layerQueryWrapper.eq("status", Boolean.TRUE); + DwLayer dwLayer = this.dwLayerMapper.selectOne(layerQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwLayer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(dwLayer.getIsAvailable(), DwException.stateReject("layer disabled")); + + QueryWrapper themeDomainQueryWrapper = new QueryWrapper<>(); + themeDomainQueryWrapper.eq("id", themeDomainId); + themeDomainQueryWrapper.eq("status", Boolean.TRUE); + DwThemeDomain dwThemeDomain = this.dwThemeDomainMapper.selectOne(themeDomainQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwThemeDomain), DwException.stateReject("theme domain not found")); + + // 实体校验 + DwModifier record = this.dwModifierMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("modifier not found")); +// String orgName = record.getModifierTypeEn(); + + // typeName 唯一性检测 + QueryWrapper nameUniqueCheckQuery = new QueryWrapper<>(); + nameUniqueCheckQuery.eq("modifier_type", typeName); + nameUniqueCheckQuery.ne("id", id); + nameUniqueCheckQuery.eq("status", Boolean.TRUE); + DwModifier exist = this.dwModifierMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist), DwException.stateReject("modifier type name aleardy exists")); + // typeNameAlias 唯一性检测 + QueryWrapper nameAliasUniqueCheckQuery = new QueryWrapper<>(); + nameAliasUniqueCheckQuery.eq("modifier_type_en", typeEnName); + nameAliasUniqueCheckQuery.ne("id", id); + nameAliasUniqueCheckQuery.eq("status", Boolean.TRUE); + DwModifier exist2 = this.dwModifierMapper.selectOne(nameAliasUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist2), DwException.stateReject("modifier type en name aleardy exists")); + + Long oldVersion = record.getLockVersion(); + + Date now = new Date(); + +// record.setSubjectDomainId(dwThemeDomain.getId()); +// record.setLayerId(dwLayer.getId()); + record.setModifierType(typeName); + record.setThemeDomainId(dwThemeDomain.getId()); + record.setThemeArea(dwThemeDomain.getName()); + record.setLayerId(dwLayer.getId()); + record.setLayerArea(dwLayer.getName()); + record.setDescription(description); +// record.setModifyUser(user); + record.setUpdateTime(now); + record.setLockVersion(oldVersion + 1); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + + int i = this.dwModifierMapper.update(record, updateWrapper); + PreconditionUtil.checkState(1 == i, DwException.stateReject("update modifier failed")); + + // 更新修饰词列表信息 + List list = command.getList(); + if (!Objects.isNull(list) && !list.isEmpty()) { + // 如果不为空,先清空某个 modifier 下的关联修饰词 + QueryWrapper dwModifierListQueryWrapper = new QueryWrapper<>(); + dwModifierListQueryWrapper.eq("modifier_id", record.getId()); + this.dwModifierListMapper.delete(dwModifierListQueryWrapper); + + // 删除后再新增 + for (DwModifierUpdateCommand.DwModifierUpdateListItem item : list) { + String name = item.getName(); + String identifier = item.getIdentifier(); + String formula = item.getFormula(); + if (Strings.isBlank(name) || Strings.isBlank(identifier) || Strings.isBlank(formula)) { + continue; + } + + DwModifierList m = new DwModifierList(); + m.setModifierId(record.getId()); + m.setName(name); + m.setIdentifier(identifier); + m.setFormula(formula); + m.setCreateTime(now); + m.setUpdateTime(now); + this.dwModifierListMapper.insert(m); + } + } else { + QueryWrapper dwModifierListQueryWrapper = new QueryWrapper<>(); + dwModifierListQueryWrapper.eq("modifier_id", record.getId()); + this.dwModifierListMapper.delete(dwModifierListQueryWrapper); + } + + + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message enable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.TRUE); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message disable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.FALSE); + return Message.ok(); + } + + private void changeEnable(HttpServletRequest request, Long id, Boolean enabled) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwModifier record = this.dwModifierMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("modifier not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("modifier has been removed")); + if (Objects.equals(enabled, record.getIsAvailable())) { + return; + } + + Long oldVersion = record.getLockVersion(); + record.setUpdateTime(new Date()); + record.setIsAvailable(enabled); + record.setLockVersion(oldVersion + 1); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + int update = this.dwModifierMapper.update(record, updateWrapper); + PreconditionUtil.checkState(1 == update, DwException.stateReject(enabled ? "enable" : "disable" + " failed")); + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwStatisticalPeriodServiceImpl.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwStatisticalPeriodServiceImpl.java new file mode 100644 index 000000000..7a36ee089 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwStatisticalPeriodServiceImpl.java @@ -0,0 +1,446 @@ +package com.webank.wedatasphere.warehouse.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwStatisticalPeriodUpdateCommand; +import com.webank.wedatasphere.warehouse.dao.domain.DwLayer; +import com.webank.wedatasphere.warehouse.dao.domain.DwStatisticalPeriod; +import com.webank.wedatasphere.warehouse.dao.domain.DwThemeDomain; +import com.webank.wedatasphere.warehouse.dao.mapper.DwLayerMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwModifierMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwStatisticalPeriodMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwThemeDomainMapper; +import com.webank.wedatasphere.warehouse.dao.vo.DwStatisticalPeriodVo; +import com.webank.wedatasphere.warehouse.dto.PageInfo; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.service.DwDomainReferenceAdapter; +import com.webank.wedatasphere.warehouse.service.DwStatisticalPeriodService; +import com.webank.wedatasphere.warehouse.utils.PreconditionUtil; +import com.webank.wedatasphere.warehouse.utils.RegexUtil; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +@Service +public class DwStatisticalPeriodServiceImpl implements DwStatisticalPeriodService, DwDomainReferenceAdapter { + + private final DwLayerMapper dwLayerMapper; + private final DwThemeDomainMapper dwThemeDomainMapper; + private final DwStatisticalPeriodMapper dwStatisticalPeriodMapper; + private final DwModifierMapper dwModifierMapper; + + @Autowired + public DwStatisticalPeriodServiceImpl( + final DwStatisticalPeriodMapper dwStatisticalPeriodMapper, + final DwLayerMapper dwLayerMapper, + final DwThemeDomainMapper dwThemeDomainMapper, + final DwModifierMapper dwModifierMapper + + ) { + this.dwStatisticalPeriodMapper = dwStatisticalPeriodMapper; + this.dwLayerMapper = dwLayerMapper; + this.dwThemeDomainMapper = dwThemeDomainMapper; + this.dwModifierMapper = dwModifierMapper; + } + + @Override + public DwLayerMapper getDwLayerMapper() { + return dwLayerMapper; + } + + @Override + public DwThemeDomainMapper getDwThemeDomainMapper() { + return dwThemeDomainMapper; + } + + @Override + public DwModifierMapper getDwModifierMapper() { + return dwModifierMapper; + } + + @Override + public DwStatisticalPeriodMapper getDwStatisticalPeriodMapper() { + return dwStatisticalPeriodMapper; + } + + @Override + public Message queryAll(HttpServletRequest request, DwStatisticalPeriodQueryCommand command) throws DwException { + String name = command.getName(); + Boolean enabled = command.getEnabled(); + String layer = command.getLayer(); + String theme = command.getTheme(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (!Objects.isNull(enabled)) { + queryWrapper.eq("is_available", enabled); + } + + if (Strings.isNotBlank(layer)) { + Optional layerOptional = this.dwLayerMapper.findByName(layer); + layerOptional.ifPresent(dwLayer -> queryWrapper.eq("layer_id", dwLayer.getId())); + } + + if (Strings.isNotBlank(theme)) { + Optional themeOptional = this.dwThemeDomainMapper.findByName(theme); + themeOptional.ifPresent(dwThemeDomain -> queryWrapper.eq("theme_domain_id", dwThemeDomain.getId())); + } + + if (Strings.isNotBlank(name)) { + queryWrapper.and(qw -> { + qw.like("name", name).or().like("en_name", name); + }); + } + + List recs = this.dwStatisticalPeriodMapper.selectList(queryWrapper); + + List records = new ArrayList<>(); + for (DwStatisticalPeriod rec : recs) { + DwStatisticalPeriodVo vo = new DwStatisticalPeriodVo(); + vo.setId(rec.getId()); + vo.setName(rec.getName()); + vo.setEnName(rec.getEnName()); + vo.setDescription(rec.getDescription()); + vo.setOwner(rec.getOwner()); + vo.setStatus(rec.getStatus()); + vo.setCreateTime(rec.getCreateTime()); + vo.setUpdateTime(rec.getUpdateTime()); + vo.setPrincipalName(rec.getPrincipalName()); + vo.setStartTimeFormula(rec.getStartTimeFormula()); + vo.setEndTimeFormula(rec.getEndTimeFormula()); + vo.setLayerId(rec.getLayerId()); + vo.setThemeDomainId(rec.getThemeDomainId()); + vo.setIsAvailable(rec.getIsAvailable()); + DwLayer dwLayer = this.dwLayerMapper.selectById(rec.getLayerId()); + Optional.ofNullable(dwLayer).ifPresent(layerBean -> vo.setLayerArea(layerBean.getName())); + + DwThemeDomain dwThemeDomain = dwThemeDomainMapper.selectById(rec.getThemeDomainId()); + Optional.ofNullable(dwThemeDomain).ifPresent(themeBean -> vo.setThemeArea(themeBean.getName())); + + records.add(vo); + } + +// List records = this.dwStatisticalPeriodMapper.selectItems(queryWrapper); + return Message.ok().data("list", records); + } + + @Override + public Message queryPage(HttpServletRequest request, DwStatisticalPeriodQueryCommand command) throws DwException { + Integer page = command.getPage(); + Integer size = command.getSize(); + String name = command.getName(); + if (Objects.isNull(page)) + page = 1; + + if (Objects.isNull(size)) + size = 10; + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (!Objects.isNull(command.getEnabled())) { + queryWrapper.eq("is_available", command.getEnabled()); + } + + if (Strings.isNotBlank(name)) { + queryWrapper.and(qw -> { + qw.like("name", name).or().like("en_name", name); + }); + } + + Page queryPage = new Page<>(page, size); + +// IPage _page = this.dwStatisticalPeriodMapper.selectPageItems(queryPage, queryWrapper); +// IPage _page = this.dwStatisticalPeriodMapper.selectPageItems(queryPage, params); + Page _page = this.dwStatisticalPeriodMapper.selectPage(queryPage, queryWrapper); + List recs = _page.getRecords(); + List records = new ArrayList<>(); + String username = SecurityFilter.getLoginUsername(request); + for (DwStatisticalPeriod rec : recs) { + DwStatisticalPeriodVo vo = new DwStatisticalPeriodVo(); + vo.setId(rec.getId()); + vo.setName(rec.getName()); + vo.setEnName(rec.getEnName()); + vo.setDescription(rec.getDescription()); + vo.setOwner(rec.getOwner()); + vo.setStatus(rec.getStatus()); + vo.setCreateTime(rec.getCreateTime()); + vo.setUpdateTime(rec.getUpdateTime()); + vo.setPrincipalName(rec.getPrincipalName()); + vo.setStartTimeFormula(rec.getStartTimeFormula()); + vo.setEndTimeFormula(rec.getEndTimeFormula()); + vo.setLayerId(rec.getLayerId()); + vo.setThemeDomainId(rec.getThemeDomainId()); + vo.setIsAvailable(rec.getIsAvailable()); + // 单独查询 + DwLayer dwLayer = this.dwLayerMapper.selectById(rec.getLayerId()); + Optional.ofNullable(dwLayer).ifPresent(layer -> { + vo.setLayerArea(layer.getName()); + vo.setLayerAreaEn(layer.getEnName()); + }); + DwThemeDomain dwThemeDomain = dwThemeDomainMapper.selectById(rec.getThemeDomainId()); + Optional.ofNullable(dwThemeDomain).ifPresent(theme -> { + vo.setThemeArea(theme.getName()); + vo.setThemeAreaEn(theme.getEnName()); + }); + int statisticalPeriodReferenceCount = getStatisticalPeriodReferenceCount(rec.getId(), username); + vo.setReferenceCount(statisticalPeriodReferenceCount); + records.add(vo); + } + + PageInfo __page = new PageInfo<>(records, _page.getCurrent(), _page.getSize(), _page.getTotal()); + + return Message.ok().data("page", __page); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message create(HttpServletRequest request, DwStatisticalPeriodCreateCommand command) throws DwException { + String name = command.getName(); + String enName = command.getEnName(); + String principalName = command.getPrincipalName(); + String owner = command.getOwner(); + String description = command.getDescription(); + Long themeDomainId = command.getThemeDomainId(); + Long layerId = command.getLayerId(); + String statStartFormula = command.getStatStartFormula(); + String statEndFormula = command.getStatEndFormula(); + + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("owner should not empty")); + statStartFormula = PreconditionUtil.checkStringArgumentNotBlankTrim(statStartFormula, DwException.argumentReject("stat start formula should not empty")); + statEndFormula = PreconditionUtil.checkStringArgumentNotBlankTrim(statEndFormula, DwException.argumentReject("stat end formula should not empty")); + PreconditionUtil.checkState(!Objects.isNull(layerId), DwException.argumentReject("layer id not empty")); + PreconditionUtil.checkState(!Objects.isNull(themeDomainId), DwException.argumentReject("theme domain id not empty")); + + // 验证 主题域 分层是否存在 + QueryWrapper layerQueryWrapper = new QueryWrapper<>(); + layerQueryWrapper.eq("id", layerId); + layerQueryWrapper.eq("status", Boolean.TRUE); + DwLayer dwLayer = this.dwLayerMapper.selectOne(layerQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwLayer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(dwLayer.getIsAvailable(), DwException.stateReject("layer disabled")); + + QueryWrapper themeDomainQueryWrapper = new QueryWrapper<>(); + themeDomainQueryWrapper.eq("id", themeDomainId); + themeDomainQueryWrapper.eq("status", Boolean.TRUE); + DwThemeDomain dwThemeDomain = this.dwThemeDomainMapper.selectOne(themeDomainQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwThemeDomain), DwException.stateReject("theme domain not found")); + + Date now = new Date(); + + DwStatisticalPeriod record = new DwStatisticalPeriod(); + record.setName(name); + record.setEnName(enName); + record.setThemeDomainId(themeDomainId); + record.setLayerId(layerId); + record.setDescription(description); + record.setPrincipalName(principalName); + record.setStartTimeFormula(statStartFormula); + record.setEndTimeFormula(statEndFormula); + record.setOwner(owner); + record.setIsAvailable(Boolean.TRUE); + record.setCreateTime(now); + record.setUpdateTime(now); + record.setStatus(Boolean.TRUE); + record.setLockVersion(1L); + + int insert = this.dwStatisticalPeriodMapper.insert(record); + PreconditionUtil.checkState(1 == insert, DwException.stateReject("create statistical period failed")); + + return Message.ok().data("id", record.getId()); + } + + @Override + public Message getById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwStatisticalPeriod period = this.dwStatisticalPeriodMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(period), DwException.stateReject("statistical period not found")); + PreconditionUtil.checkState(period.getStatus(), DwException.stateReject("statistical period has been removed")); + + DwStatisticalPeriodVo record = new DwStatisticalPeriodVo(); + record.setId(period.getId()); + record.setName(period.getName()); + record.setEnName(period.getEnName()); + record.setDescription(period.getDescription()); + record.setOwner(period.getOwner()); + record.setStatus(period.getStatus()); + record.setCreateTime(period.getCreateTime()); + record.setUpdateTime(period.getUpdateTime()); + record.setPrincipalName(period.getPrincipalName()); + record.setStartTimeFormula(period.getStartTimeFormula()); + record.setEndTimeFormula(period.getEndTimeFormula()); + record.setLayerId(period.getLayerId()); + record.setThemeDomainId(period.getThemeDomainId()); + record.setIsAvailable(period.getIsAvailable()); + // 单独查询 + Optional.ofNullable(period.getLayerId()).ifPresent(lid -> { + DwLayer dwLayer = this.dwLayerMapper.selectById(lid); + Optional.ofNullable(dwLayer).ifPresent(layer -> { + record.setLayerArea(layer.getName()); + }); + }); + + Optional.ofNullable(period.getThemeDomainId()).ifPresent(tid -> { + DwThemeDomain dwThemeDomain = dwThemeDomainMapper.selectById(tid); + Optional.ofNullable(dwThemeDomain).ifPresent(theme -> { + record.setThemeArea(theme.getName()); + }); + }); + // 应用查询 + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isStatisticalPeriodInUse(record.getId(), username); + record.setReferenced(inUse); + return Message.ok().data("item", record); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message deleteById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + DwStatisticalPeriod record = this.dwStatisticalPeriodMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("statistical period not found")); + + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isStatisticalPeriodInUse(record.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("statistical period is in use, id = {}, name = {}", record.getId(), record.getName())); + +// if (Objects.equals(Boolean.FALSE, record.getStatus())) { +// return Message.ok(); +// } +// Long oldLockVersion = record.getLockVersion(); +// QueryWrapper updateWrapper = new QueryWrapper<>(); +// updateWrapper.eq("lock_version", oldLockVersion); +// updateWrapper.eq("id", record.getId()); +// +// DwStatisticalPeriod updateBean = new DwStatisticalPeriod(); +// updateBean.setLockVersion(oldLockVersion + 1); +// updateBean.setStatus(Boolean.FALSE); +// +// int i = this.dwStatisticalPeriodMapper.update(updateBean, updateWrapper); + int i = this.dwStatisticalPeriodMapper.deleteById(record); + PreconditionUtil.checkState(1 == i, DwException.stateReject("remove action failed")); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message update(HttpServletRequest request, DwStatisticalPeriodUpdateCommand command) throws DwException { + Long id = command.getId(); + String name = command.getName(); + String enName = command.getEnName(); + String principalName = command.getPrincipalName(); + String owner = command.getOwner(); + String description = command.getDescription(); + Long themeDomainId = command.getThemeDomainId(); + Long layerId = command.getLayerId(); + String statStartFormula = command.getStatStartFormula(); + String statEndFormula = command.getStatEndFormula(); + + PreconditionUtil.checkState(!Objects.isNull(id), DwException.argumentReject("id not empty")); + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("owner should not empty")); + statStartFormula = PreconditionUtil.checkStringArgumentNotBlankTrim(statStartFormula, DwException.argumentReject("stat start formula should not empty")); + statEndFormula = PreconditionUtil.checkStringArgumentNotBlankTrim(statEndFormula, DwException.argumentReject("stat end formula should not empty")); + PreconditionUtil.checkState(!Objects.isNull(layerId), DwException.argumentReject("layer id not empty")); + PreconditionUtil.checkState(!Objects.isNull(themeDomainId), DwException.argumentReject("theme domain id not empty")); + + QueryWrapper statisticalPeriodQueryWrapper = new QueryWrapper<>(); + statisticalPeriodQueryWrapper.eq("id", id); + statisticalPeriodQueryWrapper.eq("status", Boolean.TRUE); + DwStatisticalPeriod record = this.dwStatisticalPeriodMapper.selectOne(statisticalPeriodQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("period not found")); + PreconditionUtil.checkState(record.getIsAvailable(), DwException.stateReject("period disabled")); + + // 验证 主题域 分层是否存在 + QueryWrapper layerQueryWrapper = new QueryWrapper<>(); + layerQueryWrapper.eq("id", layerId); + layerQueryWrapper.eq("status", Boolean.TRUE); + DwLayer dwLayer = this.dwLayerMapper.selectOne(layerQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwLayer), DwException.stateReject("layer not found")); + PreconditionUtil.checkState(dwLayer.getIsAvailable(), DwException.stateReject("layer disabled")); + + QueryWrapper themeDomainQueryWrapper = new QueryWrapper<>(); + themeDomainQueryWrapper.eq("id", themeDomainId); + themeDomainQueryWrapper.eq("status", Boolean.TRUE); + DwThemeDomain dwThemeDomain = this.dwThemeDomainMapper.selectOne(themeDomainQueryWrapper); + PreconditionUtil.checkState(!Objects.isNull(dwThemeDomain), DwException.stateReject("theme domain not found")); + + Date now = new Date(); + Long oldLockVersion = record.getLockVersion(); + + QueryWrapper updateWrapper = new QueryWrapper<>(); + updateWrapper.eq("lock_version", oldLockVersion); + updateWrapper.eq("id", record.getId()); + + record.setName(name); + record.setEnName(enName); + record.setThemeDomainId(themeDomainId); + record.setLayerId(layerId); + record.setDescription(description); + record.setPrincipalName(principalName); + record.setStartTimeFormula(statStartFormula); + record.setEndTimeFormula(statEndFormula); + record.setOwner(owner); + record.setUpdateTime(now); + record.setLockVersion(oldLockVersion + 1); + + int update = this.dwStatisticalPeriodMapper.update(record, updateWrapper); + PreconditionUtil.checkState(1 == update, DwException.stateReject("update statistical period failed")); + + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message enable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.TRUE); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message disable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.FALSE); + return Message.ok(); + } + + private void changeEnable(HttpServletRequest request, Long id, Boolean enabled) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwStatisticalPeriod record = this.dwStatisticalPeriodMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("statistical period not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("statistical period has been removed")); + if (Objects.equals(enabled, record.getIsAvailable())) { + return; + } + + Long oldVersion = record.getLockVersion(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + + DwStatisticalPeriod updateBean = new DwStatisticalPeriod(); + updateBean.setIsAvailable(enabled); + updateBean.setUpdateTime(new Date()); + updateBean.setLockVersion(oldVersion + 1); + + int update = this.dwStatisticalPeriodMapper.update(updateBean, updateWrapper); + PreconditionUtil.checkState(1 == update, DwException.stateReject(enabled ? "enable" : "disable" + " failed")); + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwThemeDomainServiceImpl.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwThemeDomainServiceImpl.java new file mode 100644 index 000000000..e613e416e --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/service/impl/DwThemeDomainServiceImpl.java @@ -0,0 +1,431 @@ +package com.webank.wedatasphere.warehouse.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.webank.wedatasphere.dss.data.governance.entity.ClassificationConstant; +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient; +import com.webank.wedatasphere.dss.data.governance.request.CreateModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.request.DeleteModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.request.UpdateModelTypeAction; +import com.webank.wedatasphere.dss.data.governance.response.CreateModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.DeleteModelTypeResult; +import com.webank.wedatasphere.dss.data.governance.response.UpdateModelTypeResult; +import org.apache.linkis.common.exception.ErrorException; +import org.apache.linkis.server.Message; +import org.apache.linkis.server.security.SecurityFilter; +import com.webank.wedatasphere.warehouse.LinkisRemoteClientHolder; +import com.webank.wedatasphere.warehouse.cqe.DwThemeDomainCreateCommand; +import com.webank.wedatasphere.warehouse.cqe.DwThemeDomainQueryCommand; +import com.webank.wedatasphere.warehouse.cqe.DwThemeDomainUpdateCommand; +import com.webank.wedatasphere.warehouse.dao.domain.DwThemeDomain; +import com.webank.wedatasphere.warehouse.dao.mapper.DwLayerMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwModifierMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwStatisticalPeriodMapper; +import com.webank.wedatasphere.warehouse.dao.mapper.DwThemeDomainMapper; +import com.webank.wedatasphere.warehouse.dto.DwThemeDomainDTO; +import com.webank.wedatasphere.warehouse.dto.DwThemeDomainListItemDTO; +import com.webank.wedatasphere.warehouse.dto.PageInfo; +import com.webank.wedatasphere.warehouse.exception.DwException; +import com.webank.wedatasphere.warehouse.exception.DwExceptionCode; +import com.webank.wedatasphere.warehouse.service.DwDomainReferenceAdapter; +import com.webank.wedatasphere.warehouse.service.DwThemeDomainService; +import com.webank.wedatasphere.warehouse.utils.PreconditionUtil; +import com.webank.wedatasphere.warehouse.utils.RegexUtil; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class DwThemeDomainServiceImpl implements DwThemeDomainService, DwDomainReferenceAdapter { + + private final DwLayerMapper dwLayerMapper; + private final DwThemeDomainMapper dwThemeDomainMapper; + private final DwModifierMapper dwModifierMapper; + private final DwStatisticalPeriodMapper dwStatisticalPeriodMapper; + + @Autowired + public DwThemeDomainServiceImpl(final DwLayerMapper dwLayerMapper, final DwThemeDomainMapper dwThemeDomainMapper, final DwModifierMapper dwModifierMapper, final DwStatisticalPeriodMapper dwStatisticalPeriodMapper) { + this.dwLayerMapper = dwLayerMapper; + this.dwThemeDomainMapper = dwThemeDomainMapper; + this.dwModifierMapper = dwModifierMapper; + this.dwStatisticalPeriodMapper = dwStatisticalPeriodMapper; + } + + @Override + public DwLayerMapper getDwLayerMapper() { + return dwLayerMapper; + } + + @Override + public DwThemeDomainMapper getDwThemeDomainMapper() { + return dwThemeDomainMapper; + } + + @Override + public DwModifierMapper getDwModifierMapper() { + return dwModifierMapper; + } + + @Override + public DwStatisticalPeriodMapper getDwStatisticalPeriodMapper() { + return dwStatisticalPeriodMapper; + } + + @Override + public Message queryAllThemeDomains(HttpServletRequest request, DwThemeDomainQueryCommand command) throws DwException { + String name = command.getName(); + Boolean enabled = command.getEnabled(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (!Objects.isNull(enabled)) { + queryWrapper.eq("is_available", enabled); + } + if (Strings.isNotBlank(name)) { + queryWrapper.and(qw -> { + qw.like("name", name).or().like("en_name", name); + }); + } + + List records = this.dwThemeDomainMapper.selectList(queryWrapper); + + List list = new ArrayList<>(); + for (DwThemeDomain domain : records) { + DwThemeDomainListItemDTO dwThemeDomainListItemDTO = new DwThemeDomainListItemDTO(); + BeanUtils.copyProperties(domain, dwThemeDomainListItemDTO); + list.add(dwThemeDomainListItemDTO); + } + + return Message.ok().data("list", list); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message queryPage(HttpServletRequest request, DwThemeDomainQueryCommand command) throws DwException { + Integer page = command.getPage(); + Integer size = command.getSize(); + String name = command.getName(); + Boolean enabled = command.getEnabled(); + if (Objects.isNull(page)) + page = 1; + + if (Objects.isNull(size)) + size = 10; + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", Boolean.TRUE); + if (Objects.nonNull(enabled)) { + queryWrapper.eq("is_available", enabled); + } + if (Strings.isNotBlank(name)) { + queryWrapper.and(qw -> { + qw.like("name", name).or().like("en_name", name); + }); + } + Page queryPage = new Page<>(page, size); + + IPage _page = this.dwThemeDomainMapper.selectPage(queryPage, queryWrapper); + + List records = _page.getRecords(); + List list = new ArrayList<>(); + String username = SecurityFilter.getLoginUsername(request); + for (DwThemeDomain domain : records) { + DwThemeDomainListItemDTO dwThemeDomainListItemDTO = new DwThemeDomainListItemDTO();/*= this.dwThemeDomainModelMapper.toListItem(domain)*/; + BeanUtils.copyProperties(domain, dwThemeDomainListItemDTO); + + int themeDomainReferenceCount = getThemeDomainReferenceCount(domain.getId(), username); + dwThemeDomainListItemDTO.setReferenceCount(themeDomainReferenceCount); + + list.add(dwThemeDomainListItemDTO); + } + + PageInfo __page = new PageInfo<>(list, _page.getCurrent(), _page.getSize(), _page.getTotal()); + + return Message.ok().data("page", __page); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message create(HttpServletRequest request, DwThemeDomainCreateCommand command) throws DwException { + String username = SecurityFilter.getLoginUsername(request); +// String username = "hdfs"; + String name = command.getName(); + String enName = command.getEnName(); + String principalName = command.getPrincipalName(); + String owner = command.getOwner(); + Integer sort = command.getSort(); + String description = command.getDescription(); +// String authority = command.getAuthority(); + +// name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); +// enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("en name should not empty")); + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("owner should not empty")); +// authority = PreconditionUtil.checkStringArgumentNotBlankTrim(authority, DwException.argumentReject("authority should not empty")); + + if (Objects.isNull(sort)) { + sort = 1; + } + +// if (Strings.isBlank(availableRoles)) { +// availableRoles = "ALL"; +// } + +// String user = "hdfs"; + + Date now = new Date(); + + DwThemeDomain record = new DwThemeDomain(); + record.setName(name); + record.setEnName(enName); + record.setDescription(description); + record.setPrincipalName(principalName); +// record.setAvailableRoles(availableRoles); + record.setOwner(owner); + record.setIsAvailable(Boolean.TRUE); +// record.setCreateUser(user); + record.setSort(sort); + record.setCreateTime(now); + record.setUpdateTime(now); + record.setStatus(Boolean.TRUE); + record.setLockVersion(1L); + + int insert = this.dwThemeDomainMapper.insert(record); + PreconditionUtil.checkState(1 == insert, DwException.stateReject("create dw theme domain failed")); + + // 建立关联 + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + CreateModelTypeAction action = new CreateModelTypeAction.Builder().setType(ClassificationConstant.THEME).setName(enName).setUser(username).build(); + CreateModelTypeResult result = dataAssetsRemoteClient.createModelType(action); + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.CREATE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.CREATE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + + return Message.ok().data("id", record.getId()); + } + + @Override + public Message getById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwThemeDomain record = this.dwThemeDomainMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("theme domain not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("theme domain has been removed")); + +// DwThemeDomainDTO dto = this.dwThemeDomainModelMapper.toDTO(record); + String username = SecurityFilter.getLoginUsername(request); + boolean inUse = isThemeDomainInUse(record.getId(), username); + DwThemeDomainDTO dto = new DwThemeDomainDTO(); + BeanUtils.copyProperties(record, dto); + dto.setReferenced(inUse); + + return Message.ok().data("item", dto); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message deleteById(HttpServletRequest request, Long id) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + DwThemeDomain record = this.dwThemeDomainMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("theme domain not found")); + + String username = SecurityFilter.getLoginUsername(request); + + // check in use + // statistical_period & modifier & data_model client api check + boolean inUse = isThemeDomainInUse(record.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("theme domain is in use")); + +// if (Objects.equals(Boolean.FALSE, record.getStatus())) { +// return Message.ok(); +// } +// record.setStatus(Boolean.FALSE); +// int i = this.dwThemeDomainMapper.updateById(record); + // physical delete, because of name unique + int i = this.dwThemeDomainMapper.deleteById(record); + PreconditionUtil.checkState(1 == i, DwException.stateReject("remove action failed")); + + // 删除关联 + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + DeleteModelTypeAction action = new DeleteModelTypeAction.Builder().setType(ClassificationConstant.THEME).setName(record.getEnName()).setUser(username).build(); + DeleteModelTypeResult result = dataAssetsRemoteClient.deleteModelType(action); + + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.DELETE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.DELETE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message update(HttpServletRequest request, DwThemeDomainUpdateCommand command) throws DwException { + String username = SecurityFilter.getLoginUsername(request); + // 基本参数校验 + Long id = command.getId(); + String name = command.getName(); + String enName = command.getEnName(); + String owner = command.getOwner(); + Integer sort = command.getSort(); + String principalName = command.getPrincipalName(); +// String authority = command.getAuthority(); + String description = command.getDescription(); + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); +// name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); +// enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("en name should not empty")); + name = PreconditionUtil.checkStringArgumentNotBlankTrim(name, DwException.argumentReject("name should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkCnName(name), DwException.argumentReject("name must be digitg, chinese and underline")); + enName = PreconditionUtil.checkStringArgumentNotBlankTrim(enName, DwException.argumentReject("name alias should not empty")); + PreconditionUtil.checkArgument(RegexUtil.checkEnName(enName), DwException.argumentReject("name must be digit, alpha and underline")); + owner = PreconditionUtil.checkStringArgumentNotBlankTrim(owner, DwException.argumentReject("owner should not empty")); +// authority = PreconditionUtil.checkStringArgumentNotBlankTrim(authority, DwException.argumentReject("authority should not empty")); + +// if (Strings.isBlank(principalName)) { +// principalName = "ALL"; +// } + + if (Objects.isNull(sort)) { + sort = 1; + } + + // 实体校验 + DwThemeDomain record = this.dwThemeDomainMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("theme domain not found")); + PreconditionUtil.checkState(record.getIsAvailable(), DwException.stateReject("theme domain is unAvailable")); + + String orgName = record.getEnName(); + + // if name enName not equal to database attribute, we should check domain if in use + if (!Objects.equals(name, record.getName()) || !Objects.equals(enName, record.getEnName())) { + // check in use + // statistical_period & modifier & data_model client api check + + boolean inUse = isThemeDomainInUse(record.getId(), username); + PreconditionUtil.checkState(!inUse, DwException.stateReject("theme domain is in use")); + } + + // name 唯一性检测 + QueryWrapper nameUniqueCheckQuery = new QueryWrapper<>(); + nameUniqueCheckQuery.eq("name", name); + nameUniqueCheckQuery.ne("id", id); + nameUniqueCheckQuery.eq("status", Boolean.TRUE); + DwThemeDomain exist = this.dwThemeDomainMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(exist), DwException.stateReject("theme domain name aleardy exists")); + + // name alias 唯一性检测 + QueryWrapper nameAliasUniqueCheckQuery = new QueryWrapper<>(); + nameAliasUniqueCheckQuery.eq("en_name", enName); + nameAliasUniqueCheckQuery.ne("id", id); + nameAliasUniqueCheckQuery.eq("status", Boolean.TRUE); + DwThemeDomain nameAliasExist = this.dwThemeDomainMapper.selectOne(nameUniqueCheckQuery); + PreconditionUtil.checkState(Objects.isNull(nameAliasExist), DwException.stateReject("theme domain en name aleardy exists")); + + Long oldVersion = record.getLockVersion(); + + Date now = new Date(); + record.setName(name); + record.setEnName(enName); + record.setDescription(description); + record.setPrincipalName(principalName); + record.setOwner(owner); + record.setSort(sort); + record.setUpdateTime(now); + record.setLockVersion(oldVersion + 1); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + + int i = this.dwThemeDomainMapper.update(record, updateWrapper); + + PreconditionUtil.checkState(1 == i, DwException.stateReject("update theme domain failed")); + + // 如果英文名称有改动,则更新关联 + if (!Objects.equals(orgName, record.getEnName())) { + try { + LinkisDataAssetsRemoteClient dataAssetsRemoteClient = LinkisRemoteClientHolder.getDataAssetsRemoteClient(); + UpdateModelTypeAction action = new UpdateModelTypeAction.Builder().setType(ClassificationConstant.THEME).setName(record.getEnName()).setOrgName(orgName).setUser(username).build(); + UpdateModelTypeResult result = dataAssetsRemoteClient.updateModelType(action); + + if (result.getStatus() != 0) { + throw new DwException(result.getStatus(), result.getMessage()); + } + } catch (Exception e) { + if (e instanceof ErrorException) { + ErrorException ee = (ErrorException) e; + throw new DwException(DwExceptionCode.UPDATE_MODEL_TYPE_ERROR.getCode(), e.getMessage(), ee.getIp(), ee.getPort(), ee.getServiceKind()); + } else { + throw new DwException(DwExceptionCode.UPDATE_MODEL_TYPE_ERROR.getCode(), e.getMessage()); + } + } + } + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message enable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.TRUE); + return Message.ok(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Message disable(HttpServletRequest request, Long id) throws DwException { + changeEnable(request, id, Boolean.FALSE); + return Message.ok(); + } + + private void changeEnable(HttpServletRequest request, Long id, Boolean enabled) throws DwException { + PreconditionUtil.checkArgument(!Objects.isNull(id), DwException.argumentReject("id should not be null")); + + DwThemeDomain record = this.dwThemeDomainMapper.selectById(id); + PreconditionUtil.checkState(!Objects.isNull(record), DwException.stateReject("theme domain not found")); + PreconditionUtil.checkState(record.getStatus(), DwException.stateReject("theme domain has been removed")); + if (Objects.equals(enabled, record.getIsAvailable())) { + return; + } + + Long oldVersion = record.getLockVersion(); + record.setUpdateTime(new Date()); + record.setIsAvailable(enabled); + record.setLockVersion(oldVersion + 1); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", record.getId()); + updateWrapper.eq("lock_version", oldVersion); + int update = this.dwThemeDomainMapper.update(record, updateWrapper); + PreconditionUtil.checkState(1 == update, DwException.stateReject(enabled ? "enable" : "disable" + " failed")); + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/PreconditionUtil.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/PreconditionUtil.java new file mode 100644 index 000000000..6b96d9e5c --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/PreconditionUtil.java @@ -0,0 +1,84 @@ +package com.webank.wedatasphere.warehouse.utils; + +import com.google.common.base.Strings; +import com.webank.wedatasphere.warehouse.exception.DwException; + +import javax.annotation.Nullable; + +public class PreconditionUtil { + + private PreconditionUtil() {} + + public static void checkState(boolean condition, DwException e) throws DwException { + if (!condition) { + throw e; + } + } + + public static void checkState(boolean condition, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs) throws DwException { + if (!condition) { + throw new DwException(DwException.BUSINESS_ERROR, format(errorMessageTemplate, errorMessageArgs)); + } + } + + public static void checkArgument(boolean condition, DwException e) throws DwException { + if (!condition) { + throw e; + } + } + + public static void checkArgument(boolean condition, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs) throws DwException { + if (!condition) { + throw new DwException(DwException.BUSINESS_ERROR, format(errorMessageTemplate, errorMessageArgs)); + } + } + + public static void checkStringArgumentNotBlank(String argument, DwException e) throws DwException { + if (Strings.isNullOrEmpty(argument)) { + throw e; + } + } + + // 检查字符串参数,成功则返回 trim() 后的字符串,否则抛出异常 + public static String checkStringArgumentNotBlankTrim(String argument, DwException e) throws DwException { + if (Strings.isNullOrEmpty(argument)) { + throw e; + } + return argument.trim(); + } + + private static String format(@Nullable String template, @Nullable Object... args) throws DwException { + int numArgs = args == null ? 0 : args.length; + template = String.valueOf(template); + StringBuilder builder = new StringBuilder(template.length() + 16 * numArgs); + int templateStart = 0; + + int i; + int placeholderStart; + for(i = 0; i < numArgs; templateStart = placeholderStart + 2) { + placeholderStart = template.indexOf("%s", templateStart); + if (placeholderStart == -1) { + break; + } + + builder.append(template.substring(templateStart, placeholderStart)); + builder.append(args[i++]); + } + + builder.append(template.substring(templateStart)); + if (i < numArgs) { + builder.append(" ["); + builder.append(args[i++]); + + while(i < numArgs) { + builder.append(", "); + builder.append(args[i++]); + } + + builder.append(']'); + } + + return builder.toString(); + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/RegexUtil.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/RegexUtil.java new file mode 100644 index 000000000..2edaf7edd --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/java/com/webank/wedatasphere/warehouse/utils/RegexUtil.java @@ -0,0 +1,30 @@ +package com.webank.wedatasphere.warehouse.utils; + +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RegexUtil { + + private static final String REGEX_EN_NAME = "^\\w+$"; + private static final String REGEX_CN_NAME = "^[\\u4E00-\\u9FA50-9_]+$"; + private static final Pattern enNamePattern = Pattern.compile(REGEX_EN_NAME); + private static final Pattern cnNamePattern = Pattern.compile(REGEX_CN_NAME); + + public static boolean checkEnName(String source) { + if (Objects.isNull(source)) { + return false; + } + + return enNamePattern.matcher(source).find(); + } + + public static boolean checkCnName(String source) { + if (Objects.isNull(source)) { + return false; + } + + return cnNamePattern.matcher(source).find(); + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/scala/com/webank/wedatasphere/warehouse/LinkisRemoteClientHolder.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/scala/com/webank/wedatasphere/warehouse/LinkisRemoteClientHolder.scala new file mode 100644 index 000000000..876c67b74 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/main/scala/com/webank/wedatasphere/warehouse/LinkisRemoteClientHolder.scala @@ -0,0 +1,72 @@ +package com.webank.wedatasphere.warehouse + +import com.webank.wedatasphere.dss.data.governance.impl.LinkisDataAssetsRemoteClient +import com.webank.wedatasphere.dss.datamodel.center.client.impl.LinkisDatamodelCenterRemoteClient +import com.webank.wedatasphere.dss.framework.workspace.client.impl.LinkisWorkSpaceRemoteClient +import org.apache.linkis.datasource.client.impl.{LinkisDataSourceRemoteClient, LinkisMetaDataRemoteClient} +import org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy +import org.apache.linkis.httpclient.dws.config.{DWSClientConfig, DWSClientConfigBuilder} +import com.webank.wedatasphere.warehouse.client.DwDataSourceConfiguration + +import java.lang +import java.util.concurrent.TimeUnit + +object LinkisRemoteClientHolder { + //Linkis Datasource Client Config + val serverUrl: String = DwDataSourceConfiguration.SERVER_URL.getValue + val connectionTimeout: lang.Long = DwDataSourceConfiguration.CONNECTION_TIMEOUT.getValue + val discoveryEnabled: lang.Boolean = DwDataSourceConfiguration.DISCOVERY_ENABLED.getValue + val discoveryFrequencyPeriod: lang.Long = DwDataSourceConfiguration.DISCOVERY_FREQUENCY_PERIOD.getValue + val loadbalancerEnabled: lang.Boolean = DwDataSourceConfiguration.LOAD_BALANCER_ENABLED.getValue + val maxConnectionSize: Integer = DwDataSourceConfiguration.MAX_CONNECTION_SIZE.getValue + val retryEnabled: lang.Boolean = DwDataSourceConfiguration.RETRY_ENABLED.getValue + val readTimeout: lang.Long = DwDataSourceConfiguration.READ_TIMEOUT.getValue + val authTokenKey: String = DwDataSourceConfiguration.AUTHTOKEN_KEY.getValue + val authTokenValue: String = DwDataSourceConfiguration.AUTHTOKEN_VALUE.getValue + val dwsVersion: String = DwDataSourceConfiguration.DWS_VERSION.getValue + + val clientConfig: DWSClientConfig = DWSClientConfigBuilder.newBuilder() + .addServerUrl(serverUrl) + .connectionTimeout(connectionTimeout) + .discoveryEnabled(discoveryEnabled) + .discoveryFrequency(discoveryFrequencyPeriod, TimeUnit.MINUTES) + .loadbalancerEnabled(loadbalancerEnabled) + .maxConnectionSize(maxConnectionSize) + .retryEnabled(retryEnabled) + .readTimeout(readTimeout) + .setAuthenticationStrategy(new TokenAuthenticationStrategy()) + .setAuthTokenKey(authTokenKey) + .setAuthTokenValue(authTokenValue) + .setDWSVersion(dwsVersion) + .build() + + val dataSourceClient = new LinkisDataSourceRemoteClient(clientConfig) + + val metadataSourceRemoteClient = new LinkisMetaDataRemoteClient(clientConfig) + + var dataModelRemoteClient = new LinkisDatamodelCenterRemoteClient(clientConfig) + + var dataAssetsRemoteClient = new LinkisDataAssetsRemoteClient(clientConfig) + + var workspaceRemoteClient = new LinkisWorkSpaceRemoteClient(clientConfig) + + def getWorkspaceRemoteClient: LinkisWorkSpaceRemoteClient = { + workspaceRemoteClient + } + + def getLinkisDataSourceRemoteClient: LinkisDataSourceRemoteClient = { + dataSourceClient + } + + def getDataModelRemoteClient: LinkisDatamodelCenterRemoteClient = { + dataModelRemoteClient + } + + def getDataAssetsRemoteClient: LinkisDataAssetsRemoteClient = { + dataAssetsRemoteClient + } + + def getMetadataSourceRemoteClient: LinkisMetaDataRemoteClient = { + metadataSourceRemoteClient + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/java/com/webank/wedatasphere/warehouse/RemoteClientTest.java b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/java/com/webank/wedatasphere/warehouse/RemoteClientTest.java new file mode 100644 index 000000000..43a0dccd9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/java/com/webank/wedatasphere/warehouse/RemoteClientTest.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.warehouse; + + + +public class RemoteClientTest { + + + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/scala/com/webank/wedatasphere/warehouse/DwLayerRemoteClientTest.scala b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/scala/com/webank/wedatasphere/warehouse/DwLayerRemoteClientTest.scala new file mode 100644 index 000000000..e9eed4b44 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-data-warehouse-service/src/test/scala/com/webank/wedatasphere/warehouse/DwLayerRemoteClientTest.scala @@ -0,0 +1,54 @@ +package com.webank.wedatasphere.warehouse + +import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy +import org.apache.linkis.httpclient.dws.config.{DWSClientConfig, DWSClientConfigBuilder} +import java.util.concurrent.TimeUnit + +import com.webank.wedatasphere.dss.datamodel.center.client.impl.LinkisDatamodelCenterRemoteClient +import com.webank.wedatasphere.dss.datamodel.center.client.request.LayersReferenceAction +import com.webank.wedatasphere.dss.datamodel.center.client.response.LayersReferenceResult +import org.apache.linkis.datasource.client.impl.LinkisMetaDataRemoteClient + +object DwLayerRemoteClientTest { + + + def main(args: Array[String]): Unit = { + val clientCfg: DWSClientConfig = DWSClientConfigBuilder.newBuilder() + .addServerUrl("http://192.168.0.120:9001") + .connectionTimeout(30000) + .discoveryEnabled(true) + .loadbalancerEnabled(true) + .maxConnectionSize(5) + .retryEnabled(false) + .readTimeout(30000) + .setAuthenticationStrategy(new StaticAuthenticationStrategy()) + .setAuthTokenKey("ws") + .setAuthTokenValue("WS-AUTH") + .setDWSVersion("v1") + .build(); + +// val dataModelRemoteClient = LinkisRemoteClientHolder.getDataModelRemoteClient +// val action = new LayersReferenceAction.Builder().setUser(username).setName(dwLayer.getEnName).build +// val layersReferenceResult = dataModelRemoteClient.layersReference(action) + + val client = new LinkisDatamodelCenterRemoteClient(clientCfg); + val action = new LayersReferenceAction; + action.setUser("hadoop") + action.setParameter("name","test") + val result = client.layersReference(action); + +// +// val action1 = new ListDwThemeDomainAction +// val result1 = client.listThemeDomains(action1) +// println(result1.getAll) +// +// val action2 = new ListDwModifierAction +// val result2 = client.listModifiers(action2) +// println(result2.getAll) +// +// val action3 = new ListDwThemeDomainAction +// val result3 = client.listThemeDomains(action3) +// println(result3.getAll) + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/pom.xml b/dss-apps/dss-datawarehouse-design/dss-governance-dao/pom.xml new file mode 100644 index 000000000..38b746717 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + + dss-datawarehouse-design + com.webank.wedatasphere.dss + 1.1.0 + + + dss-governance-dao + jar + + + 8 + 8 + + + + + org.apache.linkis + linkis-module + provided + + + com.webank.wedatasphere.dss + dss-data-warehouse-mybatis + ${dss.version} + + + + org.apache.linkis + linkis-mybatis + + + + commons-beanutils + commons-beanutils + 1.9.4 + + + + org.projectlombok + lombok + provided + + + + mysql + mysql-connector-java + 5.1.49 + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + net.alchim31.maven + scala-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.artifactId}-${project.version} + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayer.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayer.java new file mode 100644 index 000000000..b172094b0 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayer.java @@ -0,0 +1,72 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.interceptor.NameAttachWorkspaceTrans; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import lombok.*; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Getter +@Setter +@ToString +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("dss_datawarehouse_layer") +public class DwLayer extends DssWorkspaceEntity { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @NameAttachWorkspaceTrans + private String name; + + @TableField(value = "en_name") + private String enName; + + private String description; + + // 授权的角色 + @TableField(value = "principal_name") + private String principalName; + + // 是否预置主题 + private Boolean preset; + + @TableField(value = "is_available") + private Boolean isAvailable; + + // 为空代表所有库 + @TableField(value = "dbs") + private String dbs; + + // 负责人 + private String owner; + + private Integer sort; + + // 创建人 +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + + private Boolean status; + + @TableField(value = "lock_version") + private Long lockVersion; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayerGeneralizeRule.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayerGeneralizeRule.java new file mode 100644 index 000000000..7be9976c8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwLayerGeneralizeRule.java @@ -0,0 +1,56 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.Date; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@TableName("dss_datawarehouse_layer_generalize_rule") +public class DwLayerGeneralizeRule extends DssWorkspaceEntity { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "layer_id") + private Long layerId; + + // 自动归纳表达式 + private String regex; + + private String identifier; + + @TableField(value = "en_identifier") + private String enIdentifier; + + @TableField(value = "desc") + private String description; + +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + + private Boolean status; + + @TableField(value = "lock_version") + private Long lockVersion; + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifier.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifier.java new file mode 100644 index 000000000..6b59e389a --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifier.java @@ -0,0 +1,76 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import lombok.*; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Getter +@Setter +@ToString +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("dss_datawarehouse_modifier") +public class DwModifier extends DssWorkspaceEntity { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "modifier_type") + private String modifierType; + + @TableField(value = "modifier_type_en") + private String modifierTypeEn; + + @TableField(value = "theme_domain_id") + private Long themeDomainId; + + // 空:代表所有,如果是逗号分隔的字符串则代表对应的theme的names + @TableField(value = "theme_area") + private String themeArea; + + @TableField(value = "theme_area_en") + private String themeAreaEn; + + @TableField(value = "layer_id") + private Long layerId; + + // 空:代表所有,如果是逗号分隔的字符串则代表对应的layer的names + @TableField(value = "layer_area") + private String layerArea; + + @TableField(value = "layer_area_en") + private String layerAreaEn; + + private String description; + + @TableField(value = "is_available") + private Boolean isAvailable; + +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + + private Boolean status; + + @TableField(value = "lock_version") + private Long lockVersion; + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifierList.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifierList.java new file mode 100644 index 000000000..3b712ec74 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwModifierList.java @@ -0,0 +1,45 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.Date; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@TableName("dss_datawarehouse_modifier_list") +public class DwModifierList extends DssWorkspaceEntity { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "modifier_id") + private Long modifierId; + + private String name; + + private String identifier; + + private String formula; + +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwStatisticalPeriod.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwStatisticalPeriod.java new file mode 100644 index 000000000..eb80cc082 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwStatisticalPeriod.java @@ -0,0 +1,77 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import com.webank.wedatasphere.warehouse.dao.interceptor.NameAttachWorkspaceTrans; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.Date; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@TableName("dss_datawarehouse_statistical_period") +public class DwStatisticalPeriod extends DssWorkspaceEntity { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "theme_domain_id") + private Long themeDomainId; + +// @TableField(value = "theme_area") +// private String themeArea; + + @TableField(value = "layer_id") + private Long layerId; + +// @TableField(value = "layer_area") +// private String layerArea; + + @NameAttachWorkspaceTrans + private String name; + + @TableField(value = "en_name") + private String enName; + + private String description; + + @TableField(value = "start_time_formula") + private String startTimeFormula; + + @TableField(value = "end_time_formula") + private String endTimeFormula; + + // 授权的名字:userName、roleName + @TableField(value = "principal_name") + private String principalName; + + @TableField(value = "is_available") + private Boolean isAvailable; + + // 负责人 + private String owner; + +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + + private Boolean status; + + @TableField(value = "lock_version") + private Long lockVersion; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwThemeDomain.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwThemeDomain.java new file mode 100644 index 000000000..53943da67 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/DwThemeDomain.java @@ -0,0 +1,64 @@ +package com.webank.wedatasphere.warehouse.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.webank.wedatasphere.warehouse.dao.interceptor.NameAttachWorkspaceTrans; +import com.webank.wedatasphere.warehouse.dao.domain.common.DssWorkspaceEntity; +import lombok.*; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Getter +@Setter +@ToString +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("dss_datawarehouse_theme_domain") +public class DwThemeDomain extends DssWorkspaceEntity { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @NameAttachWorkspaceTrans + private String name; + + @TableField(value = "en_name") + private String enName; + + private String description; + + @TableField(value = "is_available") + private Boolean isAvailable; + + // 可用角色,授权角色 + @TableField(value = "principal_name") + private String principalName; + + @TableField(value = "owner") + private String owner; + + private Integer sort; + +// @TableField(value = "create_user") +// private String createUser; + + @TableField(value = "create_time") + private Date createTime; + +// @TableField(value = "modify_user") +// private String modifyUser; + + @TableField(value = "update_time") + private Date updateTime; + + private Boolean status; + + @TableField(value = "lock_version") + private Long lockVersion; +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/common/DssWorkspaceEntity.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/common/DssWorkspaceEntity.java new file mode 100644 index 000000000..0f3173da8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/domain/common/DssWorkspaceEntity.java @@ -0,0 +1,7 @@ +package com.webank.wedatasphere.warehouse.dao.domain.common; + +import java.io.Serializable; + +public class DssWorkspaceEntity implements Serializable { + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAdapter.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAdapter.java new file mode 100644 index 000000000..fde7435ef --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAdapter.java @@ -0,0 +1,14 @@ +package com.webank.wedatasphere.warehouse.dao.interceptor; + +import org.apache.linkis.common.conf.CommonVars; + +public class DssWorkspaceNameAdapter { + + public static final CommonVars BDP_ENTITY_WORKSPACE_NAME_AUTO_TRANSFORM = CommonVars.apply("wds.entity.workspace.name.auto.transform", "false"); + + public String getWorkspaceName() { + // TODO 真正获取当前用户线程的工作空间名称 + return "workspaceName"; + } + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoExtractQueryInterceptor.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoExtractQueryInterceptor.java new file mode 100644 index 000000000..20696b0f2 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoExtractQueryInterceptor.java @@ -0,0 +1,91 @@ +package com.webank.wedatasphere.warehouse.dao.interceptor; + + +import lombok.AllArgsConstructor; +import org.apache.ibatis.executor.resultset.DefaultResultSetHandler; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.plugin.*; +import org.apache.ibatis.reflection.MetaObject; +import org.apache.ibatis.reflection.SystemMetaObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import javax.sql.DataSource; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.sql.Statement; +import java.util.*; + +@AllArgsConstructor +@Intercepts({ + @Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class}) +}) +public class DssWorkspaceNameAutoExtractQueryInterceptor /*extends AbstractSqlParserHandler*/ implements Interceptor { + private static final Logger logger = LoggerFactory.getLogger(DssWorkspaceNameAutoExtractQueryInterceptor.class); + private static final DssWorkspaceNameAdapter dssWorkspaceNameAdapter = new DssWorkspaceNameAdapter(); + private final DataSource dataSource; + private Object extract(Object object) throws InvocationTargetException, IllegalAccessException { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + NameAttachWorkspaceTrans confidential = field.getAnnotation(NameAttachWorkspaceTrans.class); + if (confidential==null){ + continue; + } + PropertyDescriptor ps = BeanUtils.getPropertyDescriptor(object.getClass(), field.getName()); + if (ps == null || ps.getReadMethod() == null || ps.getWriteMethod() == null) { + continue; + } + Object value = ps.getReadMethod().invoke(object); + if (value != null) { + if (value instanceof String) { + String fieldValue = (String) value; + if (fieldValue.contains(".") && fieldValue.contains(dssWorkspaceNameAdapter.getWorkspaceName())) { + String[] split = fieldValue.split("\\."); + if (split.length == 2) { + ps.getWriteMethod().invoke(object, split[1]); +// resultMap.put(colName, split[1]); + } + } + } + } + } + return object; + } + + @Override + public Object intercept(Invocation invocation) throws Throwable { + String flag = DssWorkspaceNameAdapter.BDP_ENTITY_WORKSPACE_NAME_AUTO_TRANSFORM.getValue(); + if ("false".equalsIgnoreCase(flag)) { + return invocation.proceed(); + } + + logger.info("use mybatis interceptor to handle name field [transform workspace.name ??]"); + + DefaultResultSetHandler defaultResultSetHandler = (DefaultResultSetHandler) invocation.getTarget(); + MetaObject metaObject = SystemMetaObject.forObject(defaultResultSetHandler); + MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("mappedStatement"); + List resultMaps = mappedStatement.getResultMaps(); + + if (resultMaps == null || resultMaps.isEmpty()) { + return invocation.proceed(); + } + + Object result = invocation.proceed(); + if (result instanceof Collection) { + Collection objList= (Collection) result; + List resultList=new ArrayList<>(); + for (Object obj : objList) { + resultList.add(extract(obj)); + } + return resultList; + }else { + return extract(result); + } + } + + +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoTransformUpdateInteceptor.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoTransformUpdateInteceptor.java new file mode 100644 index 000000000..8d7d27759 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/DssWorkspaceNameAutoTransformUpdateInteceptor.java @@ -0,0 +1,81 @@ +package com.webank.wedatasphere.warehouse.dao.interceptor; + +import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler; +import lombok.AllArgsConstructor; +import org.apache.ibatis.binding.MapperMethod; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlCommandType; +import org.apache.ibatis.plugin.Interceptor; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Signature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.sql.DataSource; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.Objects; + +@AllArgsConstructor +@Intercepts({ + @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}) +}) +public class DssWorkspaceNameAutoTransformUpdateInteceptor extends AbstractSqlParserHandler implements Interceptor { + private static final Logger logger = LoggerFactory.getLogger(DssWorkspaceNameAutoTransformUpdateInteceptor.class); + private static final DssWorkspaceNameAdapter dssWorkspaceNameAdapter = new DssWorkspaceNameAdapter(); + private final DataSource dataSource; + @Override + public Object intercept(Invocation invocation) throws Throwable { + String flag = DssWorkspaceNameAdapter.BDP_ENTITY_WORKSPACE_NAME_AUTO_TRANSFORM.getValue(); + if ("false".equalsIgnoreCase(flag)) { + return invocation.proceed(); + } + + logger.info("use mybatis interceptor to handle name field [transform workspace.name ??]"); + + MappedStatement mappedStatement = (MappedStatement)invocation.getArgs()[0]; + SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); + + if (sqlCommandType == SqlCommandType.DELETE) { + return invocation.proceed(); + } + + Object parameter = invocation.getArgs()[1]; + + if (parameter instanceof MapperMethod.ParamMap) { + MapperMethod.ParamMap inParams = (MapperMethod.ParamMap) parameter; + Object et = inParams.get("et"); + + Field[] declaredFields = et.getClass().getDeclaredFields(); + for (Field field : declaredFields) { + if (field.getAnnotation(NameAttachWorkspaceTrans.class) != null) { + field.setAccessible(true); + String finalName = null; + Object origVal = field.get(et); + if (!Objects.isNull(origVal) && origVal instanceof String) { + finalName = dssWorkspaceNameAdapter.getWorkspaceName()+"."+origVal; + } + field.set(et, finalName); + field.setAccessible(false); + } + } + } else { + Field[] declaredFields = parameter.getClass().getDeclaredFields(); + for (Field field : declaredFields) { + if (field.getAnnotation(NameAttachWorkspaceTrans.class) != null) { + field.setAccessible(true); + String finalName = ""; + Object origVal = field.get(parameter); + if (origVal instanceof String) { + finalName = dssWorkspaceNameAdapter.getWorkspaceName()+"."+origVal; + } + field.set(parameter, finalName); + field.setAccessible(false); + } + } + } + return invocation.proceed(); + } +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/NameAttachWorkspaceTrans.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/NameAttachWorkspaceTrans.java new file mode 100644 index 000000000..1cc014c96 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/interceptor/NameAttachWorkspaceTrans.java @@ -0,0 +1,11 @@ +package com.webank.wedatasphere.warehouse.dao.interceptor; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.FIELD }) +public @interface NameAttachWorkspaceTrans { +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwLayerMapper.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwLayerMapper.java new file mode 100644 index 000000000..a768ffbfd --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwLayerMapper.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.warehouse.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.warehouse.dao.domain.DwLayer; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Optional; + +@Mapper +public interface DwLayerMapper extends BaseMapper { + @Select("select * from dss_datawarehouse_layer where name = #{layer} or en_name = #{layer}") + Optional findByName(@Param("layer") String layer); +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierListMapper.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierListMapper.java new file mode 100644 index 000000000..5000e80c8 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierListMapper.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.warehouse.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.warehouse.dao.domain.DwModifierList; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DwModifierListMapper extends BaseMapper { +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierMapper.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierMapper.java new file mode 100644 index 000000000..06375b981 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwModifierMapper.java @@ -0,0 +1,9 @@ +package com.webank.wedatasphere.warehouse.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.warehouse.dao.domain.DwModifier; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DwModifierMapper extends BaseMapper { +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwStatisticalPeriodMapper.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwStatisticalPeriodMapper.java new file mode 100644 index 000000000..3155a1354 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwStatisticalPeriodMapper.java @@ -0,0 +1,22 @@ +package com.webank.wedatasphere.warehouse.dao.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.webank.wedatasphere.warehouse.dao.domain.DwStatisticalPeriod; +import com.webank.wedatasphere.warehouse.dao.vo.DwStatisticalPeriodVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DwStatisticalPeriodMapper extends BaseMapper { + IPage selectPageItems(IPage queryPage, Map params); + + List selectItems(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + DwStatisticalPeriodVo selectItemById(@Param(value = "id") Long id); +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwThemeDomainMapper.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwThemeDomainMapper.java new file mode 100644 index 000000000..314f3a2dd --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/DwThemeDomainMapper.java @@ -0,0 +1,15 @@ +package com.webank.wedatasphere.warehouse.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.webank.wedatasphere.warehouse.dao.domain.DwThemeDomain; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Optional; + +@Mapper +public interface DwThemeDomainMapper extends BaseMapper { + @Select("select * from dss_datawarehouse_theme_domain where name = #{theme} or en_name = #{theme}") + Optional findByName(@Param("theme") String theme); +} diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/impl/DwStatisticalPeriodMapper.xml b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/impl/DwStatisticalPeriodMapper.xml new file mode 100644 index 000000000..6da9cecc5 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/mapper/impl/DwStatisticalPeriodMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/vo/DwStatisticalPeriodVo.java b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/vo/DwStatisticalPeriodVo.java new file mode 100644 index 000000000..0b18c34b9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/dss-governance-dao/src/main/java/com/webank/wedatasphere/warehouse/dao/vo/DwStatisticalPeriodVo.java @@ -0,0 +1,60 @@ +package com.webank.wedatasphere.warehouse.dao.vo; + +import com.webank.wedatasphere.warehouse.dao.interceptor.NameAttachWorkspaceTrans; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; +import java.util.Date; + + +// 不要使用继承,否则 SQL 拦截器 ResultSetHandler 无法获取到父类的 private 字段来转换 +@Setter +@Getter +@ToString +public class DwStatisticalPeriodVo implements Serializable { + private Long id; + + private Long themeDomainId; + + private Long layerId; + + @NameAttachWorkspaceTrans + private String name; + + private String enName; + + private String description; + + private String startTimeFormula; + + private String endTimeFormula; + + private String principalName; + + private Boolean isAvailable; + + private String owner; + + private Date createTime; + + private Date updateTime; + + // 自定义字段 + @NameAttachWorkspaceTrans + private String themeArea; + + private String themeAreaEn; + + @NameAttachWorkspaceTrans + private String layerArea; + + private String layerAreaEn; + + transient private Boolean status; + + private boolean referenced; + + private int referenceCount; +} diff --git a/dss-apps/dss-datawarehouse-design/pom.xml b/dss-apps/dss-datawarehouse-design/pom.xml new file mode 100644 index 000000000..5acbec7d9 --- /dev/null +++ b/dss-apps/dss-datawarehouse-design/pom.xml @@ -0,0 +1,154 @@ + + + + dss + com.webank.wedatasphere.dss + 1.1.0 + ../../pom.xml + + 4.0.0 + + dss-datawarehouse-design + pom + + + UTF-8 + 2.16 + 2.22.2 + 2.22.2 + + + + dss-data-warehouse-server + dss-data-warehouse-service + dss-data-warehouse-mybatis + dss-data-warehouse-client + dss-governance-dao + + + + + + + com.webank.wedatasphere.dss + dss-governance-dao + ${project.version} + + + + com.webank.wedatasphere.dss + dss-data-warehouse-service + ${project.version} + + + + + org.scala-lang + scala-library + ${scala.version} + + + org.scala-lang + scala-compiler + ${scala.version} + + + org.scala-lang + scala-reflect + ${scala.version} + + + org.scala-lang + scalap + ${scala.version} + + + org.apache.commons + commons-lang3 + ${commons.lang3.version} + + + org.apache.linkis + linkis-mybatis + ${linkis.version} + + + org.apache.linkis + linkis-httpclient + ${linkis.version} + + + org.apache.linkis + linkis-gateway-httpclient-support + ${linkis.version} + + + org.apache.linkis + linkis-module + + + org.springframework.boot + spring-boot-starter-tomcat + + + hibernate-validator + org.hibernate.validator + + + ${linkis.version} + + + org.apache.linkis + linkis-common + ${linkis.version} + + + + org.apache.linkis + linkis-protocol + ${linkis.version} + + + + com.google.code.gson + gson + ${gson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${fasterxml.jackson.version} + + + org.codehaus.jackson + jackson-mapper-asl + ${org.codehaus.jackson.version} + + + org.apache.commons + commons-math3 + ${commons.math.version} + + + xstream + com.thoughtworks.xstream + ${xstream.version} + + + + org.apache.linkis + linkis-datasource-client + ${linkis.version} + + + + org.projectlombok + lombok + 1.18.20 + + + + + \ No newline at end of file diff --git a/dss-apps/dss-user-guide/dss-user-guide-server/src/main/resources/log4j.properties b/dss-apps/dss-user-guide/dss-user-guide-server/src/main/resources/log4j.properties index f88f949da..d9fced692 100644 --- a/dss-apps/dss-user-guide/dss-user-guide-server/src/main/resources/log4j.properties +++ b/dss-apps/dss-user-guide/dss-user-guide-server/src/main/resources/log4j.properties @@ -32,7 +32,7 @@ log4j.appender.com.webank.bdp.ide.core.Threshold=INFO log4j.additivity.com.webank.bdp.ide.core=false log4j.appender.com.webank.bdp.ide.core.layout=org.apache.log4j.PatternLayout log4j.appender.com.webank.bdp.ide.core.Append=true -log4j.appender.com.webank.bdp.ide.core.File=logs/dss-data-governance-server.log +log4j.appender.com.webank.bdp.ide.core.File=logs/dss-guide-server.log log4j.appender.com.webank.bdp.ide.core.layout.ConversionPattern= %d{ISO8601} %-5p (%t) [%F:%M(%L)] - %m%n log4j.logger.org.springframework=INFO \ No newline at end of file diff --git a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/execution/impl/LinkisNodeExecutionImpl.java b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/execution/impl/LinkisNodeExecutionImpl.java index 9615f5c11..93d978dcb 100644 --- a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/execution/impl/LinkisNodeExecutionImpl.java +++ b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/execution/impl/LinkisNodeExecutionImpl.java @@ -29,6 +29,7 @@ import com.webank.wedatasphere.dss.linkis.node.execution.service.impl.BuildJobActionImpl; import com.webank.wedatasphere.dss.linkis.node.execution.utils.LinkisJobExecutionUtils; import com.webank.wedatasphere.dss.linkis.node.execution.utils.LinkisUjesClientUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.linkis.common.exception.LinkisException; import org.apache.linkis.common.utils.Utils; import org.apache.linkis.ujes.client.UJESClient; @@ -39,7 +40,6 @@ import org.apache.linkis.ujes.client.response.JobInfoResult; import org.apache.linkis.ujes.client.response.JobLogResult; import org.apache.linkis.ujes.client.response.OpenLogResult; -import org.apache.commons.lang.StringUtils; import scala.tools.nsc.settings.Final; import java.text.MessageFormat; @@ -49,7 +49,6 @@ import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; public class LinkisNodeExecutionImpl implements LinkisNodeExecution , LinkisExecutionListener { diff --git a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/job/Builder.java b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/job/Builder.java index 384c2bf68..e6a224a7a 100644 --- a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/job/Builder.java +++ b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/job/Builder.java @@ -23,7 +23,7 @@ import com.webank.wedatasphere.dss.linkis.node.execution.utils.LinkisJobExecutionUtils; import com.webank.wedatasphere.dss.linkis.node.execution.utils.LinkisUjesClientUtils; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.linkis.common.utils.JsonUtils; import org.apache.linkis.httpclient.dws.DWSHttpClient; import org.apache.linkis.httpclient.dws.config.DWSClientConfig; diff --git a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/parser/CodeParser.java b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/parser/CodeParser.java index cecc1cf17..78a4bca41 100644 --- a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/parser/CodeParser.java +++ b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/parser/CodeParser.java @@ -35,7 +35,7 @@ import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; public class CodeParser implements JobParser { diff --git a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/service/impl/BuildJobActionImpl.java b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/service/impl/BuildJobActionImpl.java index 956d03d0f..3692ad228 100644 --- a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/service/impl/BuildJobActionImpl.java +++ b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/service/impl/BuildJobActionImpl.java @@ -22,8 +22,8 @@ import com.webank.wedatasphere.dss.linkis.node.execution.job.Job; import com.webank.wedatasphere.dss.linkis.node.execution.job.LinkisJob; import com.webank.wedatasphere.dss.linkis.node.execution.service.BuildJobAction; -import org.apache.commons.lang.SerializationUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.SerializationUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.linkis.manager.label.constant.LabelKeyConstant; import org.apache.linkis.manager.label.entity.engine.EngineTypeLabel; import org.apache.linkis.manager.label.utils.EngineTypeLabelCreator; diff --git a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/utils/LinkisJobExecutionUtils.java b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/utils/LinkisJobExecutionUtils.java index e91264b72..4af58571a 100644 --- a/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/utils/LinkisJobExecutionUtils.java +++ b/dss-orchestrator/orchestrators/dss-workflow/dss-linkis-node-execution/src/main/java/com/webank/wedatasphere/dss/linkis/node/execution/utils/LinkisJobExecutionUtils.java @@ -21,7 +21,7 @@ import com.google.gson.reflect.TypeToken; import com.webank.wedatasphere.dss.linkis.node.execution.conf.LinkisJobExecutionConfiguration; import com.webank.wedatasphere.dss.linkis.node.execution.entity.BMLResource; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import java.util.*; diff --git a/k8s/build.info b/k8s/build.info index 6d2222074..bc8ca8400 100644 --- a/k8s/build.info +++ b/k8s/build.info @@ -4,5 +4,7 @@ dss-framework-orchestrator-server dss-framework-project-server dss-workflow-server dss-data-api-server -dss-data-governance-server dss-guide-server +dss-data-assets-server +dss-data-warehouse-server +dss-datamodel-center-server \ No newline at end of file diff --git a/k8s/dockerfile/dss-data-assets-server.Dockerfile b/k8s/dockerfile/dss-data-assets-server.Dockerfile new file mode 100644 index 000000000..6d13e2d45 --- /dev/null +++ b/k8s/dockerfile/dss-data-assets-server.Dockerfile @@ -0,0 +1,9 @@ +FROM base:1.0.0 + +WORKDIR /opt/dss + +COPY lib/dss-commons /opt/dss/dss-commons/ +COPY lib/dss-dataasset-management/dss-data-assets-server /opt/dss/dss-data-assets-server/lib/ +COPY sbin/k8s/dss-data-assets-server.sh /opt/dss/dss-data-assets-server/bin/startup.sh + +ENTRYPOINT ["bash","dss-data-assets-server/bin/startup.sh"] \ No newline at end of file diff --git a/k8s/dockerfile/dss-data-governance-server.Dockerfile b/k8s/dockerfile/dss-data-governance-server.Dockerfile deleted file mode 100644 index 0c7144921..000000000 --- a/k8s/dockerfile/dss-data-governance-server.Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM base:1.0.0 - -WORKDIR /opt/dss - -COPY lib/dss-commons /opt/dss/dss-commons/ -COPY lib/dss-data-governance/dss-data-governance-server /opt/dss/dss-data-governance-server/lib/ -COPY sbin/k8s/dss-data-governance-server.sh /opt/dss/dss-data-governance-server/bin/startup.sh - -ENTRYPOINT ["bash","dss-data-governance-server/bin/startup.sh"] \ No newline at end of file diff --git a/k8s/dockerfile/dss-data-warehouse-server.Dockerfile b/k8s/dockerfile/dss-data-warehouse-server.Dockerfile new file mode 100644 index 000000000..a7169375e --- /dev/null +++ b/k8s/dockerfile/dss-data-warehouse-server.Dockerfile @@ -0,0 +1,9 @@ +FROM base:1.0.0 + +WORKDIR /opt/dss + +COPY lib/dss-commons /opt/dss/dss-commons/ +COPY lib/dss-datawarehouse-design/dss-data-warehouse-server /opt/dss/dss-data-warehouse-server/lib/ +COPY sbin/k8s/dss-data-warehouse-server.sh /opt/dss/dss-data-warehouse-server/bin/startup.sh + +ENTRYPOINT ["bash","dss-data-warehouse-server/bin/startup.sh"] \ No newline at end of file diff --git a/k8s/dockerfile/dss-datamodel-center-server.Dockerfile b/k8s/dockerfile/dss-datamodel-center-server.Dockerfile new file mode 100644 index 000000000..a7169375e --- /dev/null +++ b/k8s/dockerfile/dss-datamodel-center-server.Dockerfile @@ -0,0 +1,9 @@ +FROM base:1.0.0 + +WORKDIR /opt/dss + +COPY lib/dss-commons /opt/dss/dss-commons/ +COPY lib/dss-datawarehouse-design/dss-data-warehouse-server /opt/dss/dss-data-warehouse-server/lib/ +COPY sbin/k8s/dss-data-warehouse-server.sh /opt/dss/dss-data-warehouse-server/bin/startup.sh + +ENTRYPOINT ["bash","dss-data-warehouse-server/bin/startup.sh"] \ No newline at end of file diff --git a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/DSSDolphinSchedulerClient.scala b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/DSSDolphinSchedulerClient.scala index becb1d3bb..d17c047c0 100644 --- a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/DSSDolphinSchedulerClient.scala +++ b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/DSSDolphinSchedulerClient.scala @@ -9,7 +9,7 @@ import com.webank.wedatasphere.dss.linkis.node.execution.listener.LinkisExecutio import com.webank.wedatasphere.dss.linkis.node.execution.log.LinkisJobExecutionLog import com.webank.wedatasphere.dss.plugins.dolphinscheduler.linkis.client.conf.LinkisJobTypeConf import com.webank.wedatasphere.dss.plugins.dolphinscheduler.linkis.client.job.DolphinSchedulerJobBuilder -import org.apache.commons.lang.StringUtils +import org.apache.commons.lang3.StringUtils import org.apache.linkis.common.conf.CommonVars import org.apache.linkis.common.utils.{Logging, Utils} diff --git a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerAppConnLinkisJob.scala b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerAppConnLinkisJob.scala index 1ad4ac52e..2fa3acf4e 100644 --- a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerAppConnLinkisJob.scala +++ b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerAppConnLinkisJob.scala @@ -4,7 +4,8 @@ import com.webank.wedatasphere.dss.linkis.node.execution.job.AbstractAppConnLink import com.webank.wedatasphere.dss.plugins.dolphinscheduler.linkis.client.conf.LinkisJobTypeConf class DolphinSchedulerAppConnLinkisJob extends AbstractAppConnLinkisJob { - override def getSubmitUser: String = if (getJobProps.get(LinkisJobTypeConf.FLOW_SUBMIT_USER).isEmpty) getJobProps.get(LinkisJobTypeConf.PROXY_USER) else getJobProps.get(LinkisJobTypeConf.FLOW_SUBMIT_USER) + override def getSubmitUser: String = if (getJobProps.get(LinkisJobTypeConf.FLOW_SUBMIT_USER) != null + && getJobProps.get(LinkisJobTypeConf.FLOW_SUBMIT_USER).isEmpty) getJobProps.get(LinkisJobTypeConf.PROXY_USER) else getJobProps.get(LinkisJobTypeConf.FLOW_SUBMIT_USER) override def getUser: String = getJobProps.get(LinkisJobTypeConf.PROXY_USER) diff --git a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerJobBuilder.scala b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerJobBuilder.scala index 89c2dd2d9..054b62dca 100644 --- a/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerJobBuilder.scala +++ b/plugins/dolphinscheduler/dss-dolphinscheduler-client/src/main/scala/com/webank/wedatasphere/dss/plugins/dolphinscheduler/linkis/client/job/DolphinSchedulerJobBuilder.scala @@ -8,7 +8,7 @@ import com.webank.wedatasphere.dss.linkis.node.execution.entity.BMLResource import com.webank.wedatasphere.dss.linkis.node.execution.job.{Builder, CommonLinkisJob, Job, LinkisJob} import com.webank.wedatasphere.dss.linkis.node.execution.utils.LinkisJobExecutionUtils import com.webank.wedatasphere.dss.plugins.dolphinscheduler.linkis.client.conf.LinkisJobTypeConf -import org.apache.commons.lang.StringUtils +import org.apache.commons.lang3.StringUtils import org.apache.linkis.common.utils.JsonUtils import scala.collection.JavaConverters._ diff --git a/plugins/dolphinscheduler/dss-dolphinscheduler-token/src/main/java/com/webank/wedatasphere/dss/dolphinscheduler/token/restful/DolphinSchedulerTokenRestfulApi.java b/plugins/dolphinscheduler/dss-dolphinscheduler-token/src/main/java/com/webank/wedatasphere/dss/dolphinscheduler/token/restful/DolphinSchedulerTokenRestfulApi.java index b219172a4..588f74b20 100644 --- a/plugins/dolphinscheduler/dss-dolphinscheduler-token/src/main/java/com/webank/wedatasphere/dss/dolphinscheduler/token/restful/DolphinSchedulerTokenRestfulApi.java +++ b/plugins/dolphinscheduler/dss-dolphinscheduler-token/src/main/java/com/webank/wedatasphere/dss/dolphinscheduler/token/restful/DolphinSchedulerTokenRestfulApi.java @@ -35,6 +35,6 @@ public Message dsApiServiceTokenCreate(HttpServletRequest req) { .getOptionalService(appInstance).getOptionalOperation("getToken"); ResponseRef responseRef = optionalOperation.apply(new StructureRequestRefImpl().setUserName(userName)); return Message.ok().data("token", responseRef.getValue("token")) - .data("expire_time", responseRef.getValue("expireTime")); + .data("expire_time", Long.valueOf(responseRef.getValue("expireTime")+"")); } } diff --git a/pom.xml b/pom.xml index 7e828f04f..1e9b42b5c 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,10 @@ dss-apps/dss-apiservice-server dss-apps/dss-scriptis-server dss-apps/dss-user-guide + dss-apps/dss-data-api + dss-apps/dss-dataasset-management + dss-apps/dss-datamodel-center + dss-apps/dss-datawarehouse-design plugins/azkaban/linkis-jobtype plugins/linkis/dss-gateway-support assembly @@ -42,7 +46,7 @@ 1.1.0 - 1.1.1 + 1.2.0 2.11.12 1.8 3.3.3 diff --git a/sbin/common.sh b/sbin/common.sh index 1fde09493..c9f4763a8 100644 --- a/sbin/common.sh +++ b/sbin/common.sh @@ -175,13 +175,17 @@ function setServerName(){ SERVER_NAME=dss-flow-execution-server elif [[ $PROJECT_NAME == *"data-api"* ]]; then SERVER_NAME=dss-data-api-server - elif [[ $PROJECT_NAME == *"governance"* ]]; then - SERVER_NAME=dss-data-governance-server + elif [[ $PROJECT_NAME == *"datamodel"* ]]; then + SERVER_NAME=dss-datamodel-center-server + elif [[ $PROJECT_NAME == *"datawarehouse"* ]]; then + SERVER_NAME=dss-data-warehouse-server + elif [[ $PROJECT_NAME == *"dataasset"* ]]; then + SERVER_NAME=dss-data-assets-server elif [[ $PROJECT_NAME == *"guide"* ]]; then SERVER_NAME=dss-guide-server else echo "please input: sh dss-daemon.sh [start,restart,stop] [server name]; for example : sh dss-daemon.sh restart project " - echo "server name : project、orchestrator、apiservice、scriptis、workflow、execution、data-api、governance、guide" + echo "server name : project、orchestrator、apiservice、scriptis、workflow、execution、data-api、guide" exit 1 fi } diff --git a/sbin/dss-daemon.sh b/sbin/dss-daemon.sh index 6f60feed8..e992b6983 100644 --- a/sbin/dss-daemon.sh +++ b/sbin/dss-daemon.sh @@ -53,4 +53,4 @@ case $COMMAND in print_usage exit 2 ;; -esac \ No newline at end of file +esac diff --git a/sbin/dss-start-all.sh b/sbin/dss-start-all.sh index dea17d632..1ba74e02f 100644 --- a/sbin/dss-start-all.sh +++ b/sbin/dss-start-all.sh @@ -123,8 +123,16 @@ function startDssProject(){ SERVER_IP=$DSS_DATA_API_SERVER_INSTALL_IP startApp - SERVER_NAME=dss-data-governance-server - SERVER_IP=$DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP + SERVER_NAME=dss-data-assets-server + SERVER_IP=$DSS_DATA_ASSETS_SERVER_INSTALL_IP + startApp + + SERVER_NAME=dss-datamodel-center-server + SERVER_IP=$DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP + startApp + + SERVER_NAME=dss-data-warehouse-server + SERVER_IP=$DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP startApp SERVER_NAME=dss-guide-server @@ -170,6 +178,18 @@ function checkDssService(){ SERVER_IP=$DSS_DATA_API_SERVER_INSTALL_IP checkServer + SERVER_NAME=dss-data-assets-server + SERVER_IP=$DSS_DATA_ASSETS_SERVER_INSTALL_IP + checkServer + + SERVER_NAME=dss-datamodel-center-server + SERVER_IP=$DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP + checkServer + + SERVER_NAME=dss-data-warehouse-server + SERVER_IP=$DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP + checkServer + SERVER_NAME=dss-guide-server SERVER_IP=$DSS_GUIDE_SERVER_INSTALL_IP checkServer @@ -178,4 +198,4 @@ function checkDssService(){ startDssProject -checkDssService \ No newline at end of file +checkDssService diff --git a/sbin/dss-stop-all.sh b/sbin/dss-stop-all.sh index 55c5c806b..3e8d9bed6 100644 --- a/sbin/dss-stop-all.sh +++ b/sbin/dss-stop-all.sh @@ -79,8 +79,16 @@ function stopDssProject(){ SERVER_IP=$DSS_DATA_API_SERVER_INSTALL_IP stopApp - SERVER_NAME=dss-data-governance-server - SERVER_IP=$DSS_DATA_GOVERNANCE_SERVER_INSTALL_IP + SERVER_NAME=dss-data-assets-server + SERVER_IP=$DSS_DATA_ASSETS_SERVER_INSTALL_IP + stopApp + + SERVER_NAME=dss-datamodel-center-server + SERVER_IP=$DSS_DATAMODEL_CENTER_SERVER_INSTALL_IP + stopApp + + SERVER_NAME=dss-data-warehouse-server + SERVER_IP=$DSS_DATA_WAREHOUSE_SERVER_INSTALL_IP stopApp SERVER_NAME=dss-guide-server @@ -88,4 +96,4 @@ function stopDssProject(){ stopApp } -stopDssProject \ No newline at end of file +stopDssProject diff --git a/sbin/ext/dss-data-api-server b/sbin/ext/dss-data-api-server index 4f9010b9b..1da056841 100644 --- a/sbin/ext/dss-data-api-server +++ b/sbin/ext/dss-data-api-server @@ -56,7 +56,7 @@ if [ ! -r "$DSS_COMMONS_LIB" ] ; then fi ## server lib -export SERVER_LIB=$DSS_HOME/lib/dss-data-api/$SERVER_SUFFIX +export SERVER_LIB=$DSS_HOME/lib/dss-data-api-server/$SERVER_SUFFIX if [ ! -r "$SERVER_LIB" ] ; then diff --git a/sbin/ext/dss-data-governance-server b/sbin/ext/dss-data-assets-server similarity index 92% rename from sbin/ext/dss-data-governance-server rename to sbin/ext/dss-data-assets-server index 8b259fe74..d0bf91b7a 100644 --- a/sbin/ext/dss-data-governance-server +++ b/sbin/ext/dss-data-assets-server @@ -17,7 +17,7 @@ if [ "$DSS_CONF_DIR" = "" ]; then export DSS_CONF_DIR=$DSS_HOME/conf fi -SERVER_SUFFIX="dss-data-governance-server" +SERVER_SUFFIX="dss-data-assets-server" ## set log if [ "$DSS_LOG_DIR" = "" ]; then export DSS_LOG_DIR="$DSS_HOME/logs" @@ -43,7 +43,7 @@ then export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx$SERVER_HEAP_SIZE -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/$SERVER_SUFFIX.gc $DEBUG_CMD" fi -export SERVER_CLASS=com.webank.wedatasphere.dss.data.governance.DSSDataGovernanceApplication +export SERVER_CLASS=com.webank.wedatasphere.dss.data.governance.DataAssetsApplication ## conf dir export SERVER_CONF_PATH=$DSS_CONF_DIR:$DSS_CONF_DIR/$SERVER_SUFFIX @@ -58,7 +58,7 @@ if [ ! -r "$DSS_COMMONS_LIB" ] ; then fi ## server lib -export SERVER_LIB=$DSS_HOME/lib/dss-data-governance/$SERVER_SUFFIX +export SERVER_LIB=$DSS_HOME/lib/dss-apps/$SERVER_SUFFIX if [ ! -r "$SERVER_LIB" ] ; then diff --git a/sbin/ext/dss-data-warehouse-server b/sbin/ext/dss-data-warehouse-server new file mode 100644 index 000000000..5658763f5 --- /dev/null +++ b/sbin/ext/dss-data-warehouse-server @@ -0,0 +1,85 @@ +#!/bin/bash +# +# description: ecm start cmd +# +# get log directory +cd `dirname $0` +cd .. +INSTALL_HOME=`pwd` + +# set DSS_HOME +if [ "$DSS_HOME" = "" ]; then + export DSS_HOME=$INSTALL_HOME +fi + +# set DSS_CONF_DIR +if [ "$DSS_CONF_DIR" = "" ]; then + export DSS_CONF_DIR=$DSS_HOME/conf +fi + +SERVER_SUFFIX="dss-data-warehouse-server" +## set log +if [ "$DSS_LOG_DIR" = "" ]; then + export DSS_LOG_DIR="$DSS_HOME/logs" +fi +export SERVER_LOG_PATH=$DSS_LOG_DIR +if [ ! -w "$SERVER_LOG_PATH" ] ; then + mkdir -p "$SERVER_LOG_PATH" +fi + +if test -z "$SERVER_HEAP_SIZE" +then + export SERVER_HEAP_SIZE="512M" +fi + +DEBUG_PORT= +if [ "$DEBUG_PORT" ]; +then + export DEBUG_CMD="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$DEBUG_PORT" +fi + +if test -z "$SERVER_JAVA_OPTS" +then + export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx$SERVER_HEAP_SIZE -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/$SERVER_SUFFIX.gc $DEBUG_CMD" +fi + +export SERVER_CLASS=com.webank.wedatasphere.warehouse.DataWarehouseApplication$ + +## conf dir +export SERVER_CONF_PATH=$DSS_CONF_DIR:$DSS_CONF_DIR/$SERVER_SUFFIX + +## commons lib +export DSS_COMMONS_LIB="$DSS_HOME/lib/dss-commons" + + +if [ ! -r "$DSS_COMMONS_LIB" ] ; then + echo "dss commons lib not exists $DSS_COMMONS_LIB" + exit 1 +fi + +## server lib +export SERVER_LIB=$DSS_HOME/lib/dss-apps/$SERVER_SUFFIX + + +if [ ! -r "$SERVER_LIB" ] ; then + echo "server lib not exists $SERVER_LIB" + exit 1 +fi + +export SERVER_PID=$DSS_HOME/pid/${SERVER_SUFFIX}.pid +## set class path +export SERVER_CLASS_PATH=$SERVER_CONF_PATH:$DSS_COMMONS_LIB/*:$SERVER_LIB/* + +nohup java $SERVER_JAVA_OPTS -cp $SERVER_CLASS_PATH $SERVER_CLASS 2>&1 > $SERVER_LOG_PATH/$SERVER_SUFFIX.out & +pid=$! + +sleep 2 +if [[ -z "${pid}" ]]; then + echo "server $SERVER_SUFFIX start failed!" + exit 1 +else + echo "server $SERVER_SUFFIX start succeeded!" + echo $pid > $SERVER_PID + sleep 1 +fi +exit 1 diff --git a/sbin/ext/dss-datamodel-center-server b/sbin/ext/dss-datamodel-center-server new file mode 100644 index 000000000..baa48fdad --- /dev/null +++ b/sbin/ext/dss-datamodel-center-server @@ -0,0 +1,85 @@ +#!/bin/bash +# +# description: ecm start cmd +# +# get log directory +cd `dirname $0` +cd .. +INSTALL_HOME=`pwd` + +# set DSS_HOME +if [ "$DSS_HOME" = "" ]; then + export DSS_HOME=$INSTALL_HOME +fi + +# set DSS_CONF_DIR +if [ "$DSS_CONF_DIR" = "" ]; then + export DSS_CONF_DIR=$DSS_HOME/conf +fi + +SERVER_SUFFIX="dss-datamodel-center-server" +## set log +if [ "$DSS_LOG_DIR" = "" ]; then + export DSS_LOG_DIR="$DSS_HOME/logs" +fi +export SERVER_LOG_PATH=$DSS_LOG_DIR +if [ ! -w "$SERVER_LOG_PATH" ] ; then + mkdir -p "$SERVER_LOG_PATH" +fi + +if test -z "$SERVER_HEAP_SIZE" +then + export SERVER_HEAP_SIZE="512M" +fi + +DEBUG_PORT= +if [ "$DEBUG_PORT" ]; +then + export DEBUG_CMD="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$DEBUG_PORT" +fi + +if test -z "$SERVER_JAVA_OPTS" +then + export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx$SERVER_HEAP_SIZE -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/$SERVER_SUFFIX.gc $DEBUG_CMD" +fi + +export SERVER_CLASS=com.webank.wedatasphere.dss.datamodel.DataModelApplication + +## conf dir +export SERVER_CONF_PATH=$DSS_CONF_DIR:$DSS_CONF_DIR/$SERVER_SUFFIX + +## commons lib +export DSS_COMMONS_LIB="$DSS_HOME/lib/dss-commons" + + +if [ ! -r "$DSS_COMMONS_LIB" ] ; then + echo "dss commons lib not exists $DSS_COMMONS_LIB" + exit 1 +fi + +## server lib +export SERVER_LIB=$DSS_HOME/lib/dss-apps/$SERVER_SUFFIX + + +if [ ! -r "$SERVER_LIB" ] ; then + echo "server lib not exists $SERVER_LIB" + exit 1 +fi + +export SERVER_PID=$DSS_HOME/pid/${SERVER_SUFFIX}.pid +## set class path +export SERVER_CLASS_PATH=$SERVER_CONF_PATH:$DSS_COMMONS_LIB/*:$SERVER_LIB/* + +nohup java $SERVER_JAVA_OPTS -cp $SERVER_CLASS_PATH $SERVER_CLASS 2>&1 > $SERVER_LOG_PATH/$SERVER_SUFFIX.out & +pid=$! + +sleep 2 +if [[ -z "${pid}" ]]; then + echo "server $SERVER_SUFFIX start failed!" + exit 1 +else + echo "server $SERVER_SUFFIX start succeeded!" + echo $pid > $SERVER_PID + sleep 1 +fi +exit 1 diff --git a/sbin/k8s/dss-data-assets-server.sh b/sbin/k8s/dss-data-assets-server.sh new file mode 100644 index 000000000..7e9beb56c --- /dev/null +++ b/sbin/k8s/dss-data-assets-server.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +SERVER_SUFFIX="dss-data-assets-server" + + +export SERVER_CONF_PATH=/opt/dss/$SERVER_SUFFIX/conf +export SERVER_LOG_PATH=/opt/dss/$SERVER_SUFFIX/logs + +if [ ! -w "$SERVER_LOG_PATH" ] ; then + mkdir -p "$SERVER_LOG_PATH" +fi + +export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx512M -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/linkis.log" + +export SERVER_CLASS=com.webank.wedatasphere.dss.data.governance.DataAssetsApplication + + +export DSS_COMMONS_LIB=/opt/dss/dss-commons + +export SERVER_LIB=/opt/dss/$SERVER_SUFFIX/lib + + +export SERVER_CLASS_PATH=$SERVER_CONF_PATH:$DSS_COMMONS_LIB/*:$SERVER_LIB/* + +java $SERVER_JAVA_OPTS -cp $SERVER_CLASS_PATH $SERVER_CLASS \ No newline at end of file diff --git a/sbin/k8s/dss-data-governance-server.sh b/sbin/k8s/dss-data-warehouse-server.sh similarity index 79% rename from sbin/k8s/dss-data-governance-server.sh rename to sbin/k8s/dss-data-warehouse-server.sh index 76aca5370..c23d290b5 100644 --- a/sbin/k8s/dss-data-governance-server.sh +++ b/sbin/k8s/dss-data-warehouse-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -SERVER_SUFFIX="dss-data-governance-server" +SERVER_SUFFIX="dss-data-warehouse-server" export SERVER_CONF_PATH=/opt/dss/$SERVER_SUFFIX/conf @@ -12,7 +12,7 @@ fi export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx2048M -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/linkis.log" -export SERVER_CLASS=com.webank.wedatasphere.dss.data.governance.DSSDataGovernanceApplication +export SERVER_CLASS=com.webank.wedatasphere.warehouse.DataWarehouseApplication export DSS_COMMONS_LIB=/opt/dss/dss-commons diff --git a/sbin/k8s/dss-datamodel-center-server.sh b/sbin/k8s/dss-datamodel-center-server.sh new file mode 100644 index 000000000..a0621cfff --- /dev/null +++ b/sbin/k8s/dss-datamodel-center-server.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +SERVER_SUFFIX="dss-datamodel-center-server" + + +export SERVER_CONF_PATH=/opt/dss/$SERVER_SUFFIX/conf +export SERVER_LOG_PATH=/opt/dss/$SERVER_SUFFIX/logs + +if [ ! -w "$SERVER_LOG_PATH" ] ; then + mkdir -p "$SERVER_LOG_PATH" +fi + +export SERVER_JAVA_OPTS="-DserviceName=$SERVER_SUFFIX -Xmx512M -XX:+UseG1GC -Xloggc:$SERVER_LOG_PATH/linkis.log" + +export SERVER_CLASS=com.webank.wedatasphere.dss.datamodel.DataModelApplication + + +export DSS_COMMONS_LIB=/opt/dss/dss-commons + +export SERVER_LIB=/opt/dss/$SERVER_SUFFIX/lib + + +export SERVER_CLASS_PATH=$SERVER_CONF_PATH:$DSS_COMMONS_LIB/*:$SERVER_LIB/* + +java $SERVER_JAVA_OPTS -cp $SERVER_CLASS_PATH $SERVER_CLASS \ No newline at end of file diff --git a/web/config.json b/web/config.json index f5974b96f..1ebe2e7f4 100644 --- a/web/config.json +++ b/web/config.json @@ -48,6 +48,30 @@ "zh-CN": "dataGovernance/i18n/zh.json" } }, + "dataAssetManage": { + "routes": "dataAssetManage/router", + "module": "dataAssetManage/module", + "i18n": { + "en": "dataAssetManage/i18n/en.json", + "zh-CN": "dataAssetManage/i18n/zh.json" + } + }, + "dataModelCenter": { + "routes": "dataModelCenter/router", + "module": "dataModelCenter/module", + "i18n": { + "en": "dataModelCenter/i18n/en.json", + "zh-CN": "dataModelCenter/i18n/zh.json" + } + }, + "dataWarehouseDesign": { + "routes": "dataWarehouseDesign/router", + "module": "dataWarehouseDesign/module", + "i18n": { + "en": "dataWarehouseDesign/i18n/en.json", + "zh-CN": "dataWarehouseDesign/i18n/zh.json" + } + }, "dolphinScheduler": { "routes": "dolphinScheduler/router", "module": "dolphinScheduler/module", @@ -58,14 +82,6 @@ } }, "exts": { - "dss-plugin-open": { - "module": "exts/open-source/index.js", - "i18n": { - "en": "exts/open-source/i18n/en.json", - "zh-CN": "exts/open-source/i18n/zh.json" - }, - "options": null - } }, "conf": { "app_name": "DataSphere Studio", diff --git a/web/package-lock.json b/web/package-lock.json index 179553126..9b40c304c 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,22289 +1,50777 @@ { - "name": "dataspherestudio", - "version": "1.1.4", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@antv/hierarchy": { - "version": "0.6.8", - "resolved": "https://registry.npmmirror.com/@antv/hierarchy/-/hierarchy-0.6.8.tgz", - "integrity": "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A==", - "requires": { - "@antv/util": "^2.0.7" - } - }, - "@antv/matrix-util": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.0.4.tgz", - "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", - "requires": { - "@antv/util": "^2.0.9", - "gl-matrix": "^3.3.0", - "tslib": "^2.0.3" - } - }, - "@antv/util": { - "version": "2.0.17", - "resolved": "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz", - "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", - "requires": { - "csstype": "^3.0.8", - "tslib": "^2.0.3" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", - "integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.9", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.17.0", - "charcodes": "^0.2.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.17.0", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", - "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "requires": { - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.17.0", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", - "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.3.4", - "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.3.4.tgz", - "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.3.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.3.4", - "@babel/plugin-transform-classes": "^7.3.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.3.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.3.4", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" - } - }, - "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs2": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.17.9.tgz", - "integrity": "sha512-+QThIsnjVY12uURTvmnW33risFZ7ulq6OWw0VJL08UwiYiWVp9PM63s+W1L2ppajYyKAYKb7afcGYSHzA0k04Q==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@kazupon/vue-i18n-loader": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/@kazupon/vue-i18n-loader/-/vue-i18n-loader-0.4.1.tgz", - "integrity": "sha512-hVznmhnyoUKozGY7pwq/UtPL76UDzb+aiN2YksZZIzCY/MkEqih0MSyEmTGw7+HVWzJRPAlDyoRNR4tWKmkCRw==", - "dev": true, - "requires": { - "js-yaml": "^3.13.1", - "json5": "^2.1.0" - }, - "dependencies": { - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - } - } - }, - "@lerna/add": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/add/-/add-4.0.0.tgz", - "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", - "dev": true, - "requires": { - "@lerna/bootstrap": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/npm-conf": "4.0.0", - "@lerna/validation-error": "4.0.0", - "dedent": "^0.7.0", - "npm-package-arg": "^8.1.0", - "p-map": "^4.0.0", - "pacote": "^11.2.6", - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/bootstrap": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", - "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/has-npm-version": "4.0.0", - "@lerna/npm-install": "4.0.0", - "@lerna/package-graph": "4.0.0", - "@lerna/pulse-till-done": "4.0.0", - "@lerna/rimraf-dir": "4.0.0", - "@lerna/run-lifecycle": "4.0.0", - "@lerna/run-topologically": "4.0.0", - "@lerna/symlink-binary": "4.0.0", - "@lerna/symlink-dependencies": "4.0.0", - "@lerna/validation-error": "4.0.0", - "dedent": "^0.7.0", - "get-port": "^5.1.1", - "multimatch": "^5.0.0", - "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", - "p-map": "^4.0.0", - "p-map-series": "^2.1.0", - "p-waterfall": "^2.1.1", - "read-package-tree": "^5.3.1", - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/changed": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/changed/-/changed-4.0.0.tgz", - "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", - "dev": true, - "requires": { - "@lerna/collect-updates": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/listable": "4.0.0", - "@lerna/output": "4.0.0" - } - }, - "@lerna/check-working-tree": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", - "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", - "dev": true, - "requires": { - "@lerna/collect-uncommitted": "4.0.0", - "@lerna/describe-ref": "4.0.0", - "@lerna/validation-error": "4.0.0" - } - }, - "@lerna/child-process": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/child-process/-/child-process-4.0.0.tgz", - "integrity": "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "execa": "^5.0.0", - "strong-log-transformer": "^2.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@lerna/clean": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/clean/-/clean-4.0.0.tgz", - "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/prompt": "4.0.0", - "@lerna/pulse-till-done": "4.0.0", - "@lerna/rimraf-dir": "4.0.0", - "p-map": "^4.0.0", - "p-map-series": "^2.1.0", - "p-waterfall": "^2.1.1" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - } - } - }, - "@lerna/cli": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/cli/-/cli-4.0.0.tgz", - "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", - "dev": true, - "requires": { - "@lerna/global-options": "4.0.0", - "dedent": "^0.7.0", - "npmlog": "^4.1.2", - "yargs": "^16.2.0" - } - }, - "@lerna/collect-uncommitted": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", - "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "chalk": "^4.1.0", - "npmlog": "^4.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@lerna/collect-updates": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", - "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/describe-ref": "4.0.0", - "minimatch": "^3.0.4", - "npmlog": "^4.1.2", - "slash": "^3.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "@lerna/command": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/command/-/command-4.0.0.tgz", - "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/package-graph": "4.0.0", - "@lerna/project": "4.0.0", - "@lerna/validation-error": "4.0.0", - "@lerna/write-log-file": "4.0.0", - "clone-deep": "^4.0.1", - "dedent": "^0.7.0", - "execa": "^5.0.0", - "is-ci": "^2.0.0", - "npmlog": "^4.1.2" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@lerna/conventional-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", - "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", - "dev": true, - "requires": { - "@lerna/validation-error": "4.0.0", - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-core": "^4.2.2", - "conventional-recommended-bump": "^6.1.0", - "fs-extra": "^9.1.0", - "get-stream": "^6.0.0", - "lodash.template": "^4.5.0", - "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", - "pify": "^5.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/create": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/create/-/create-4.0.0.tgz", - "integrity": "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/npm-conf": "4.0.0", - "@lerna/validation-error": "4.0.0", - "dedent": "^0.7.0", - "fs-extra": "^9.1.0", - "globby": "^11.0.2", - "init-package-json": "^2.0.2", - "npm-package-arg": "^8.1.0", - "p-reduce": "^2.1.0", - "pacote": "^11.2.6", - "pify": "^5.0.0", - "semver": "^7.3.4", - "slash": "^3.0.0", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0", - "whatwg-url": "^8.4.0", - "yargs-parser": "20.2.4" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, - "@lerna/create-symlink": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", - "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", - "dev": true, - "requires": { - "cmd-shim": "^4.1.0", - "fs-extra": "^9.1.0", - "npmlog": "^4.1.2" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/describe-ref": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", - "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/diff": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/diff/-/diff-4.0.0.tgz", - "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/validation-error": "4.0.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/exec": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/exec/-/exec-4.0.0.tgz", - "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/profiler": "4.0.0", - "@lerna/run-topologically": "4.0.0", - "@lerna/validation-error": "4.0.0", - "p-map": "^4.0.0" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - } - } - }, - "@lerna/filter-options": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/filter-options/-/filter-options-4.0.0.tgz", - "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", - "dev": true, - "requires": { - "@lerna/collect-updates": "4.0.0", - "@lerna/filter-packages": "4.0.0", - "dedent": "^0.7.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/filter-packages": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", - "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", - "dev": true, - "requires": { - "@lerna/validation-error": "4.0.0", - "multimatch": "^5.0.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/get-npm-exec-opts": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", - "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", - "dev": true, - "requires": { - "npmlog": "^4.1.2" - } - }, - "@lerna/get-packed": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/get-packed/-/get-packed-4.0.0.tgz", - "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", - "dev": true, - "requires": { - "fs-extra": "^9.1.0", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/github-client": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/github-client/-/github-client-4.0.0.tgz", - "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@octokit/plugin-enterprise-rest": "^6.0.1", - "@octokit/rest": "^18.1.0", - "git-url-parse": "^11.4.4", - "npmlog": "^4.1.2" - } - }, - "@lerna/gitlab-client": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", - "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", - "dev": true, - "requires": { - "node-fetch": "^2.6.1", - "npmlog": "^4.1.2", - "whatwg-url": "^8.4.0" - } - }, - "@lerna/global-options": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/global-options/-/global-options-4.0.0.tgz", - "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", - "dev": true - }, - "@lerna/has-npm-version": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", - "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/import": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/import/-/import-4.0.0.tgz", - "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/prompt": "4.0.0", - "@lerna/pulse-till-done": "4.0.0", - "@lerna/validation-error": "4.0.0", - "dedent": "^0.7.0", - "fs-extra": "^9.1.0", - "p-map-series": "^2.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/info": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/info/-/info-4.0.0.tgz", - "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/output": "4.0.0", - "envinfo": "^7.7.4" - } - }, - "@lerna/init": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/init/-/init-4.0.0.tgz", - "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/command": "4.0.0", - "fs-extra": "^9.1.0", - "p-map": "^4.0.0", - "write-json-file": "^4.3.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/link": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/link/-/link-4.0.0.tgz", - "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/package-graph": "4.0.0", - "@lerna/symlink-dependencies": "4.0.0", - "p-map": "^4.0.0", - "slash": "^3.0.0" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "@lerna/list": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/list/-/list-4.0.0.tgz", - "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/listable": "4.0.0", - "@lerna/output": "4.0.0" - } - }, - "@lerna/listable": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/listable/-/listable-4.0.0.tgz", - "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", - "dev": true, - "requires": { - "@lerna/query-graph": "4.0.0", - "chalk": "^4.1.0", - "columnify": "^1.5.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@lerna/log-packed": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/log-packed/-/log-packed-4.0.0.tgz", - "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", - "dev": true, - "requires": { - "byte-size": "^7.0.0", - "columnify": "^1.5.4", - "has-unicode": "^2.0.1", - "npmlog": "^4.1.2" - } - }, - "@lerna/npm-conf": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", - "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", - "dev": true, - "requires": { - "config-chain": "^1.1.12", - "pify": "^5.0.0" - }, - "dependencies": { - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true - } - } - }, - "@lerna/npm-dist-tag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", - "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", - "dev": true, - "requires": { - "@lerna/otplease": "4.0.0", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2" - }, - "dependencies": { - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", - "ssri": "^8.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", - "dev": true, - "requires": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/npm-install": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/npm-install/-/npm-install-4.0.0.tgz", - "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/get-npm-exec-opts": "4.0.0", - "fs-extra": "^9.1.0", - "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", - "signal-exit": "^3.0.3", - "write-pkg": "^4.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/npm-publish": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", - "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", - "dev": true, - "requires": { - "@lerna/otplease": "4.0.0", - "@lerna/run-lifecycle": "4.0.0", - "fs-extra": "^9.1.0", - "libnpmpublish": "^4.0.0", - "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", - "pify": "^5.0.0", - "read-package-json": "^3.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true - }, - "read-package-json": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-3.0.1.tgz", - "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/npm-run-script": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", - "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "@lerna/get-npm-exec-opts": "4.0.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/otplease": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/otplease/-/otplease-4.0.0.tgz", - "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", - "dev": true, - "requires": { - "@lerna/prompt": "4.0.0" - } - }, - "@lerna/output": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/output/-/output-4.0.0.tgz", - "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", - "dev": true, - "requires": { - "npmlog": "^4.1.2" - } - }, - "@lerna/pack-directory": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", - "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", - "dev": true, - "requires": { - "@lerna/get-packed": "4.0.0", - "@lerna/package": "4.0.0", - "@lerna/run-lifecycle": "4.0.0", - "npm-packlist": "^2.1.4", - "npmlog": "^4.1.2", - "tar": "^6.1.0", - "temp-write": "^4.0.0" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/package": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/package/-/package-4.0.0.tgz", - "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", - "dev": true, - "requires": { - "load-json-file": "^6.2.0", - "npm-package-arg": "^8.1.0", - "write-pkg": "^4.0.0" - } - }, - "@lerna/package-graph": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/package-graph/-/package-graph-4.0.0.tgz", - "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", - "dev": true, - "requires": { - "@lerna/prerelease-id-from-version": "4.0.0", - "@lerna/validation-error": "4.0.0", - "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/prerelease-id-from-version": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", - "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", - "dev": true, - "requires": { - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/profiler": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/profiler/-/profiler-4.0.0.tgz", - "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", - "dev": true, - "requires": { - "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", - "upath": "^2.0.1" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "upath": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "dev": true - } - } - }, - "@lerna/project": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/project/-/project-4.0.0.tgz", - "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", - "dev": true, - "requires": { - "@lerna/package": "4.0.0", - "@lerna/validation-error": "4.0.0", - "cosmiconfig": "^7.0.0", - "dedent": "^0.7.0", - "dot-prop": "^6.0.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.2", - "load-json-file": "^6.2.0", - "npmlog": "^4.1.2", - "p-map": "^4.0.0", - "resolve-from": "^5.0.0", - "write-json-file": "^4.3.0" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "@lerna/prompt": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/prompt/-/prompt-4.0.0.tgz", - "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", - "dev": true, - "requires": { - "inquirer": "^7.3.3", - "npmlog": "^4.1.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "@lerna/publish": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/publish/-/publish-4.0.0.tgz", - "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "4.0.0", - "@lerna/child-process": "4.0.0", - "@lerna/collect-updates": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/describe-ref": "4.0.0", - "@lerna/log-packed": "4.0.0", - "@lerna/npm-conf": "4.0.0", - "@lerna/npm-dist-tag": "4.0.0", - "@lerna/npm-publish": "4.0.0", - "@lerna/otplease": "4.0.0", - "@lerna/output": "4.0.0", - "@lerna/pack-directory": "4.0.0", - "@lerna/prerelease-id-from-version": "4.0.0", - "@lerna/prompt": "4.0.0", - "@lerna/pulse-till-done": "4.0.0", - "@lerna/run-lifecycle": "4.0.0", - "@lerna/run-topologically": "4.0.0", - "@lerna/validation-error": "4.0.0", - "@lerna/version": "4.0.0", - "fs-extra": "^9.1.0", - "libnpmaccess": "^4.0.1", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2", - "p-map": "^4.0.0", - "p-pipe": "^3.1.0", - "pacote": "^11.2.6", - "semver": "^7.3.4" - }, - "dependencies": { - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", - "ssri": "^8.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", - "dev": true, - "requires": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/pulse-till-done": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", - "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", - "dev": true, - "requires": { - "npmlog": "^4.1.2" - } - }, - "@lerna/query-graph": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/query-graph/-/query-graph-4.0.0.tgz", - "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", - "dev": true, - "requires": { - "@lerna/package-graph": "4.0.0" - } - }, - "@lerna/resolve-symlink": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", - "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", - "dev": true, - "requires": { - "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", - "read-cmd-shim": "^2.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/rimraf-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", - "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", - "dev": true, - "requires": { - "@lerna/child-process": "4.0.0", - "npmlog": "^4.1.2", - "path-exists": "^4.0.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@lerna/run": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/run/-/run-4.0.0.tgz", - "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", - "dev": true, - "requires": { - "@lerna/command": "4.0.0", - "@lerna/filter-options": "4.0.0", - "@lerna/npm-run-script": "4.0.0", - "@lerna/output": "4.0.0", - "@lerna/profiler": "4.0.0", - "@lerna/run-topologically": "4.0.0", - "@lerna/timer": "4.0.0", - "@lerna/validation-error": "4.0.0", - "p-map": "^4.0.0" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - } - } - }, - "@lerna/run-lifecycle": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", - "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", - "dev": true, - "requires": { - "@lerna/npm-conf": "4.0.0", - "npm-lifecycle": "^3.1.5", - "npmlog": "^4.1.2" - } - }, - "@lerna/run-topologically": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", - "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", - "dev": true, - "requires": { - "@lerna/query-graph": "4.0.0", - "p-queue": "^6.6.2" - } - }, - "@lerna/symlink-binary": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", - "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", - "dev": true, - "requires": { - "@lerna/create-symlink": "4.0.0", - "@lerna/package": "4.0.0", - "fs-extra": "^9.1.0", - "p-map": "^4.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/symlink-dependencies": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", - "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", - "dev": true, - "requires": { - "@lerna/create-symlink": "4.0.0", - "@lerna/resolve-symlink": "4.0.0", - "@lerna/symlink-binary": "4.0.0", - "fs-extra": "^9.1.0", - "p-map": "^4.0.0", - "p-map-series": "^2.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@lerna/timer": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/timer/-/timer-4.0.0.tgz", - "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", - "dev": true - }, - "@lerna/validation-error": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/validation-error/-/validation-error-4.0.0.tgz", - "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", - "dev": true, - "requires": { - "npmlog": "^4.1.2" - } - }, - "@lerna/version": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/version/-/version-4.0.0.tgz", - "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "4.0.0", - "@lerna/child-process": "4.0.0", - "@lerna/collect-updates": "4.0.0", - "@lerna/command": "4.0.0", - "@lerna/conventional-commits": "4.0.0", - "@lerna/github-client": "4.0.0", - "@lerna/gitlab-client": "4.0.0", - "@lerna/output": "4.0.0", - "@lerna/prerelease-id-from-version": "4.0.0", - "@lerna/prompt": "4.0.0", - "@lerna/run-lifecycle": "4.0.0", - "@lerna/run-topologically": "4.0.0", - "@lerna/validation-error": "4.0.0", - "chalk": "^4.1.0", - "dedent": "^0.7.0", - "load-json-file": "^6.2.0", - "minimatch": "^3.0.4", - "npmlog": "^4.1.2", - "p-map": "^4.0.0", - "p-pipe": "^3.1.0", - "p-reduce": "^2.1.0", - "p-waterfall": "^2.1.1", - "semver": "^7.3.4", - "slash": "^3.0.0", - "temp-write": "^4.0.0", - "write-json-file": "^4.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@lerna/write-log-file": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", - "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", - "dev": true, - "requires": { - "npmlog": "^4.1.2", - "write-file-atomic": "^3.0.3" - }, - "dependencies": { - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - } - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/ci-detect": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", - "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", - "dev": true - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmmirror.com/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - } - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmmirror.com/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "dev": true - }, - "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmmirror.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmmirror.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" - } - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmmirror.com/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - } - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmmirror.com/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", - "dev": true, - "requires": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" - } - }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmmirror.com/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "dev": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.1", - "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", - "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "error-stack-parser": "^2.0.6", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "17.0.27", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.27.tgz", - "integrity": "sha512-4/Ke7bbWOasuT3kceBZFGakP1dYN2XFd8v2l9bqF2LNWrmeU07JLpp56aEeG6+Q3olqO5TvXpW0yaiYnZJ5CXg==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", - "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", - "dev": true - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", - "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-preset-app": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-3.12.1.tgz", - "integrity": "sha512-Zjy5jQaikV1Pz+ri0YgXFS7q4/5wCxB5tRkDOEIt5+4105u0Feb/pvH20nVL6nx9GyXrECFfcm7Yxr/z++OaPQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.1.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.4.0", - "@babel/preset-env": "^7.0.0 < 7.4.0", - "@babel/runtime": "^7.0.0", - "@babel/runtime-corejs2": "^7.2.0", - "@vue/babel-preset-jsx": "^1.0.0", - "babel-plugin-dynamic-import-node": "^2.2.0", - "babel-plugin-module-resolver": "3.2.0", - "core-js": "^2.6.5" - } - }, - "@vue/babel-preset-jsx": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", - "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", - "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", - "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", - "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", - "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", - "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", - "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - } - }, - "@vue/cli-overlay": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-3.12.1.tgz", - "integrity": "sha512-Bym92EN+lj+cNRN2ozbYyH+V8DMXWGbCDUk+hiJ4EYDBZfBkZKvalk1/mOBFwyxiopnnbOEBAAhL/UuMQ1xARg==", - "dev": true - }, - "@vue/cli-plugin-babel": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.12.1.tgz", - "integrity": "sha512-Zetvz8PikLCGomeKOKu8pC9YQ7cfxs7pGpvEOzaxGdhMnebhjAYR6i6dOB57A6N5lhxQksXCtYTv26QgfiIpdg==", - "dev": true, - "requires": { - "@babel/core": "^7.0.0", - "@vue/babel-preset-app": "^3.12.1", - "@vue/cli-shared-utils": "^3.12.1", - "babel-loader": "^8.0.5", - "webpack": "^4.0.0" - } - }, - "@vue/cli-plugin-eslint": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.12.1.tgz", - "integrity": "sha512-tVTZlEZsy3sQbO4LLWFK11yzlWwqVAqaM+IY+BeWHITBzEJKh2KmouG+x6x/reXiU3qROsMJ4Ej3Hs8buSMWyQ==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^3.12.1", - "babel-eslint": "^10.0.1", - "eslint": "^4.19.1", - "eslint-loader": "^2.1.2", - "eslint-plugin-vue": "^4.7.1", - "globby": "^9.2.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "optional": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", - "dev": true, - "optional": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - } - }, - "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", - "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", - "dev": true, - "optional": true, - "requires": { - "vue-eslint-parser": "^2.0.3" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "optional": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", - "dev": true, - "optional": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "optional": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true, - "optional": true - } - } - }, - "@vue/cli-service": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-3.12.1.tgz", - "integrity": "sha512-PDxNrTGnSKzeV1ruFlsRIAO8JcPizwT0EJXq9GeyooU+p+sOkv7aKkCBJQVYNjZapD1NOGWx6CvAAC/wAW+gew==", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^3.12.1", - "@vue/cli-shared-utils": "^3.12.1", - "@vue/component-compiler-utils": "^3.0.0", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.1", - "acorn-walk": "^6.1.1", - "address": "^1.0.3", - "autoprefixer": "^9.5.1", - "browserslist": "^4.5.4", - "cache-loader": "^2.0.1", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^2.4.2", - "cli-highlight": "^2.1.0", - "clipboardy": "^2.0.0", - "cliui": "^5.0.0", - "copy-webpack-plugin": "^4.6.0", - "css-loader": "^1.0.1", - "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", - "debug": "^4.1.1", - "default-gateway": "^5.0.2", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "escape-string-regexp": "^1.0.5", - "file-loader": "^3.0.1", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^1.0.2", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.8.0", - "minimist": "^1.2.0", - "ora": "^3.4.0", - "portfinder": "^1.0.20", - "postcss-loader": "^3.0.0", - "read-pkg": "^5.0.0", - "semver": "^6.0.0", - "slash": "^2.0.0", - "source-map-url": "^0.4.0", - "ssri": "^6.0.1", - "string.prototype.padend": "^3.0.0", - "terser-webpack-plugin": "^1.2.3", - "thread-loader": "^2.1.2", - "url-loader": "^1.1.2", - "vue-loader": "^15.7.0", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.3.0", - "webpack-chain": "^4.11.0", - "webpack-dev-server": "^3.4.1", - "webpack-merge": "^4.2.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@vue/cli-shared-utils": { - "version": "3.12.1", - "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz", - "integrity": "sha512-jFblzRFjutGwu5utOKdVlPlsbA1lBUNNQlAThzNqej+JtTKJjnvjlhjKX0Gq0oOny5FjKWhoyfQ74p9h1qE6JQ==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.1", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.7", - "semver": "^6.0.0", - "string.prototype.padstart": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "@vue/eslint-config-standard": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/@vue/eslint-config-standard/-/eslint-config-standard-4.0.0.tgz", - "integrity": "sha512-bQghq1cw1BuMRHNhr3tRpAJx1tpGy0QtajQX873kLtA9YVuOIoXR7nAWnTN09bBHnSUh2N288vMsqPi2fI4Hzg==", - "dev": true, - "requires": { - "eslint-config-standard": "^12.0.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-node": "^8.0.0", - "eslint-plugin-promise": "^4.0.1", - "eslint-plugin-standard": "^4.0.0" - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", - "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", - "dev": true - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", - "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", - "dev": true, - "optional": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", - "dev": true, - "optional": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" - }, - "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmmirror.com/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "async-validator": { - "version": "1.12.2", - "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.12.2.tgz", - "integrity": "sha512-57EETfCPFiB7M4QscvQzWSGNsmtkjjzZv318SK1CBlstk+hycV72ocjriMOOM48HjvmoAoJGpJNjC7Z76RlnZA==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmmirror.com/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmmirror.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-module-resolver": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", - "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", - "dev": true, - "requires": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "batch-processor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz", - "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "optional": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true - }, - "butterfly-dag": { - "version": "4.1.23", - "resolved": "https://registry.npmmirror.com/butterfly-dag/-/butterfly-dag-4.1.23.tgz", - "integrity": "sha512-8B7HI5sexTQx9Wexy7pOSVwyMxzKmQxnmz6S7gWzzRuP6O/8Luny4edzkUjnnREE5PBplxK+c6PSJKrny901mQ==", - "requires": { - "@antv/hierarchy": "~0.6.4", - "@antv/matrix-util": "^3.0.4", - "d3-force": "~2.1.1", - "dagre": "~0.8.5", - "dom-to-image": "~2.6.0", - "eventemitter3": "4.0.7", - "ml-matrix": "^6.5.0" - } - }, - "byline": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz", - "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", - "dev": true - }, - "byte-size": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/byte-size/-/byte-size-7.0.1.tgz", - "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", - "dev": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-2.0.1.tgz", - "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.0", - "normalize-path": "^3.0.0", - "schema-utils": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true - } - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", - "dev": true, - "optional": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", - "dev": true, - "optional": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "charcodes": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz", - "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", - "dev": true - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", - "dev": true, - "optional": true - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" - }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "cheerio-select": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-1.6.0.tgz", - "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", - "dev": true, - "requires": { - "css-select": "^4.3.0", - "css-what": "^6.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.3.1", - "domutils": "^2.8.0" - }, - "dependencies": { - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - } - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "optional": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "optional": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmmirror.com/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true, - "optional": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true, - "optional": true - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "optional": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", - "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true - }, - "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dev": true, - "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - } - } - }, - "conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - } - } - }, - "conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", - "dev": true, - "requires": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" - }, - "dependencies": { - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" - }, - "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz", - "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, - "core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", - "dev": true, - "requires": { - "browserslist": "^4.20.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "cpx": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/cpx/-/cpx-1.5.0.tgz", - "integrity": "sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA==", - "dev": true, - "requires": { - "babel-runtime": "^6.9.2", - "chokidar": "^1.6.0", - "duplexer": "^0.1.1", - "glob": "^7.0.5", - "glob2base": "^0.0.12", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "resolve": "^1.1.7", - "safe-buffer": "^5.0.1", - "shell-quote": "^1.6.1", - "subarg": "^1.0.0" - }, - "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmmirror.com/braces/-/braces-1.8.5.tgz", - "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - } - } - }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "requires": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "csp-html-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/csp-html-webpack-plugin/-/csp-html-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-1YqQefNG0SrZisysThlly2bgs4Ab/W91xOM17S8wd+6vTo3E0OdL+y4IAR0MKpthRluNGzFB3QhPqdOhkXAExg==", - "dev": true, - "requires": { - "cheerio": "^1.0.0-rc.3", - "lodash": "^4.17.15", - "memory-fs": "^0.5.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmmirror.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.33", - "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz", - "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.5.3" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmmirror.com/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" - } - } - }, - "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - }, - "current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" - }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "dagre": { - "version": "0.8.5", - "resolved": "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz", - "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", - "requires": { - "graphlib": "^2.1.8", - "lodash": "^4.17.15" - } - }, - "dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - }, - "default-gateway": { - "version": "5.0.5", - "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz", - "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", - "dev": true, - "requires": { - "execa": "^3.3.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - } - } - }, - "dom-to-image": { - "version": "2.6.0", - "resolved": "https://registry.npmmirror.com/dom-to-image/-/dom-to-image-2.6.0.tgz", - "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } - } - }, - "domready": { - "version": "1.0.8", - "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz", - "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==", - "dev": true - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", - "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "echarts": { - "version": "4.9.0", - "resolved": "https://registry.npmmirror.com/echarts/-/echarts-4.9.0.tgz", - "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", - "requires": { - "zrender": "4.3.2" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.121", - "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.121.tgz", - "integrity": "sha512-N7OXhMr1p2oa9EkOhmHpmOm43DHzs55dep2FF6M7y6px5QJBheqEE3nwwZ+xJowlff+AEmMOdg3ARYGB+0kzbA==", - "dev": true - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", - "dev": true - }, - "element-resize-detector": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz", - "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", - "requires": { - "batch-processor": "1.0.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - } - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - } - } - }, - "eslint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmmirror.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "eslint-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz", - "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", - "dev": true, - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - } - }, - "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - } - } - }, - "eslint-plugin-es": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", - "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", - "dev": true, - "requires": { - "eslint-utils": "^1.4.2", - "regexpp": "^2.0.1" - }, - "dependencies": { - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - } - }, - "eslint-plugin-node": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz", - "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==", - "dev": true, - "requires": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^5.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" - }, - "dependencies": { - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - } - } - }, - "eslint-plugin-promise": { - "version": "4.3.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", - "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", - "dev": true - }, - "eslint-plugin-standard": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", - "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", - "dev": true - }, - "eslint-plugin-vue": { - "version": "6.2.2", - "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", - "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", - "dev": true, - "requires": { - "natural-compare": "^1.4.0", - "semver": "^5.6.0", - "vue-eslint-parser": "^7.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmmirror.com/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "optional": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "optional": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmmirror.com/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "express": { - "version": "4.18.0", - "resolved": "https://registry.npmmirror.com/express/-/express-4.18.0.tgz", - "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "optional": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", - "dev": true, - "optional": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "filemanager-webpack-plugin": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/filemanager-webpack-plugin/-/filemanager-webpack-plugin-2.0.5.tgz", - "integrity": "sha512-Yj5XIdKI2AN2r66uZc4MZ/n18SMqe2KKlkAqHHMW1OwveDs2Vc5129CpbFcI73rq/rjqso+2HsxieS7u5sx6XA==", - "dev": true, - "requires": { - "archiver": "^3.0.0", - "cpx": "^1.5.0", - "fs-extra": "^7.0.0", - "make-dir": "^1.1.0", - "mv": "^2.1.1", - "rimraf": "^2.6.2" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - } - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", - "dev": true - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "dev": true - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "dev": true, - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "find-yarn-workspace-root": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz", - "integrity": "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==", - "dev": true, - "requires": { - "fs-extra": "^4.0.3", - "micromatch": "^3.1.4" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "optional": true, - "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", - "dev": true - }, - "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "g-status": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/g-status/-/g-status-2.0.2.tgz", - "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "matcher": "^1.0.0", - "simple-git": "^1.85.0" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - } - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "dev": true, - "requires": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dev": true, - "requires": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - } - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "dev": true, - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "dev": true, - "requires": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "git-up": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/git-up/-/git-up-4.0.5.tgz", - "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "parse-url": "^6.0.0" - } - }, - "git-url-parse": { - "version": "11.6.0", - "resolved": "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-11.6.0.tgz", - "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", - "dev": true, - "requires": { - "git-up": "^4.0.0" - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "dev": true, - "requires": { - "ini": "^1.3.2" - } - }, - "gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmmirror.com/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==", - "dev": true, - "requires": { - "find-index": "^0.1.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "globule": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.3.tgz", - "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "requires": { - "lodash": "^4.17.15" - } - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - } - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - } - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "init-package-json": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/init-package-json/-/init-package-json-2.0.5.tgz", - "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", - "dev": true, - "requires": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "read-package-json": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-4.1.2.tgz", - "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "optional": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.5.tgz", - "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-any-array": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-any-array/-/is-any-array-2.0.0.tgz", - "integrity": "sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w==" - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmmirror.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", - "dev": true - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-ssh": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/is-ssh/-/is-ssh-1.3.3.tgz", - "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", - "dev": true, - "requires": { - "protocols": "^1.1.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "iview": { - "version": "3.5.4", - "resolved": "https://registry.npmmirror.com/iview/-/iview-3.5.4.tgz", - "integrity": "sha512-CEDHdAXxpGciMV+m1jdMDs0UVqzk/AaFhCDtSGcKDLidXRMOG2TgCZhtEHhI4mf3lchKEUFO/BcXtHAfBNuy7Q==", - "requires": { - "async-validator": "^1.12.2", - "deepmerge": "^2.2.1", - "element-resize-detector": "^1.2.0", - "js-calendar": "^1.2.3", - "lodash.throttle": "^4.1.1", - "popper.js": "^1.14.6", - "tinycolor2": "^1.4.1", - "v-click-outside-x": "^4.0.19" - } - }, - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", - "dev": true - }, - "js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "js-calendar": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/js-calendar/-/js-calendar-1.2.3.tgz", - "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==" - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmmirror.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-message": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", - "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", - "dev": true - }, - "js-queue": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/js-queue/-/js-queue-2.0.2.tgz", - "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", - "dev": true, - "requires": { - "easy-stack": "^1.0.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "jsencrypt": { - "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.2.1.tgz", - "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11" - } - }, - "launch-editor": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.3.0.tgz", - "integrity": "sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==", - "dev": true, - "requires": { - "picocolors": "^1.0.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.3.0.tgz", - "integrity": "sha512-GJR64trLdFFwCoL9DMn/d1SZX0OzTDPixu4mcfWTShQ4tIqCHCGvlg9fOEYQXyBlrSMQwylsJfUWncheShfV2w==", - "dev": true, - "requires": { - "launch-editor": "^2.3.0" - } - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lerna": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/lerna/-/lerna-4.0.0.tgz", - "integrity": "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==", - "dev": true, - "requires": { - "@lerna/add": "4.0.0", - "@lerna/bootstrap": "4.0.0", - "@lerna/changed": "4.0.0", - "@lerna/clean": "4.0.0", - "@lerna/cli": "4.0.0", - "@lerna/create": "4.0.0", - "@lerna/diff": "4.0.0", - "@lerna/exec": "4.0.0", - "@lerna/import": "4.0.0", - "@lerna/info": "4.0.0", - "@lerna/init": "4.0.0", - "@lerna/link": "4.0.0", - "@lerna/list": "4.0.0", - "@lerna/publish": "4.0.0", - "@lerna/run": "4.0.0", - "@lerna/version": "4.0.0", - "import-local": "^3.0.2", - "npmlog": "^4.1.2" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "less": { - "version": "3.13.1", - "resolved": "https://registry.npmmirror.com/less/-/less-3.13.1.tgz", - "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "less-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-6.1.0.tgz", - "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", - "dev": true, - "requires": { - "clone": "^2.1.2", - "less": "^3.11.1", - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.6" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "libnpmaccess": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz", - "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "libnpmpublish": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz", - "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "lint-staged": { - "version": "8.2.1", - "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-8.2.1.tgz", - "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "commander": "^2.14.1", - "cosmiconfig": "^5.2.0", - "debug": "^3.1.0", - "dedent": "^0.7.0", - "del": "^3.0.0", - "execa": "^1.0.0", - "g-status": "^2.0.2", - "is-glob": "^4.0.0", - "is-windows": "^1.0.2", - "listr": "^0.14.2", - "listr-update-renderer": "^0.5.0", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "micromatch": "^3.1.8", - "npm-which": "^3.0.1", - "p-map": "^1.1.1", - "path-is-inside": "^1.0.2", - "pify": "^3.0.0", - "please-upgrade-node": "^3.0.2", - "staged-git-files": "1.1.2", - "string-argv": "^0.0.2", - "stringify-object": "^3.2.2", - "yup": "^0.27.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/del/-/del-3.0.0.tgz", - "integrity": "sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A==", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - } - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmmirror.com/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - } - }, - "load-json-file": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - } - } - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - } - } - }, - "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/matcher/-/matcher-1.1.1.tgz", - "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, - "md5": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "8.1.2", - "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-options": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz", - "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.1" - } - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.8.2", - "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", - "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - } - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mitt": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/mitt/-/mitt-1.1.2.tgz", - "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "ml-array-max": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/ml-array-max/-/ml-array-max-1.2.4.tgz", - "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", - "requires": { - "is-any-array": "^2.0.0" - } - }, - "ml-array-min": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/ml-array-min/-/ml-array-min-1.2.3.tgz", - "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", - "requires": { - "is-any-array": "^2.0.0" - } - }, - "ml-array-rescale": { - "version": "1.3.7", - "resolved": "https://registry.npmmirror.com/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", - "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", - "requires": { - "is-any-array": "^2.0.0", - "ml-array-max": "^1.2.4", - "ml-array-min": "^1.2.3" - } - }, - "ml-matrix": { - "version": "6.10.0", - "resolved": "https://registry.npmmirror.com/ml-matrix/-/ml-matrix-6.10.0.tgz", - "integrity": "sha512-wU+jacx1dcP1QArV1/Kv49Ah6y2fq+BiQl2BnNVBC+hoCW7KgBZ4YZrowPopeoY164TB6Kes5wMeDjY8ODHYDg==", - "requires": { - "is-any-array": "^2.0.0", - "ml-array-rescale": "^1.3.7" - } - }, - "mockjs": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz", - "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", - "dev": true, - "requires": { - "commander": "*" - } - }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "monaco-editor": { - "version": "0.19.3", - "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.19.3.tgz", - "integrity": "sha512-2n1vJBVQF2Hhi7+r1mMeYsmlf18hjVb6E0v5SoMZyb4aeOmYPKun+CE3gYpiNA1KEvtSdaDHFBqH9d7Wd9vREg==" - }, - "monaco-editor-webpack-plugin": { - "version": "1.8.2", - "resolved": "https://registry.npmmirror.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.8.2.tgz", - "integrity": "sha512-g9G7A/lxQtpPsYaZFBqm73dwVkOziGUXExIR6iW7ksZUaiMkpvdTiE9O8edgdJGo+XtCmjycmIKB1Lt8VKbSTQ==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - } - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "dev": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmmirror.com/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "dev": true, - "requires": { - "glob": "^6.0.1" - } - } - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "native-request": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/native-request/-/native-request-1.1.0.tgz", - "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-gyp": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-5.1.1.tgz", - "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "mkdirp": "^0.5.1", - "nopt": "^4.0.1", - "npmlog": "^4.1.2", - "request": "^2.88.0", - "rimraf": "^2.6.3", - "semver": "^5.7.1", - "tar": "^4.4.12", - "which": "^1.3.1" - } - }, - "node-ipc": { - "version": "9.2.1", - "resolved": "https://registry.npmmirror.com/node-ipc/-/node-ipc-9.2.1.tgz", - "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - } - } - }, - "node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz", - "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz", - "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz", - "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "requires": { - "semver": "^7.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm-lifecycle": { - "version": "3.1.5", - "resolved": "https://registry.npmmirror.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", - "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", - "dev": true, - "requires": { - "byline": "^5.0.0", - "graceful-fs": "^4.1.15", - "node-gyp": "^5.0.2", - "resolve-from": "^4.0.0", - "slide": "^1.1.6", - "uid-number": "0.0.6", - "umask": "^1.1.0", - "which": "^1.3.1" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-path": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/npm-path/-/npm-path-2.0.4.tgz", - "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", - "dev": true, - "requires": { - "which": "^1.2.10" - } - }, - "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", - "dev": true, - "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/npm-which/-/npm-which-3.0.1.tgz", - "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", - "dev": true, - "requires": { - "commander": "^2.9.0", - "npm-path": "^2.0.2", - "which": "^1.2.10" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-map-series": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/p-map-series/-/p-map-series-2.1.0.tgz", - "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", - "dev": true - }, - "p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true - }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "p-waterfall": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", - "dev": true, - "requires": { - "p-reduce": "^2.0.0" - } - }, - "pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmmirror.com/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dev": true, - "requires": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "dependencies": { - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-url": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.2.tgz", - "integrity": "sha512-uCSjOvD3T+6B/sPWhR+QowAZcU/o4bjPrVBQBGFxcDF6J6FraCGIaDBsdoQawiaaAVdHvtqBe3w3vKlfBKySOQ==", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "normalize-url": "^6.1.0", - "parse-path": "^4.0.4", - "protocols": "^1.4.0" - }, - "dependencies": { - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "parse-path": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz", - "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "protocols": "^1.4.0", - "qs": "^6.9.4", - "query-string": "^6.13.8" - } - }, - "query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "dev": true - } - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" - }, - "patch-package": { - "version": "6.2.2", - "resolved": "https://registry.npmmirror.com/patch-package/-/patch-package-6.2.2.tgz", - "integrity": "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==", - "dev": true, - "requires": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "find-yarn-workspace-root": "^1.2.1", - "fs-extra": "^7.0.1", - "is-ci": "^2.0.0", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", - "rimraf": "^2.6.3", - "semver": "^5.6.0", - "slash": "^2.0.0", - "tmp": "^0.0.33" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - } - } - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", - "dev": true, - "requires": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - } - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "optional": true - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-prefix-selector": { - "version": "1.15.0", - "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.15.0.tgz", - "integrity": "sha512-9taaTPs6I4906QC03zBBt0LfTWAhrqEWlKSj0jRlxrg1yV+O91h0wcquu6krcA5L6aEv3QnCeG8B1vZ5WT4ecQ==", - "dev": true - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "posthtml": { - "version": "0.9.2", - "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz", - "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", - "dev": true, - "requires": { - "posthtml-parser": "^0.2.0", - "posthtml-render": "^1.0.5" - } - }, - "posthtml-parser": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz", - "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", - "dev": true, - "requires": { - "htmlparser2": "^3.8.3", - "isobject": "^2.1.0" - }, - "dependencies": { - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "posthtml-rename-id": { - "version": "1.0.12", - "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", - "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "posthtml-render": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz", - "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", - "dev": true - }, - "posthtml-svg-mode": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", - "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", - "dev": true, - "requires": { - "merge-options": "1.0.1", - "posthtml": "^0.9.2", - "posthtml-parser": "^0.2.1", - "posthtml-render": "^1.0.6" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", - "dev": true - }, - "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "dev": true, - "optional": true - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", - "dev": true, - "requires": { - "read": "1" - } - }, - "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "protocols": { - "version": "1.4.8", - "resolved": "https://registry.npmmirror.com/protocols/-/protocols-1.4.8.tgz", - "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmmirror.com/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", - "dev": true - }, - "read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "read-package-tree": { - "version": "5.3.1", - "resolved": "https://registry.npmmirror.com/read-package-tree/-/read-package-tree-5.3.1.tgz", - "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", - "dev": true, - "requires": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - } - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmmirror.com/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true, - "optional": true - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", - "dev": true, - "optional": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "reselect": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/reselect/-/reselect-3.0.1.tgz", - "integrity": "sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", - "dev": true, - "optional": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-node": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/run-node/-/run-node-1.0.0.tgz", - "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "requires": { - "aproba": "^1.1.1" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmmirror.com/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", - "dev": true, - "optional": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmmirror.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", - "dev": true, - "optional": true, - "requires": { - "rx-lite": "*" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass-graph": { - "version": "2.2.5", - "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz", - "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^13.3.2" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-git": { - "version": "1.132.0", - "resolved": "https://registry.npmmirror.com/simple-git/-/simple-git-1.132.0.tgz", - "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==", - "dev": true, - "requires": { - "debug": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "optional": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz", - "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.0.tgz", - "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "eventsource": "^1.1.0", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmmirror.com/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "speed-measure-webpack-plugin": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.5.0.tgz", - "integrity": "sha512-Re0wX5CtM6gW7bZA64ONOfEPEhwbiSF/vz6e2GvadjuaPrQcHTQdRGsD8+BE7iUOysXH8tIenkPCQBEcspXsNg==", - "dev": true, - "requires": { - "chalk": "^4.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", - "dev": true - }, - "staged-git-files": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/staged-git-files/-/staged-git-files-1.1.2.tgz", - "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true - }, - "string-argv": { - "version": "0.0.2", - "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.0.2.tgz", - "integrity": "sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", - "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "string.prototype.padstart": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz", - "integrity": "sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "optional": true - }, - "strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, - "requires": { - "minimist": "^1.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-baker": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz", - "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", - "dev": true, - "requires": { - "bluebird": "^3.5.0", - "clone": "^2.1.1", - "he": "^1.1.1", - "image-size": "^0.5.1", - "loader-utils": "^1.1.0", - "merge-options": "1.0.1", - "micromatch": "3.1.0", - "postcss": "^5.2.17", - "postcss-prefix-selector": "^1.6.0", - "posthtml-rename-id": "^1.0", - "posthtml-svg-mode": "^1.0.3", - "query-string": "^4.3.2", - "traverse": "^0.6.6" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "micromatch": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", - "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.2.2", - "define-property": "^1.0.0", - "extend-shallow": "^2.0.1", - "extglob": "^2.0.2", - "fragment-cache": "^0.2.1", - "kind-of": "^5.0.2", - "nanomatch": "^1.2.1", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "svg-baker-runtime": { - "version": "1.4.7", - "resolved": "https://registry.npmmirror.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", - "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", - "dev": true, - "requires": { - "deepmerge": "1.3.2", - "mitt": "1.1.2", - "svg-baker": "^1.7.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", - "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", - "dev": true - } - } - }, - "svg-sprite-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-5.0.0.tgz", - "integrity": "sha512-/hedkRC2IS0E+kFIb+OUCfqQlbVx72/WEEeRGw2uPsNgOOgJEONXzjfSm+CJ3pB9gOHytlBmPMS8ijMCp5s2Eg==", - "dev": true, - "requires": { - "bluebird": "^3.5.0", - "deepmerge": "1.3.2", - "domready": "1.0.8", - "escape-string-regexp": "1.0.5", - "html-webpack-plugin": "^3.2.0", - "loader-utils": "^1.1.0", - "svg-baker": "^1.5.0", - "svg-baker-runtime": "^1.4.7", - "url-slug": "2.0.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", - "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", - "dev": true - } - } - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "svgo": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.0.tgz", - "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.33", - "csso": "^3.5.1", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "synchronous-promise": { - "version": "2.0.15", - "resolved": "https://registry.npmmirror.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz", - "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", - "dev": true - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "optional": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==", - "dev": true, - "optional": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", - "dev": true, - "optional": true - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmmirror.com/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dev": true, - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "dev": true - }, - "temp-write": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/temp-write/-/temp-write-4.0.0.tgz", - "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "is-stream": "^2.0.0", - "make-dir": "^3.0.0", - "temp-dir": "^1.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz", - "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", - "dev": true - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmmirror.com/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==", - "dev": true - }, - "umask": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/umask/-/umask-1.1.0.tgz", - "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "unidecode": { - "version": "0.1.8", - "resolved": "https://registry.npmmirror.com/unidecode/-/unidecode-0.1.8.tgz", - "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - } - } - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/url-slug/-/url-slug-2.0.0.tgz", - "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==", - "dev": true, - "requires": { - "unidecode": "0.1.8" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "util-promisify": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/util-promisify/-/util-promisify-2.1.0.tgz", - "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v-click-outside-x": { - "version": "4.1.3", - "resolved": "https://registry.npmmirror.com/v-click-outside-x/-/v-click-outside-x-4.1.3.tgz", - "integrity": "sha512-qK4wwuDHK406fGBSJ4DbioPb6LQpRkWqk8i1TZhnVwObU+W4Ra6H7Cn+VLy/dTNTH/sgZJzk9YMYnB/s5RJ0Hg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - } - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "vue": { - "version": "2.6.12", - "resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.12.tgz", - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" - }, - "vue-cli-plugin-mockjs": { - "version": "0.1.3", - "resolved": "https://registry.npmmirror.com/vue-cli-plugin-mockjs/-/vue-cli-plugin-mockjs-0.1.3.tgz", - "integrity": "sha512-BK7EaGhrLYYMOAPuhLxZjpBGJOLtpCFfVT2FDhDqBZIF+DimmAG/06P+gFwMDSQb8j8ROirLLBgLDjqIXJj56A==", - "dev": true, - "requires": { - "express": "^4.16.4", - "mockjs": "^1.0.1-beta3" - } - }, - "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "optional": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "optional": true - } - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-i18n": { - "version": "8.22.1", - "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.22.1.tgz", - "integrity": "sha512-JNgiEJ5a8YPfk5y2lKyfOAGLmkpAVfhaUi+T4wGpSppRYZ3XSyawSDDketY5KV2CsAiBLAGEIO6jO+0l2hQubg==" - }, - "vue-loader": { - "version": "15.9.8", - "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz", - "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-router": { - "version": "3.4.8", - "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.4.8.tgz", - "integrity": "sha512-3BsR84AqarcmweXjItxw3jwQsiYNssYg090yi4rlzTnCJxmHtkyCvhNz9Z7qRSOkmiV485KkUCReTp5AjNY4wg==" - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-template-compiler": { - "version": "2.6.12", - "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", - "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuescroll": { - "version": "4.16.1", - "resolved": "https://registry.npmmirror.com/vuescroll/-/vuescroll-4.16.1.tgz", - "integrity": "sha512-7fRsG2Yw5Z07LUz/IIu9barpmYiN9q+ZTC+CrVamvCbmsxyhz8mU1OuYFbfORysaUskioNMxTGDo+HOzeDfSyQ==" - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - } - }, - "webpack-bundle-analyzer": { - "version": "3.9.0", - "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", - "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - } - } - }, - "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "requires": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "webpack-virtual-modules": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz", - "integrity": "sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "requires": { - "errno": "~0.1.7" - } - }, - "worker-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz", - "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", - "requires": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" - }, - "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/write/-/write-0.2.1.tgz", - "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "write-json-file": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-4.3.0.tgz", - "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", - "dev": true, - "requires": { - "detect-indent": "^6.0.0", - "graceful-fs": "^4.1.15", - "is-plain-obj": "^2.0.0", - "make-dir": "^3.0.0", - "sort-keys": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "sort-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-4.2.0.tgz", - "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", - "dev": true, - "requires": { - "is-plain-obj": "^2.0.0" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "write-pkg": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/write-pkg/-/write-pkg-4.0.0.tgz", - "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", - "dev": true, - "requires": { - "sort-keys": "^2.0.0", - "type-fest": "^0.4.1", - "write-json-file": "^3.2.0" - }, - "dependencies": { - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true - }, - "write-json-file": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-3.2.0.tgz", - "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", - "dev": true, - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.15", - "make-dir": "^2.1.0", - "pify": "^4.0.1", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.4.2" - } - } - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "yup": { - "version": "0.27.0", - "resolved": "https://registry.npmmirror.com/yup/-/yup-0.27.0.tgz", - "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.11", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", - "toposort": "^2.0.2" - }, - "dependencies": { - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true - } - } - }, - "zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "zrender": { - "version": "4.3.2", - "resolved": "https://registry.npmmirror.com/zrender/-/zrender-4.3.2.tgz", - "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" - } - } + "name": "dataspherestudio", + "version": "1.1.4", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "dataspherestudio", + "version": "1.1.4", + "dependencies": { + "@antv/g6": "^4.5.3", + "@riophae/vue-treeselect": "0.4.0", + "axios": "0.21.1", + "babel-polyfill": "6.26.0", + "bootstrap": "^3.4.1", + "butterfly-dag": "4.1.23", + "clipboard": "^2.0.8", + "core-js": "2.6.11", + "d3": "3.5.17", + "dayjs": "1.10.7", + "dexie": "2.0.4", + "dt-sql-parser": "1.2.1", + "echarts": "^4.1.0", + "eslint": "6.8.0", + "eslint-plugin-vue": "6.2.2", + "highlight.js": "9.18.3", + "iview": "3.5.4", + "jquery": "3.6.0", + "jsencrypt": "^3.2.1", + "lodash": "4.17.20", + "mavon-editor": "2.10.4", + "md5": "2.3.0", + "moment": "2.29.1", + "moment-timezone": "^0.5.34", + "monaco-editor": "0.19.3", + "qs": "6.9.4", + "reconnecting-websocket": "4.4.0", + "sql-formatter": "2.3.3", + "svgo": "1.3.0", + "vue": "2.6.12", + "vue-i18n": "8.22.1", + "vue-router": "3.4.8", + "vuedraggable": "2.24.3", + "vuescroll": "4.16.1", + "webpack": "^4.46.0", + "worker-loader": "2.0.0" + }, + "devDependencies": { + "@kazupon/vue-i18n-loader": "0.4.1", + "@vue/cli-plugin-babel": "3.12.1", + "@vue/cli-plugin-eslint": "3.12.1", + "@vue/cli-service": "3.12.1", + "@vue/eslint-config-standard": "4.0.0", + "archiver": "3.1.1", + "babel-eslint": "10.1.0", + "copy-webpack-plugin": "4.6.0", + "csp-html-webpack-plugin": "4.0.0", + "filemanager-webpack-plugin": "2.0.5", + "husky": "1.3.1", + "lerna": "^4.0.0", + "less-loader": "6.1.0", + "lint-staged": "8.2.1", + "monaco-editor-webpack-plugin": "1.8.2", + "node-sass": "4.14.1", + "patch-package": "6.2.2", + "sass-loader": "7.3.1", + "speed-measure-webpack-plugin": "1.5.0", + "svg-sprite-loader": "5.0.0", + "vue-cli-plugin-mockjs": "0.1.3", + "vue-template-compiler": "2.6.12", + "webpack-virtual-modules": "0.3.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ant-design/colors": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-4.0.5.tgz", + "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==", + "dependencies": { + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@antv/algorithm": { + "version": "0.1.24", + "resolved": "https://registry.npmmirror.com/@antv/algorithm/-/algorithm-0.1.24.tgz", + "integrity": "sha512-zAv/YNDKYrHHKJKCn6RBKoNo9/298/qY6J5SSGglIIUfwJXN6wyRyTmNPfmkE/9t6/7XK9PYvK/6esQnwFawwQ==", + "dependencies": { + "@antv/util": "^2.0.13", + "tslib": "^2.0.0" + } + }, + "node_modules/@antv/dom-util": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@antv/dom-util/-/dom-util-2.0.4.tgz", + "integrity": "sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==" + }, + "node_modules/@antv/g-base": { + "version": "0.5.11", + "resolved": "https://registry.npmmirror.com/@antv/g-base/-/g-base-0.5.11.tgz", + "integrity": "sha512-10Hkq7XksVCqxZZrPkd6HTU9tb/+2meCVEMy/edhS4I/sokhcgC9m3fQP5bE8rA3EVKwELE7MJHZ98BEpVFqvQ==", + "dependencies": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.13", + "@types/d3-timer": "^2.0.0", + "d3-ease": "^1.0.5", + "d3-interpolate": "^1.3.2", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-base/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-base/node_modules/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "node_modules/@antv/g-canvas": { + "version": "0.5.12", + "resolved": "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-0.5.12.tgz", + "integrity": "sha512-iJ/muwwqCCNONVlPIzv/7OL5iLguaKRj2BxNMytUO3TWwamM+kHkiyYEOkS0dPn9h/hBsHYlLUluSVz2Fp6/bw==", + "dependencies": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-canvas/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-math": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/@antv/g-math/-/g-math-0.1.7.tgz", + "integrity": "sha512-xGyXaloD1ynfp7gS4VuV+MjSptZIwHvLHr8ekXJSFAeWPYLu84yOW2wOZHDdp1bzDAIuRv6xDBW58YGHrWsFcA==", + "dependencies": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "node_modules/@antv/g-svg": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-svg/-/g-svg-0.5.6.tgz", + "integrity": "sha512-Xve1EUGk4HMbl2nq4ozR4QLh6GyoZ8Xw/+9kHYI4B5P2lIUQU95MuRsaLFfW5NNpZDx85ZeH97tqEmC9L96E7A==", + "dependencies": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/util": "~2.0.0", + "detect-browser": "^5.0.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-webgpu": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu/-/g-webgpu-0.5.5.tgz", + "integrity": "sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==", + "dependencies": { + "@antv/g-webgpu-core": "^0.5.5", + "@antv/g-webgpu-engine": "^0.5.5", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "gl-vec2": "^1.3.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "polyline-miter-util": "^1.0.1", + "polyline-normals": "^2.0.2", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@antv/g-webgpu-core": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu-core/-/g-webgpu-core-0.5.6.tgz", + "integrity": "sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==", + "dependencies": { + "eventemitter3": "^4.0.0", + "gl-matrix": "^3.1.0", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@antv/g-webgpu-engine": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu-engine/-/g-webgpu-engine-0.5.6.tgz", + "integrity": "sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==", + "dependencies": { + "@antv/g-webgpu-core": "^0.5.6", + "@webgpu/glslang": "^0.0.15", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13", + "regl": "^1.3.11" + } + }, + "node_modules/@antv/g6": { + "version": "4.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6/-/g6-4.6.15.tgz", + "integrity": "sha512-sbtVPZxGHBNnkLynd4GAQAheDDZ/xUdPAJxxLO7LiMmaZcyNlk0ApV5d8G8IdiBFvJ6+mhaF+kot3LMyvsEx+g==", + "dependencies": { + "@antv/g6-pc": "0.6.15" + } + }, + "node_modules/@antv/g6-core": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-core/-/g6-core-0.6.15.tgz", + "integrity": "sha512-klE4bLcY9dcByl9J97tN2IBEJcXFroyEJRG55l99IXd7ujh+DGnPEmKMX1BdnCiDqLZ9GJybRG5g6DqX6e7BbQ==", + "dependencies": { + "@antv/algorithm": "^0.1.8", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-math": "^0.1.1", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "ml-matrix": "^6.5.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@antv/g6-core/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g6-element": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-element/-/g6-element-0.6.15.tgz", + "integrity": "sha512-8bUSCRMQVK9bh64V+jZRKpLapPVlrLdzC429uodg5wk9l3hugcSdanX6LAuLmy0p5Y4lXSyF2UsmWdx8t1qfcg==", + "dependencies": { + "@antv/g-base": "^0.5.1", + "@antv/g6-core": "0.6.15", + "@antv/util": "~2.0.5" + } + }, + "node_modules/@antv/g6-pc": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-pc/-/g6-pc-0.6.15.tgz", + "integrity": "sha512-BqfFD5XiLfRhBt0QygdynUidz4T6azg0GnAzYsEkuKkye7qvaLL46xtfp9+Lqw/aUkBsjXUcEeJjoIPrx0Ehig==", + "dependencies": { + "@ant-design/colors": "^4.0.5", + "@antv/algorithm": "^0.1.8", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.5.1", + "@antv/g6-core": "0.6.15", + "@antv/g6-element": "0.6.15", + "@antv/g6-plugin": "0.6.15", + "@antv/hierarchy": "^0.6.7", + "@antv/layout": "^0.2.5", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "color": "^3.1.3", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "insert-css": "^2.0.0", + "ml-matrix": "^6.5.0" + } + }, + "node_modules/@antv/g6-pc/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g6-plugin": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-plugin/-/g6-plugin-0.6.15.tgz", + "integrity": "sha512-LaXYEzaW3qkcAdwRrrhRItbsRKmtN6Orb0UCTRYSw0W8UOO4p4w5Tk05I7TME/VzPfMn9bXB+rD4aZofFzBYoA==", + "dependencies": { + "@antv/dom-util": "^2.0.2", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-svg": "^0.5.2", + "@antv/g6-core": "0.6.15", + "@antv/g6-element": "0.6.15", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/scale": "^0.3.4", + "@antv/util": "^2.0.9", + "insert-css": "^2.0.0" + } + }, + "node_modules/@antv/g6-plugin/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/graphlib": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@antv/graphlib/-/graphlib-1.2.0.tgz", + "integrity": "sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==" + }, + "node_modules/@antv/hierarchy": { + "version": "0.6.8", + "resolved": "https://registry.npmmirror.com/@antv/hierarchy/-/hierarchy-0.6.8.tgz", + "integrity": "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A==", + "dependencies": { + "@antv/util": "^2.0.7" + } + }, + "node_modules/@antv/layout": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/@antv/layout/-/layout-0.2.5.tgz", + "integrity": "sha512-YezISSc5wp88QLvytS2mm/3sFvJYTafIWEvjvp4DIIfIkt8fzZZSJHXJVky3VIqGwbkmD278lMWQQmQ8W1EWEA==", + "dependencies": { + "@antv/g-webgpu": "0.5.5", + "@antv/graphlib": "^1.0.0", + "d3-force": "^2.0.1", + "dagre-compound": "^0.0.11", + "ml-matrix": "^6.5.0" + } + }, + "node_modules/@antv/matrix-util": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.0.4.tgz", + "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/path-util": { + "version": "2.0.15", + "resolved": "https://registry.npmmirror.com/@antv/path-util/-/path-util-2.0.15.tgz", + "integrity": "sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==", + "dependencies": { + "@antv/matrix-util": "^3.0.4", + "@antv/util": "^2.0.9", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/scale": { + "version": "0.3.18", + "resolved": "https://registry.npmmirror.com/@antv/scale/-/scale-0.3.18.tgz", + "integrity": "sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==", + "dependencies": { + "@antv/util": "~2.0.3", + "fecha": "~4.2.0", + "tslib": "^2.0.0" + } + }, + "node_modules/@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "dependencies": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", + "integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.9", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.3.4", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.3.4.tgz", + "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.3.4", + "@babel/plugin-transform-classes": "^7.3.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.3.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.3.4", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs2": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.17.9.tgz", + "integrity": "sha512-+QThIsnjVY12uURTvmnW33risFZ7ulq6OWw0VJL08UwiYiWVp9PM63s+W1L2ppajYyKAYKb7afcGYSHzA0k04Q==", + "dev": true, + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'", + "dev": true + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dev": true + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dev": true + }, + "node_modules/@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", + "dev": true, + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dev": true, + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "dependencies": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", + "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@kazupon/vue-i18n-loader": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@kazupon/vue-i18n-loader/-/vue-i18n-loader-0.4.1.tgz", + "integrity": "sha512-hVznmhnyoUKozGY7pwq/UtPL76UDzb+aiN2YksZZIzCY/MkEqih0MSyEmTGw7+HVWzJRPAlDyoRNR4tWKmkCRw==", + "deprecated": "WARNING: If you would like to use @kazupon/vue-i18n-loader that is released new features and bug fixes, you need to install @intlify/vue-i18n-loader.", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "json5": "^2.1.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@kazupon/vue-i18n-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/add": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/add/-/add-4.0.0.tgz", + "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", + "dev": true, + "dependencies": { + "@lerna/bootstrap": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "npm-package-arg": "^8.1.0", + "p-map": "^4.0.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/add/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/add/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/add/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/add/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/bootstrap": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", + "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/has-npm-version": "4.0.0", + "@lerna/npm-install": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "read-package-tree": "^5.3.1", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/bootstrap/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/bootstrap/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/bootstrap/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/bootstrap/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/changed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/changed/-/changed-4.0.0.tgz", + "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/check-working-tree": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", + "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", + "dev": true, + "dependencies": { + "@lerna/collect-uncommitted": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/validation-error": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/child-process": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/child-process/-/child-process-4.0.0.tgz", + "integrity": "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/child-process/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/child-process/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/child-process/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/child-process/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/child-process/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/child-process/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/child-process/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@lerna/child-process/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/child-process/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/child-process/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/child-process/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/clean": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/clean/-/clean-4.0.0.tgz", + "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/clean/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/cli": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/cli/-/cli-4.0.0.tgz", + "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", + "dev": true, + "dependencies": { + "@lerna/global-options": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^16.2.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/collect-uncommitted": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", + "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "chalk": "^4.1.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/collect-uncommitted/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/collect-uncommitted/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/collect-uncommitted/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/collect-uncommitted/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/collect-uncommitted/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/collect-uncommitted/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/collect-updates": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", + "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/collect-updates/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/command/-/command-4.0.0.tgz", + "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/project": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/write-log-file": "4.0.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/command/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/@lerna/command/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/command/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/command/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/command/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@lerna/command/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@lerna/command/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/command/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/command/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/command/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/conventional-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", + "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "4.0.0", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.2", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/create": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/create/-/create-4.0.0.tgz", + "integrity": "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^2.0.2", + "npm-package-arg": "^8.1.0", + "p-reduce": "^2.1.0", + "pacote": "^11.2.6", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/create-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", + "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", + "dev": true, + "dependencies": { + "cmd-shim": "^4.1.0", + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/create-symlink/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create-symlink/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/create-symlink/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/create/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/create/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@lerna/create/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@lerna/create/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@lerna/create/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/create/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@lerna/create/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/create/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/create/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@lerna/create/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/create/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/create/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/describe-ref": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", + "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/diff/-/diff-4.0.0.tgz", + "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/exec": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/exec/-/exec-4.0.0.tgz", + "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/exec/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/filter-options": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/filter-options/-/filter-options-4.0.0.tgz", + "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "4.0.0", + "@lerna/filter-packages": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/filter-packages": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", + "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "4.0.0", + "multimatch": "^5.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/get-npm-exec-opts": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", + "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/get-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/get-packed/-/get-packed-4.0.0.tgz", + "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/get-packed/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/get-packed/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/get-packed/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/get-packed/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/get-packed/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/get-packed/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/get-packed/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/get-packed/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/get-packed/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/get-packed/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/get-packed/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/github-client": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/github-client/-/github-client-4.0.0.tgz", + "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^18.1.0", + "git-url-parse": "^11.4.4", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/gitlab-client": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", + "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "npmlog": "^4.1.2", + "whatwg-url": "^8.4.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/global-options": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/global-options/-/global-options-4.0.0.tgz", + "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", + "dev": true, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/has-npm-version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", + "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/has-npm-version/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/has-npm-version/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/has-npm-version/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/import": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/import/-/import-4.0.0.tgz", + "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/import/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/import/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/import/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/info": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/info/-/info-4.0.0.tgz", + "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/output": "4.0.0", + "envinfo": "^7.7.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/init": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/init/-/init-4.0.0.tgz", + "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/init/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/init/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/init/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/init/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/link": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/link/-/link-4.0.0.tgz", + "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "p-map": "^4.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/link/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/link/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/list": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/list/-/list-4.0.0.tgz", + "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/listable": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/listable/-/listable-4.0.0.tgz", + "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "4.0.0", + "chalk": "^4.1.0", + "columnify": "^1.5.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/listable/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/listable/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/listable/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/listable/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/listable/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/listable/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/log-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/log-packed/-/log-packed-4.0.0.tgz", + "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", + "dev": true, + "dependencies": { + "byte-size": "^7.0.0", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-conf": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", + "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-conf/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", + "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", + "dev": true, + "dependencies": { + "@lerna/otplease": "4.0.0", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@lerna/npm-dist-tag/node_modules/npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "dependencies": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/npm-install": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-install/-/npm-install-4.0.0.tgz", + "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "fs-extra": "^9.1.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-install/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-install/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/npm-install/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/npm-publish": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", + "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", + "dev": true, + "dependencies": { + "@lerna/otplease": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmpublish": "^4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "read-package-json": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-publish/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/npm-publish/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/read-package-json": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-3.0.1.tgz", + "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/npm-publish/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/npm-run-script": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", + "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/otplease": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/otplease/-/otplease-4.0.0.tgz", + "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", + "dev": true, + "dependencies": { + "@lerna/prompt": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/output": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/output/-/output-4.0.0.tgz", + "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/pack-directory": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", + "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", + "dev": true, + "dependencies": { + "@lerna/get-packed": "4.0.0", + "@lerna/package": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "npm-packlist": "^2.1.4", + "npmlog": "^4.1.2", + "tar": "^6.1.0", + "temp-write": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/pack-directory/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/pack-directory/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/pack-directory/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/pack-directory/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/pack-directory/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/pack-directory/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/pack-directory/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/package": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/package/-/package-4.0.0.tgz", + "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", + "dev": true, + "dependencies": { + "load-json-file": "^6.2.0", + "npm-package-arg": "^8.1.0", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/package-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/package-graph/-/package-graph-4.0.0.tgz", + "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "dev": true, + "dependencies": { + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/package-graph/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/package-graph/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/package-graph/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/prerelease-id-from-version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", + "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", + "dev": true, + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/prerelease-id-from-version/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/prerelease-id-from-version/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/prerelease-id-from-version/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/profiler": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/profiler/-/profiler-4.0.0.tgz", + "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "upath": "^2.0.1" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/profiler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/profiler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/profiler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/profiler/node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/@lerna/project": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/project/-/project-4.0.0.tgz", + "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", + "dev": true, + "dependencies": { + "@lerna/package": "4.0.0", + "@lerna/validation-error": "4.0.0", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/project/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/project/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/project/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/project/node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@lerna/project/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/project/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@lerna/project/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/project/node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@lerna/project/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@lerna/project/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@lerna/project/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/project/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/project/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@lerna/prompt": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/prompt/-/prompt-4.0.0.tgz", + "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", + "dev": true, + "dependencies": { + "inquirer": "^7.3.3", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/prompt/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/prompt/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/@lerna/prompt/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/prompt/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/prompt/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/prompt/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@lerna/prompt/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@lerna/prompt/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/prompt/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/@lerna/prompt/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/prompt/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/prompt/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/publish/-/publish-4.0.0.tgz", + "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/log-packed": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/npm-dist-tag": "4.0.0", + "@lerna/npm-publish": "4.0.0", + "@lerna/otplease": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/pack-directory": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/version": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmaccess": "^4.0.1", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/publish/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/publish/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@lerna/publish/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/publish/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/publish/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/publish/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/publish/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@lerna/publish/node_modules/npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "dependencies": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@lerna/publish/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@lerna/publish/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@lerna/publish/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/publish/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/pulse-till-done": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", + "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/query-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/query-graph/-/query-graph-4.0.0.tgz", + "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", + "dev": true, + "dependencies": { + "@lerna/package-graph": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/resolve-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", + "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^2.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/resolve-symlink/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/resolve-symlink/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/resolve-symlink/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/rimraf-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", + "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/rimraf-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/rimraf-dir/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@lerna/run": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run/-/run-4.0.0.tgz", + "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-run-script": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/timer": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run-lifecycle": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", + "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", + "dev": true, + "dependencies": { + "@lerna/npm-conf": "4.0.0", + "npm-lifecycle": "^3.1.5", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run-topologically": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", + "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "4.0.0", + "p-queue": "^6.6.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/symlink-binary": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", + "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "4.0.0", + "@lerna/package": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/symlink-binary/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/symlink-binary/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/symlink-binary/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/symlink-binary/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/symlink-dependencies": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", + "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "4.0.0", + "@lerna/resolve-symlink": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/symlink-dependencies/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/symlink-dependencies/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@lerna/symlink-dependencies/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/symlink-dependencies/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@lerna/timer": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/timer/-/timer-4.0.0.tgz", + "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", + "dev": true, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/validation-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/validation-error/-/validation-error-4.0.0.tgz", + "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/version/-/version-4.0.0.tgz", + "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/conventional-commits": "4.0.0", + "@lerna/github-client": "4.0.0", + "@lerna/gitlab-client": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "temp-write": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/version/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/version/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/version/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/version/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/version/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/version/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/version/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/version/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/version/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/version/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/version/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@lerna/write-log-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", + "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/write-log-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/ci-detect": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", + "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", + "dev": true + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/git/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/@npmcli/run-script": { + "version": "1.8.6", + "resolved": "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/@npmcli/run-script/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/run-script/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/run-script/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/run-script/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@npmcli/run-script/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/run-script/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/run-script/node_modules/node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@npmcli/run-script/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@npmcli/run-script/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/run-script/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/run-script/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmmirror.com/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmmirror.com/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmmirror.com/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "node_modules/@probe.gl/env": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/env/-/env-3.5.0.tgz", + "integrity": "sha512-YdlpZZshhyYxvWDBmZ5RIW2pTR14Pw4p9czMlt/v7F6HbFzWfAdmH7q6xVwFRYxUpQLwhWensWyv4aFysiWl4g==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/@probe.gl/log": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/log/-/log-3.5.0.tgz", + "integrity": "sha512-nW/qz2X1xY08WU/TsmJP6/6IPNcaY5fS/vLjpC4ahJuE2Mezga4hGM/R2X5JWE/nkPc+BsC5GnAnD13rwAxS7g==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "@probe.gl/env": "3.5.0" + } + }, + "node_modules/@probe.gl/stats": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/stats/-/stats-3.5.0.tgz", + "integrity": "sha512-IH2M+F3c8HR1DTroBARePUFG7wIewumtKA0UFqx51Z7S4hKrD60wFbpMmg0AcF4FvHAXMBoC+kYi1UKW9XbAOw==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/@riophae/vue-treeselect": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz", + "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "easings-css": "^1.0.0", + "fuzzysearch": "^1.0.3", + "is-promise": "^2.1.0", + "lodash": "^4.0.0", + "material-colors": "^1.2.6", + "watch-size": "^2.0.0" + }, + "peerDependencies": { + "vue": "^2.2.0" + } + }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/d3-timer": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-2.0.1.tgz", + "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==" + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.27", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.27.tgz", + "integrity": "sha512-4/Ke7bbWOasuT3kceBZFGakP1dYN2XFd8v2l9bqF2LNWrmeU07JLpp56aEeG6+Q3olqO5TvXpW0yaiYnZJ5CXg==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-3.12.1.tgz", + "integrity": "sha512-Zjy5jQaikV1Pz+ri0YgXFS7q4/5wCxB5tRkDOEIt5+4105u0Feb/pvH20nVL6nx9GyXrECFfcm7Yxr/z++OaPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.1.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.4.0", + "@babel/preset-env": "^7.0.0 < 7.4.0", + "@babel/runtime": "^7.0.0", + "@babel/runtime-corejs2": "^7.2.0", + "@vue/babel-preset-jsx": "^1.0.0", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "3.2.0", + "core-js": "^2.6.5" + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-3.12.1.tgz", + "integrity": "sha512-Bym92EN+lj+cNRN2ozbYyH+V8DMXWGbCDUk+hiJ4EYDBZfBkZKvalk1/mOBFwyxiopnnbOEBAAhL/UuMQ1xARg==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.12.1.tgz", + "integrity": "sha512-Zetvz8PikLCGomeKOKu8pC9YQ7cfxs7pGpvEOzaxGdhMnebhjAYR6i6dOB57A6N5lhxQksXCtYTv26QgfiIpdg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.0.0", + "@vue/babel-preset-app": "^3.12.1", + "@vue/cli-shared-utils": "^3.12.1", + "babel-loader": "^8.0.5", + "webpack": "^4.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.12.1.tgz", + "integrity": "sha512-tVTZlEZsy3sQbO4LLWFK11yzlWwqVAqaM+IY+BeWHITBzEJKh2KmouG+x6x/reXiU3qROsMJ4Ej3Hs8buSMWyQ==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^3.12.1", + "babel-eslint": "^10.0.1", + "eslint-loader": "^2.1.2", + "globby": "^9.2.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "optionalDependencies": { + "eslint": "^4.19.1", + "eslint-plugin-vue": "^4.7.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "optional": true, + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "optional": true, + "dependencies": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-plugin-vue": { + "version": "4.7.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", + "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "dev": true, + "optional": true, + "dependencies": { + "vue-eslint-parser": "^2.0.3" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.18.0 || ^4.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true, + "optional": true + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true, + "optional": true + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "optional": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "optional": true + }, + "node_modules/@vue/cli-service": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-3.12.1.tgz", + "integrity": "sha512-PDxNrTGnSKzeV1ruFlsRIAO8JcPizwT0EJXq9GeyooU+p+sOkv7aKkCBJQVYNjZapD1NOGWx6CvAAC/wAW+gew==", + "dev": true, + "dependencies": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@vue/cli-overlay": "^3.12.1", + "@vue/cli-shared-utils": "^3.12.1", + "@vue/component-compiler-utils": "^3.0.0", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^6.1.1", + "acorn-walk": "^6.1.1", + "address": "^1.0.3", + "autoprefixer": "^9.5.1", + "browserslist": "^4.5.4", + "cache-loader": "^2.0.1", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-highlight": "^2.1.0", + "clipboardy": "^2.0.0", + "cliui": "^5.0.0", + "copy-webpack-plugin": "^4.6.0", + "css-loader": "^1.0.1", + "cssnano": "^4.1.10", + "current-script-polyfill": "^1.0.0", + "debug": "^4.1.1", + "default-gateway": "^5.0.2", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "escape-string-regexp": "^1.0.5", + "file-loader": "^3.0.1", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^1.0.2", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.8.0", + "minimist": "^1.2.0", + "ora": "^3.4.0", + "portfinder": "^1.0.20", + "postcss-loader": "^3.0.0", + "read-pkg": "^5.0.0", + "semver": "^6.0.0", + "slash": "^2.0.0", + "source-map-url": "^0.4.0", + "ssri": "^6.0.1", + "string.prototype.padend": "^3.0.0", + "terser-webpack-plugin": "^1.2.3", + "thread-loader": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.7.0", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.3.0", + "webpack-chain": "^4.11.0", + "webpack-dev-server": "^3.4.1", + "webpack-merge": "^4.2.1" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0" + } + }, + "node_modules/@vue/cli-service/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@vue/cli-service/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@vue/cli-service/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz", + "integrity": "sha512-jFblzRFjutGwu5utOKdVlPlsbA1lBUNNQlAThzNqej+JtTKJjnvjlhjKX0Gq0oOny5FjKWhoyfQ74p9h1qE6JQ==", + "dev": true, + "dependencies": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.0.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@vue/eslint-config-standard": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-standard/-/eslint-config-standard-4.0.0.tgz", + "integrity": "sha512-bQghq1cw1BuMRHNhr3tRpAJx1tpGy0QtajQX873kLtA9YVuOIoXR7nAWnTN09bBHnSUh2N288vMsqPi2fI4Hzg==", + "dev": true, + "dependencies": { + "eslint-config-standard": "^12.0.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-node": "^8.0.0", + "eslint-plugin-promise": "^4.0.1", + "eslint-plugin-standard": "^4.0.0" + } + }, + "node_modules/@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": ">=2.26.0", + "webpack": ">=4.0.0" + } + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webgpu/glslang": { + "version": "0.0.15", + "resolved": "https://registry.npmmirror.com/@webgpu/glslang/-/glslang-0.0.15.tgz", + "integrity": "sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==" + }, + "node_modules/@webgpu/types": { + "version": "0.0.31", + "resolved": "https://registry.npmmirror.com/@webgpu/types/-/types-0.0.31.tgz", + "integrity": "sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ==" + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", + "dev": true, + "optional": true, + "dependencies": { + "acorn": "^3.0.4" + } + }, + "node_modules/acorn-jsx/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true, + "optional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agentkeepalive/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "node_modules/archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "devOptional": true + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/async-validator": { + "version": "1.12.2", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.12.2.tgz", + "integrity": "sha512-57EETfCPFiB7M4QscvQzWSGNsmtkjjzZv318SK1CBlstk+hycV72ocjriMOOM48HjvmoAoJGpJNjC7Z76RlnZA==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + } + }, + "node_modules/autoprefixer/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/babel-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "dev": true, + "dependencies": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", + "dependencies": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "node_modules/babel-polyfill/node_modules/regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "node_modules/bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/butterfly-dag": { + "version": "4.1.23", + "resolved": "https://registry.npmmirror.com/butterfly-dag/-/butterfly-dag-4.1.23.tgz", + "integrity": "sha512-8B7HI5sexTQx9Wexy7pOSVwyMxzKmQxnmz6S7gWzzRuP6O/8Luny4edzkUjnnREE5PBplxK+c6PSJKrny901mQ==", + "dependencies": { + "@antv/hierarchy": "~0.6.4", + "@antv/matrix-util": "^3.0.4", + "d3-force": "~2.1.1", + "dagre": "~0.8.5", + "dom-to-image": "~2.6.0", + "eventemitter3": "4.0.7", + "ml-matrix": "^6.5.0" + }, + "peerDependencies": { + "jquery": ">=2.0.0", + "lodash": ">=4.0.0" + } + }, + "node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-2.0.1.tgz", + "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.0", + "normalize-path": "^3.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", + "dev": true + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "dev": true, + "optional": true, + "dependencies": { + "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "dev": true, + "optional": true + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, + "node_modules/check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + } + }, + "node_modules/cheerio-select/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/cheerio-select/node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cheerio-select/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/cheerio-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/cheerio-select/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/cheerio-select/node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/cheerio/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/cheerio/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "dev": true, + "optional": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true, + "optional": true + }, + "node_modules/clipboard": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "optional": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/columnify/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/columnify/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-core/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-changelog-core/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-changelog-writer/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-commits-parser/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conventional-recommended-bump/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + } + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "dependencies": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/copy-webpack-plugin/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.22.2", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.22.2.tgz", + "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.2", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.9.2", + "chokidar": "^1.6.0", + "duplexer": "^0.1.1", + "glob": "^7.0.5", + "glob2base": "^0.0.12", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "resolve": "^1.1.7", + "safe-buffer": "^5.0.1", + "shell-quote": "^1.6.1", + "subarg": "^1.0.0" + }, + "bin": { + "cpx": "bin/index.js" + } + }, + "node_modules/cpx/node_modules/anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "dependencies": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "node_modules/cpx/node_modules/arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/braces": { + "version": "1.8.5", + "resolved": "https://registry.npmmirror.com/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "dependencies": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "optionalDependencies": { + "fsevents": "^1.0.0" + } + }, + "node_modules/cpx/node_modules/expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "dependencies": { + "is-posix-bracket": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/cpx/node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/cpx/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "dependencies": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cpx/node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "dev": true, + "dependencies": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/csp-html-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/csp-html-webpack-plugin/-/csp-html-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-1YqQefNG0SrZisysThlly2bgs4Ab/W91xOM17S8wd+6vTo3E0OdL+y4IAR0MKpthRluNGzFB3QhPqdOhkXAExg==", + "dev": true, + "dependencies": { + "cheerio": "^1.0.0-rc.3", + "lodash": "^4.17.15", + "memory-fs": "^0.5.0" + }, + "peerDependencies": { + "html-webpack-plugin": "^2 || ^3 || ^4", + "webpack": "^2 || ^3 || ^4" + } + }, + "node_modules/csp-html-webpack-plugin/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/css-loader/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-loader/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/css-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.33", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz", + "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.5.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "dependencies": { + "css-tree": "1.0.0-alpha.29" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "dependencies": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + }, + "node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "node_modules/current-script-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", + "integrity": "sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==", + "dev": true + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "node_modules/d3": { + "version": "3.5.17", + "resolved": "https://registry.npmmirror.com/d3/-/d3-3.5.17.tgz", + "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg==" + }, + "node_modules/d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "node_modules/d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + } + }, + "node_modules/d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "dependencies": { + "d3-color": "1" + } + }, + "node_modules/d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-compound": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/dagre-compound/-/dagre-compound-0.0.11.tgz", + "integrity": "sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==", + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "dagre": "^0.8.5" + } + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "dependencies": { + "execa": "^3.3.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dexie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/dexie/-/dexie-2.0.4.tgz", + "integrity": "sha512-aQ/s1U2wHxwBKRrt2Z/mwFNHMQWhESerFsMYzE+5P5OsIe5o1kgpFMWkzKTtkvkyyEni6mWr/T4HUJuY9xIHLA==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "node_modules/dom-to-image": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/dom-to-image/-/dom-to-image-2.6.0.tgz", + "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domhandler/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/domready": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz", + "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==", + "dev": true + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/dt-sql-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/dt-sql-parser/-/dt-sql-parser-1.2.1.tgz", + "integrity": "sha512-bp6Rtm8N3m2Z3tavtKGo8J5ffaPQdPodYV2xGi9f6IsWbHzOkpNBxHlORcWtnSLtA/JvZcvImQxgbkdaGiv5cw==" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/easings-css": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/easings-css/-/easings-css-1.0.0.tgz", + "integrity": "sha512-7Uq7NdazNfVtr0RNmPAys8it0zKCuaqxJStYKEl72D3j4gbvXhhaM7iWNbqhA4C94ygCye6VuyhzBRQC4szeBg==" + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "dependencies": { + "zrender": "4.3.2" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.121", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.121.tgz", + "integrity": "sha512-N7OXhMr1p2oa9EkOhmHpmOm43DHzs55dep2FF6M7y6px5QJBheqEE3nwwZ+xJowlff+AEmMOdg3ARYGB+0kzbA==", + "dev": true + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "dependencies": { + "batch-processor": "1.0.0" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "dev": true, + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/es-abstract": { + "version": "1.19.5", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + } + }, + "node_modules/eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-import": ">=2.13.0", + "eslint-plugin-node": ">=7.0.0", + "eslint-plugin-promise": ">=4.0.0", + "eslint-plugin-standard": ">=4.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", + "dev": true, + "dependencies": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "peerDependencies": { + "eslint": ">=1.6.0 <7.0.0", + "webpack": ">=2.0.0 <5.0.0" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-es": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "dev": true, + "dependencies": { + "eslint-utils": "^1.4.2", + "regexpp": "^2.0.1" + }, + "engines": { + "node": ">=6.5.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-node": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz", + "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^5.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-standard": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", + "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dependencies": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + }, + "engines": { + "node": ">=8.10" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/eslint-plugin-vue/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dependencies": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8.10" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint/node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/eslint/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/eslint/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/eslint/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/slice-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint/node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "3.5.4", + "resolved": "https://registry.npmmirror.com/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "optional": true, + "dependencies": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "optional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "dependencies": { + "fill-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "dependencies": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.0.tgz", + "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "optional": true, + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "dev": true, + "optional": true, + "dependencies": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "dependencies": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/filemanager-webpack-plugin": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/filemanager-webpack-plugin/-/filemanager-webpack-plugin-2.0.5.tgz", + "integrity": "sha512-Yj5XIdKI2AN2r66uZc4MZ/n18SMqe2KKlkAqHHMW1OwveDs2Vc5129CpbFcI73rq/rjqso+2HsxieS7u5sx6XA==", + "dev": true, + "dependencies": { + "archiver": "^3.0.0", + "cpx": "^1.5.0", + "fs-extra": "^7.0.0", + "make-dir": "^1.1.0", + "mv": "^2.1.1", + "rimraf": "^2.6.2" + } + }, + "node_modules/filemanager-webpack-plugin/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/filemanager-webpack-plugin/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "dependencies": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-babel-config/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==", + "dev": true + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz", + "integrity": "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==", + "dev": true, + "dependencies": { + "fs-extra": "^4.0.3", + "micromatch": "^3.1.4" + } + }, + "node_modules/find-yarn-workspace-root/node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "optional": true, + "dependencies": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "node_modules/fuzzysearch": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/fuzzysearch/-/fuzzysearch-1.0.3.tgz", + "integrity": "sha512-s+kNWQuI3mo9OALw0HJ6YGmMbLqEufCh2nX/zzV5CrICQ/y4AwPxM+6TIiF9ItFCHXFCyM/BfCCmN57NTIJuPg==" + }, + "node_modules/g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/g-status/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-raw-commits/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/git-raw-commits/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "node_modules/git-url-parse": { + "version": "11.6.0", + "resolved": "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-11.6.0.tgz", + "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", + "dev": true, + "dependencies": { + "git-up": "^4.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/gl-vec2": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/gl-vec2/-/gl-vec2-1.3.0.tgz", + "integrity": "sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "dependencies": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-base/node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/glob-base/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-base/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true + }, + "node_modules/glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmmirror.com/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==", + "dev": true, + "dependencies": { + "find-index": "^0.1.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/globule": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "node_modules/highlight.js": { + "version": "9.18.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-9.18.3.tgz", + "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==", + "deprecated": "Version no longer supported. Upgrade to @latest", + "engines": { + "node": "*" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "dev": true + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "node_modules/html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "dependencies": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "deprecated": "3.x is no longer supported", + "dev": true, + "dependencies": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "dependencies": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "node_modules/html-webpack-plugin/node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/htmlparser2/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "bin": { + "husky-upgrade": "lib/upgrader/bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/husky/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/husky/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/husky/node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", + "dev": true, + "dependencies": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "node_modules/icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", + "dev": true, + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/icss-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh/node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true, + "bin": { + "in-install": "in-install.js", + "in-publish": "in-publish.js", + "not-in-install": "not-in-install.js", + "not-in-publish": "not-in-publish.js" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/init-package-json": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/init-package-json/-/init-package-json-2.0.5.tgz", + "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "dev": true, + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/inversify": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/inversify/-/inversify-5.1.1.tgz", + "integrity": "sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==" + }, + "node_modules/inversify-inject-decorators": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/inversify-inject-decorators/-/inversify-inject-decorators-3.1.0.tgz", + "integrity": "sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==" + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-any-array": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-any-array/-/is-any-array-2.0.0.tgz", + "integrity": "sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dev": true, + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "dependencies": { + "is-primitive": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + } + }, + "node_modules/is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "dependencies": { + "protocols": "^1.1.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/iview": { + "version": "3.5.4", + "resolved": "https://registry.npmmirror.com/iview/-/iview-3.5.4.tgz", + "integrity": "sha512-CEDHdAXxpGciMV+m1jdMDs0UVqzk/AaFhCDtSGcKDLidXRMOG2TgCZhtEHhI4mf3lchKEUFO/BcXtHAfBNuy7Q==", + "dependencies": { + "async-validator": "^1.12.2", + "deepmerge": "^2.2.1", + "element-resize-detector": "^1.2.0", + "js-calendar": "^1.2.3", + "lodash.throttle": "^4.1.1", + "popper.js": "^1.14.6", + "tinycolor2": "^1.4.1", + "v-click-outside-x": "^4.0.19" + }, + "engines": { + "node": ">=8.9.1", + "npm": ">=5.5.1", + "yarn": ">=1.3.2" + }, + "peerDependencies": { + "vue": "^2.5.2" + } + }, + "node_modules/javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", + "dev": true + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-calendar": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/js-calendar/-/js-calendar-1.2.3.tgz", + "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==" + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "dependencies": { + "easy-stack": "^1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jsencrypt": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.2.1.tgz", + "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/launch-editor": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.3.0.tgz", + "integrity": "sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.3.0.tgz", + "integrity": "sha512-GJR64trLdFFwCoL9DMn/d1SZX0OzTDPixu4mcfWTShQ4tIqCHCGvlg9fOEYQXyBlrSMQwylsJfUWncheShfV2w==", + "dev": true, + "dependencies": { + "launch-editor": "^2.3.0" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lerna": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lerna/-/lerna-4.0.0.tgz", + "integrity": "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==", + "dev": true, + "dependencies": { + "@lerna/add": "4.0.0", + "@lerna/bootstrap": "4.0.0", + "@lerna/changed": "4.0.0", + "@lerna/clean": "4.0.0", + "@lerna/cli": "4.0.0", + "@lerna/create": "4.0.0", + "@lerna/diff": "4.0.0", + "@lerna/exec": "4.0.0", + "@lerna/import": "4.0.0", + "@lerna/info": "4.0.0", + "@lerna/init": "4.0.0", + "@lerna/link": "4.0.0", + "@lerna/list": "4.0.0", + "@lerna/publish": "4.0.0", + "@lerna/run": "4.0.0", + "@lerna/version": "4.0.0", + "import-local": "^3.0.2", + "npmlog": "^4.1.2" + }, + "bin": { + "lerna": "cli.js" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/lerna/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lerna/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/less": { + "version": "3.13.1", + "resolved": "https://registry.npmmirror.com/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "tslib": "^1.10.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-6.1.0.tgz", + "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "less": "^3.11.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/less-loader/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/less-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/less-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/less/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmaccess": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz", + "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "dev": true, + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmaccess/node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/libnpmaccess/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/libnpmaccess/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/libnpmpublish": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz", + "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "dev": true, + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmpublish/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/libnpmpublish/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lint-staged": { + "version": "8.2.1", + "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-8.2.1.tgz", + "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", + "dev": true, + "dependencies": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.2.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.27.0" + }, + "bin": { + "lint-staged": "index.js" + } + }, + "node_modules/lint-staged/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/lint-staged/node_modules/del": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/del/-/del-3.0.0.tgz", + "integrity": "sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A==", + "dev": true, + "dependencies": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint-staged/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/lint-staged/node_modules/p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint-staged/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmmirror.com/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "dependencies": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + } + }, + "node_modules/loader-fs-cache/node_modules/find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + }, + "node_modules/math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "node_modules/mavon-editor": { + "version": "2.10.4", + "resolved": "https://registry.npmmirror.com/mavon-editor/-/mavon-editor-2.10.4.tgz", + "integrity": "sha512-CFsBLkgt/KZBDg+SJYe2fyYv4zClY149PiwpH0rDAiiP4ae1XNs0GC8nBsoTeipsHcebDLN1QMkt3bUsnMDjQw==", + "dependencies": { + "xss": "^1.0.6" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", + "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.4.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mitt": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-1.1.2.tgz", + "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-infer-owner/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-infer-owner/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ml-array-max": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/ml-array-max/-/ml-array-max-1.2.4.tgz", + "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-min": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/ml-array-min/-/ml-array-min-1.2.3.tgz", + "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-rescale": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", + "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3" + } + }, + "node_modules/ml-matrix": { + "version": "6.10.0", + "resolved": "https://registry.npmmirror.com/ml-matrix/-/ml-matrix-6.10.0.tgz", + "integrity": "sha512-wU+jacx1dcP1QArV1/Kv49Ah6y2fq+BiQl2BnNVBC+hoCW7KgBZ4YZrowPopeoY164TB6Kes5wMeDjY8ODHYDg==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-array-rescale": "^1.3.7" + } + }, + "node_modules/mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dev": true, + "dependencies": { + "commander": "*" + }, + "bin": { + "random": "bin/random" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/monaco-editor": { + "version": "0.19.3", + "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.19.3.tgz", + "integrity": "sha512-2n1vJBVQF2Hhi7+r1mMeYsmlf18hjVb6E0v5SoMZyb4aeOmYPKun+CE3gYpiNA1KEvtSdaDHFBqH9d7Wd9vREg==" + }, + "node_modules/monaco-editor-webpack-plugin": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.8.2.tgz", + "integrity": "sha512-g9G7A/lxQtpPsYaZFBqm73dwVkOziGUXExIR6iW7ksZUaiMkpvdTiE9O8edgdJGo+XtCmjycmIKB1Lt8VKbSTQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.2.3" + }, + "peerDependencies": { + "monaco-editor": "^0.19.1", + "webpack": "^4.5.0" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/multimatch/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "devOptional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmmirror.com/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "node_modules/node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/node-sass/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/node-sass/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-sass/node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-sass/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-sass/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/node-sass/node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "dev": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/node-sass/node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "dependencies": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "node_modules/npm-lifecycle/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "dependencies": { + "which": "^1.2.10" + }, + "bin": { + "npm-path": "bin/npm-path" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-registry-fetch/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm-registry-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", + "dev": true, + "dependencies": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + }, + "bin": { + "npm-which": "bin/npm-which.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "dependencies": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "dependencies": { + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmmirror.com/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pacote/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/pacote/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pacote/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "dependencies": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-glob/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-glob/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + } + }, + "node_modules/parse-path/node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-path/node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + } + }, + "node_modules/parse-url/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/patch-package/-/patch-package-6.2.2.tgz", + "integrity": "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^1.2.1", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/patch-package/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "devOptional": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/polyline-miter-util": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/polyline-miter-util/-/polyline-miter-util-1.0.1.tgz", + "integrity": "sha512-/3u91zz6mBerBZo6qnOJOTjv7EfPhKtsV028jMyj86YpzLRNmCCFfrX7IO9tCEQ2W4x45yc+vKOezjf7u2Nd6Q==", + "dependencies": { + "gl-vec2": "^1.0.0" + } + }, + "node_modules/polyline-normals": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/polyline-normals/-/polyline-normals-2.0.2.tgz", + "integrity": "sha512-dpHrAi61ymhsB4N0XlNb3YpkKJeTFnXBXDWpeH8Ucstq0TUZrCN3YK4Jlgk8ofMWN25lhGC4wnxLMv+TUK8rig==", + "dependencies": { + "polyline-miter-util": "^1.0.1" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1" + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "dependencies": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-prefix-selector": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.15.0.tgz", + "integrity": "sha512-9taaTPs6I4906QC03zBBt0LfTWAhrqEWlKSj0jRlxrg1yV+O91h0wcquu6krcA5L6aEv3QnCeG8B1vZ5WT4ecQ==", + "dev": true, + "peerDependencies": { + "postcss": ">4 <9" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + } + }, + "node_modules/posthtml-parser/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/posthtml-parser/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/posthtml-parser/node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/posthtml-parser/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml-parser/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "1.0.5" + } + }, + "node_modules/posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "dependencies": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/probe.gl": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/probe.gl/-/probe.gl-3.5.0.tgz", + "integrity": "sha512-KWj8u0PNytr/rVwcQFcN7O8SK7n/ITOsUZ91l4fSX95oHhKvVCI7eadrzFUzFRlXkFfBWpMWZXFHITsHHHUctw==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "@probe.gl/env": "3.5.0", + "@probe.gl/log": "3.5.0", + "@probe.gl/stats": "3.5.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "dev": true, + "dependencies": { + "read": "1" + } + }, + "node_modules/property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", + "dev": true + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.9.4", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/randomatic/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true + }, + "node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "deprecated": "The functionality that this package provided is now in @npmcli/arborist", + "dev": true, + "dependencies": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/regl": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/regl/-/regl-1.7.0.tgz", + "integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==" + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "devOptional": true + }, + "node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/renderkid/node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/renderkid/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/renderkid/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/renderkid/node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "dev": true, + "optional": true, + "dependencies": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true, + "bin": { + "run-node": "run-node" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", + "dev": true, + "optional": true + }, + "node_modules/rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", + "dev": true, + "optional": true, + "dependencies": { + "rx-lite": "*" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "bin": { + "sassgraph": "bin/sassgraph" + } + }, + "node_modules/sass-graph/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/sass-graph/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sass-graph/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/sass-graph/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/sass-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "dependencies": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + } + }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-git": { + "version": "1.132.0", + "resolved": "https://registry.npmmirror.com/simple-git/-/simple-git-1.132.0.tgz", + "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==", + "dev": true, + "dependencies": { + "debug": "^4.0.1" + } + }, + "node_modules/simple-git/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/simple-git/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "optional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.0.tgz", + "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "eventsource": "^1.1.0", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/speed-measure-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-Re0wX5CtM6gW7bZA64ONOfEPEhwbiSF/vz6e2GvadjuaPrQcHTQdRGsD8+BE7iUOysXH8tIenkPCQBEcspXsNg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": "^1 || ^2 || ^3 || ^4 || ^5" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/speed-measure-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sql-formatter": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/sql-formatter/-/sql-formatter-2.3.3.tgz", + "integrity": "sha512-m6pqVXwsm9GkCHC/+gdPvNowI7PNoVTT6OZMWKwXJoP2MvfntfhcfyliIf4/QX6t+DirSJ6XDSiSS70YvZ87Lw==", + "dependencies": { + "lodash": "^4.16.0" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "dev": true + }, + "node_modules/staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", + "dev": true, + "bin": { + "sgf": "bin/cli.js" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.padstart": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz", + "integrity": "sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stringify-object/node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "dependencies": { + "minimist": "^1.1.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + } + }, + "node_modules/svg-baker-runtime": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", + "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", + "dev": true, + "dependencies": { + "deepmerge": "1.3.2", + "mitt": "1.1.2", + "svg-baker": "^1.7.0" + } + }, + "node_modules/svg-baker-runtime/node_modules/deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg-baker/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/svg-baker/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/svg-baker/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg-sprite-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-5.0.0.tgz", + "integrity": "sha512-/hedkRC2IS0E+kFIb+OUCfqQlbVx72/WEEeRGw2uPsNgOOgJEONXzjfSm+CJ3pB9gOHytlBmPMS8ijMCp5s2Eg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "deepmerge": "1.3.2", + "domready": "1.0.8", + "escape-string-regexp": "1.0.5", + "html-webpack-plugin": "^3.2.0", + "loader-utils": "^1.1.0", + "svg-baker": "^1.5.0", + "svg-baker-runtime": "^1.4.7", + "url-slug": "2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/svg-sprite-loader/node_modules/deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.0.tgz", + "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.33", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmmirror.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", + "dev": true + }, + "node_modules/table": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "optional": true, + "dependencies": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "optional": true, + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/table/node_modules/ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==", + "dev": true, + "optional": true, + "peerDependencies": { + "ajv": "^5.0.0" + } + }, + "node_modules/table/node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true, + "optional": true + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true, + "optional": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmmirror.com/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/temp-write": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/temp-write/-/temp-write-4.0.0.tgz", + "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp-write/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp-write/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp-write/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "dependencies": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", + "dev": true + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "dependencies": { + "glob": "^7.1.2" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/umask": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/umask/-/umask-1.1.0.tgz", + "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unidecode": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/unidecode/-/unidecode-0.1.8.tgz", + "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==", + "dev": true, + "engines": { + "node": ">= 0.4.12" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "devOptional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/url-slug/-/url-slug-2.0.0.tgz", + "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==", + "dev": true, + "dependencies": { + "unidecode": "0.1.8" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v-click-outside-x": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/v-click-outside-x/-/v-click-outside-x-4.1.3.tgz", + "integrity": "sha512-qK4wwuDHK406fGBSJ4DbioPb6LQpRkWqk8i1TZhnVwObU+W4Ra6H7Cn+VLy/dTNTH/sgZJzk9YMYnB/s5RJ0Hg==", + "engines": { + "node": ">=8.11.4", + "npm": ">=6.10.1" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/vue": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" + }, + "node_modules/vue-cli-plugin-mockjs": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/vue-cli-plugin-mockjs/-/vue-cli-plugin-mockjs-0.1.3.tgz", + "integrity": "sha512-BK7EaGhrLYYMOAPuhLxZjpBGJOLtpCFfVT2FDhDqBZIF+DimmAG/06P+gFwMDSQb8j8ROirLLBgLDjqIXJj56A==", + "dev": true, + "dependencies": { + "express": "^4.16.4", + "mockjs": "^1.0.1-beta3" + } + }, + "node_modules/vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=3.9.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-i18n": { + "version": "8.22.1", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.22.1.tgz", + "integrity": "sha512-JNgiEJ5a8YPfk5y2lKyfOAGLmkpAVfhaUi+T4wGpSppRYZ3XSyawSDDketY5KV2CsAiBLAGEIO6jO+0l2hQubg==" + }, + "node_modules/vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "3.4.8", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.4.8.tgz", + "integrity": "sha512-3BsR84AqarcmweXjItxw3jwQsiYNssYg090yi4rlzTnCJxmHtkyCvhNz9Z7qRSOkmiV485KkUCReTp5AjNY4wg==" + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "dependencies": { + "sortablejs": "1.10.2" + } + }, + "node_modules/vuescroll": { + "version": "4.16.1", + "resolved": "https://registry.npmmirror.com/vuescroll/-/vuescroll-4.16.1.tgz", + "integrity": "sha512-7fRsG2Yw5Z07LUz/IIu9barpmYiN9q+ZTC+CrVamvCbmsxyhz8mU1OuYFbfORysaUskioNMxTGDo+HOzeDfSyQ==", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/watch-size": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/watch-size/-/watch-size-2.0.0.tgz", + "integrity": "sha512-M92R89dNoTPWyCD+HuUEDdhaDnh9jxPGOwlDc0u51jAgmjUvzqaEMynXSr3BaWs+QdHYk4KzibPy1TFtjLmOZQ==" + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 6.14.4" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-4.12.1.tgz", + "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + } + }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "dev": true, + "dependencies": { + "ansi-html-community": "0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz", + "integrity": "sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==", + "dev": true, + "dependencies": { + "debug": "^3.0.0" + } + }, + "node_modules/webpack-virtual-modules/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/webpack-virtual-modules/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/worker-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz", + "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", + "dependencies": { + "loader-utils": "^1.0.0", + "schema-utils": "^0.4.0" + }, + "engines": { + "node": ">= 6.9.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0" + } + }, + "node_modules/worker-loader/node_modules/schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "dev": true, + "optional": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "dependencies": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/write-json-file/node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/write-json-file/node_modules/sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xss": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/xss/-/xss-1.0.11.tgz", + "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/yup": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/yup/-/yup-0.27.0.tgz", + "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + } + }, + "node_modules/yup/node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + }, + "node_modules/zip-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@ant-design/colors": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-4.0.5.tgz", + "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@antv/algorithm": { + "version": "0.1.24", + "resolved": "https://registry.npmmirror.com/@antv/algorithm/-/algorithm-0.1.24.tgz", + "integrity": "sha512-zAv/YNDKYrHHKJKCn6RBKoNo9/298/qY6J5SSGglIIUfwJXN6wyRyTmNPfmkE/9t6/7XK9PYvK/6esQnwFawwQ==", + "requires": { + "@antv/util": "^2.0.13", + "tslib": "^2.0.0" + } + }, + "@antv/dom-util": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@antv/dom-util/-/dom-util-2.0.4.tgz", + "integrity": "sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==", + "requires": { + "tslib": "^2.0.3" + } + }, + "@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==" + }, + "@antv/g-base": { + "version": "0.5.11", + "resolved": "https://registry.npmmirror.com/@antv/g-base/-/g-base-0.5.11.tgz", + "integrity": "sha512-10Hkq7XksVCqxZZrPkd6HTU9tb/+2meCVEMy/edhS4I/sokhcgC9m3fQP5bE8rA3EVKwELE7MJHZ98BEpVFqvQ==", + "requires": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.13", + "@types/d3-timer": "^2.0.0", + "d3-ease": "^1.0.5", + "d3-interpolate": "^1.3.2", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + } + } + }, + "@antv/g-canvas": { + "version": "0.5.12", + "resolved": "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-0.5.12.tgz", + "integrity": "sha512-iJ/muwwqCCNONVlPIzv/7OL5iLguaKRj2BxNMytUO3TWwamM+kHkiyYEOkS0dPn9h/hBsHYlLUluSVz2Fp6/bw==", + "requires": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/g-math": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/@antv/g-math/-/g-math-0.1.7.tgz", + "integrity": "sha512-xGyXaloD1ynfp7gS4VuV+MjSptZIwHvLHr8ekXJSFAeWPYLu84yOW2wOZHDdp1bzDAIuRv6xDBW58YGHrWsFcA==", + "requires": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "@antv/g-svg": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-svg/-/g-svg-0.5.6.tgz", + "integrity": "sha512-Xve1EUGk4HMbl2nq4ozR4QLh6GyoZ8Xw/+9kHYI4B5P2lIUQU95MuRsaLFfW5NNpZDx85ZeH97tqEmC9L96E7A==", + "requires": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/util": "~2.0.0", + "detect-browser": "^5.0.0", + "tslib": "^2.0.3" + } + }, + "@antv/g-webgpu": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu/-/g-webgpu-0.5.5.tgz", + "integrity": "sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==", + "requires": { + "@antv/g-webgpu-core": "^0.5.5", + "@antv/g-webgpu-engine": "^0.5.5", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "gl-vec2": "^1.3.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "polyline-miter-util": "^1.0.1", + "polyline-normals": "^2.0.2", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "@antv/g-webgpu-core": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu-core/-/g-webgpu-core-0.5.6.tgz", + "integrity": "sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==", + "requires": { + "eventemitter3": "^4.0.0", + "gl-matrix": "^3.1.0", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "@antv/g-webgpu-engine": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/@antv/g-webgpu-engine/-/g-webgpu-engine-0.5.6.tgz", + "integrity": "sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==", + "requires": { + "@antv/g-webgpu-core": "^0.5.6", + "@webgpu/glslang": "^0.0.15", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13", + "regl": "^1.3.11" + } + }, + "@antv/g6": { + "version": "4.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6/-/g6-4.6.15.tgz", + "integrity": "sha512-sbtVPZxGHBNnkLynd4GAQAheDDZ/xUdPAJxxLO7LiMmaZcyNlk0ApV5d8G8IdiBFvJ6+mhaF+kot3LMyvsEx+g==", + "requires": { + "@antv/g6-pc": "0.6.15" + } + }, + "@antv/g6-core": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-core/-/g6-core-0.6.15.tgz", + "integrity": "sha512-klE4bLcY9dcByl9J97tN2IBEJcXFroyEJRG55l99IXd7ujh+DGnPEmKMX1BdnCiDqLZ9GJybRG5g6DqX6e7BbQ==", + "requires": { + "@antv/algorithm": "^0.1.8", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-math": "^0.1.1", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "ml-matrix": "^6.5.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/g6-element": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-element/-/g6-element-0.6.15.tgz", + "integrity": "sha512-8bUSCRMQVK9bh64V+jZRKpLapPVlrLdzC429uodg5wk9l3hugcSdanX6LAuLmy0p5Y4lXSyF2UsmWdx8t1qfcg==", + "requires": { + "@antv/g-base": "^0.5.1", + "@antv/g6-core": "0.6.15", + "@antv/util": "~2.0.5" + } + }, + "@antv/g6-pc": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-pc/-/g6-pc-0.6.15.tgz", + "integrity": "sha512-BqfFD5XiLfRhBt0QygdynUidz4T6azg0GnAzYsEkuKkye7qvaLL46xtfp9+Lqw/aUkBsjXUcEeJjoIPrx0Ehig==", + "requires": { + "@ant-design/colors": "^4.0.5", + "@antv/algorithm": "^0.1.8", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.5.1", + "@antv/g6-core": "0.6.15", + "@antv/g6-element": "0.6.15", + "@antv/g6-plugin": "0.6.15", + "@antv/hierarchy": "^0.6.7", + "@antv/layout": "^0.2.5", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "color": "^3.1.3", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "insert-css": "^2.0.0", + "ml-matrix": "^6.5.0" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/g6-plugin": { + "version": "0.6.15", + "resolved": "https://registry.npmmirror.com/@antv/g6-plugin/-/g6-plugin-0.6.15.tgz", + "integrity": "sha512-LaXYEzaW3qkcAdwRrrhRItbsRKmtN6Orb0UCTRYSw0W8UOO4p4w5Tk05I7TME/VzPfMn9bXB+rD4aZofFzBYoA==", + "requires": { + "@antv/dom-util": "^2.0.2", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-svg": "^0.5.2", + "@antv/g6-core": "0.6.15", + "@antv/g6-element": "0.6.15", + "@antv/matrix-util": "^3.1.0-beta.3", + "@antv/scale": "^0.3.4", + "@antv/util": "^2.0.9", + "insert-css": "^2.0.0" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/graphlib": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@antv/graphlib/-/graphlib-1.2.0.tgz", + "integrity": "sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==" + }, + "@antv/hierarchy": { + "version": "0.6.8", + "resolved": "https://registry.npmmirror.com/@antv/hierarchy/-/hierarchy-0.6.8.tgz", + "integrity": "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A==", + "requires": { + "@antv/util": "^2.0.7" + } + }, + "@antv/layout": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/@antv/layout/-/layout-0.2.5.tgz", + "integrity": "sha512-YezISSc5wp88QLvytS2mm/3sFvJYTafIWEvjvp4DIIfIkt8fzZZSJHXJVky3VIqGwbkmD278lMWQQmQ8W1EWEA==", + "requires": { + "@antv/g-webgpu": "0.5.5", + "@antv/graphlib": "^1.0.0", + "d3-force": "^2.0.1", + "dagre-compound": "^0.0.11", + "ml-matrix": "^6.5.0" + } + }, + "@antv/matrix-util": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@antv/matrix-util/-/matrix-util-3.0.4.tgz", + "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^2.0.3" + } + }, + "@antv/path-util": { + "version": "2.0.15", + "resolved": "https://registry.npmmirror.com/@antv/path-util/-/path-util-2.0.15.tgz", + "integrity": "sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==", + "requires": { + "@antv/matrix-util": "^3.0.4", + "@antv/util": "^2.0.9", + "tslib": "^2.0.3" + } + }, + "@antv/scale": { + "version": "0.3.18", + "resolved": "https://registry.npmmirror.com/@antv/scale/-/scale-0.3.18.tgz", + "integrity": "sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==", + "requires": { + "@antv/util": "~2.0.3", + "fecha": "~4.2.0", + "tslib": "^2.0.0" + } + }, + "@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "requires": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", + "integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.9", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "requires": { + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.3.4", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.3.4.tgz", + "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.3.4", + "@babel/plugin-transform-classes": "^7.3.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.3.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.3.4", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs2": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.17.9.tgz", + "integrity": "sha512-+QThIsnjVY12uURTvmnW33risFZ7ulq6OWw0VJL08UwiYiWVp9PM63s+W1L2ppajYyKAYKb7afcGYSHzA0k04Q==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", + "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@kazupon/vue-i18n-loader": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@kazupon/vue-i18n-loader/-/vue-i18n-loader-0.4.1.tgz", + "integrity": "sha512-hVznmhnyoUKozGY7pwq/UtPL76UDzb+aiN2YksZZIzCY/MkEqih0MSyEmTGw7+HVWzJRPAlDyoRNR4tWKmkCRw==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "json5": "^2.1.0" + }, + "dependencies": { + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + } + } + }, + "@lerna/add": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/add/-/add-4.0.0.tgz", + "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", + "dev": true, + "requires": { + "@lerna/bootstrap": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "npm-package-arg": "^8.1.0", + "p-map": "^4.0.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/bootstrap": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", + "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/has-npm-version": "4.0.0", + "@lerna/npm-install": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "read-package-tree": "^5.3.1", + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/changed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/changed/-/changed-4.0.0.tgz", + "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", + "dev": true, + "requires": { + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + } + }, + "@lerna/check-working-tree": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", + "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", + "dev": true, + "requires": { + "@lerna/collect-uncommitted": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/validation-error": "4.0.0" + } + }, + "@lerna/child-process": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/child-process/-/child-process-4.0.0.tgz", + "integrity": "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@lerna/clean": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/clean/-/clean-4.0.0.tgz", + "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "@lerna/cli": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/cli/-/cli-4.0.0.tgz", + "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", + "dev": true, + "requires": { + "@lerna/global-options": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^16.2.0" + } + }, + "@lerna/collect-uncommitted": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", + "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "chalk": "^4.1.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@lerna/collect-updates": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", + "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "@lerna/command": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/command/-/command-4.0.0.tgz", + "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/project": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/write-log-file": "4.0.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@lerna/conventional-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", + "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", + "dev": true, + "requires": { + "@lerna/validation-error": "4.0.0", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.2", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/create": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/create/-/create-4.0.0.tgz", + "integrity": "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^2.0.2", + "npm-package-arg": "^8.1.0", + "p-reduce": "^2.1.0", + "pacote": "^11.2.6", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, + "@lerna/create-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", + "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", + "dev": true, + "requires": { + "cmd-shim": "^4.1.0", + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/describe-ref": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", + "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/diff/-/diff-4.0.0.tgz", + "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/exec": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/exec/-/exec-4.0.0.tgz", + "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "@lerna/filter-options": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/filter-options/-/filter-options-4.0.0.tgz", + "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", + "dev": true, + "requires": { + "@lerna/collect-updates": "4.0.0", + "@lerna/filter-packages": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/filter-packages": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", + "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", + "dev": true, + "requires": { + "@lerna/validation-error": "4.0.0", + "multimatch": "^5.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/get-npm-exec-opts": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", + "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/get-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/get-packed/-/get-packed-4.0.0.tgz", + "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/github-client": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/github-client/-/github-client-4.0.0.tgz", + "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^18.1.0", + "git-url-parse": "^11.4.4", + "npmlog": "^4.1.2" + } + }, + "@lerna/gitlab-client": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", + "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "npmlog": "^4.1.2", + "whatwg-url": "^8.4.0" + } + }, + "@lerna/global-options": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/global-options/-/global-options-4.0.0.tgz", + "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", + "dev": true + }, + "@lerna/has-npm-version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", + "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/import": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/import/-/import-4.0.0.tgz", + "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/info": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/info/-/info-4.0.0.tgz", + "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/output": "4.0.0", + "envinfo": "^7.7.4" + } + }, + "@lerna/init": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/init/-/init-4.0.0.tgz", + "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/link": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/link/-/link-4.0.0.tgz", + "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "p-map": "^4.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "@lerna/list": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/list/-/list-4.0.0.tgz", + "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + } + }, + "@lerna/listable": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/listable/-/listable-4.0.0.tgz", + "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", + "dev": true, + "requires": { + "@lerna/query-graph": "4.0.0", + "chalk": "^4.1.0", + "columnify": "^1.5.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@lerna/log-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/log-packed/-/log-packed-4.0.0.tgz", + "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", + "dev": true, + "requires": { + "byte-size": "^7.0.0", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-conf": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", + "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "@lerna/npm-dist-tag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", + "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", + "dev": true, + "requires": { + "@lerna/otplease": "4.0.0", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/npm-install": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-install/-/npm-install-4.0.0.tgz", + "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "fs-extra": "^9.1.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/npm-publish": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", + "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", + "dev": true, + "requires": { + "@lerna/otplease": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmpublish": "^4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "read-package-json": "^3.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + }, + "read-package-json": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-3.0.1.tgz", + "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/npm-run-script": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", + "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/otplease": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/otplease/-/otplease-4.0.0.tgz", + "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", + "dev": true, + "requires": { + "@lerna/prompt": "4.0.0" + } + }, + "@lerna/output": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/output/-/output-4.0.0.tgz", + "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/pack-directory": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", + "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", + "dev": true, + "requires": { + "@lerna/get-packed": "4.0.0", + "@lerna/package": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "npm-packlist": "^2.1.4", + "npmlog": "^4.1.2", + "tar": "^6.1.0", + "temp-write": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/package": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/package/-/package-4.0.0.tgz", + "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", + "dev": true, + "requires": { + "load-json-file": "^6.2.0", + "npm-package-arg": "^8.1.0", + "write-pkg": "^4.0.0" + } + }, + "@lerna/package-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/package-graph/-/package-graph-4.0.0.tgz", + "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/prerelease-id-from-version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", + "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", + "dev": true, + "requires": { + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/profiler": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/profiler/-/profiler-4.0.0.tgz", + "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "upath": "^2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + } + } + }, + "@lerna/project": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/project/-/project-4.0.0.tgz", + "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", + "dev": true, + "requires": { + "@lerna/package": "4.0.0", + "@lerna/validation-error": "4.0.0", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@lerna/prompt": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/prompt/-/prompt-4.0.0.tgz", + "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", + "dev": true, + "requires": { + "inquirer": "^7.3.3", + "npmlog": "^4.1.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "@lerna/publish": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/publish/-/publish-4.0.0.tgz", + "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/log-packed": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/npm-dist-tag": "4.0.0", + "@lerna/npm-publish": "4.0.0", + "@lerna/otplease": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/pack-directory": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/version": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmaccess": "^4.0.1", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/pulse-till-done": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", + "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/query-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/query-graph/-/query-graph-4.0.0.tgz", + "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", + "dev": true, + "requires": { + "@lerna/package-graph": "4.0.0" + } + }, + "@lerna/resolve-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", + "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/rimraf-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", + "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@lerna/run": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run/-/run-4.0.0.tgz", + "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-run-script": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/timer": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "@lerna/run-lifecycle": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", + "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", + "dev": true, + "requires": { + "@lerna/npm-conf": "4.0.0", + "npm-lifecycle": "^3.1.5", + "npmlog": "^4.1.2" + } + }, + "@lerna/run-topologically": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", + "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", + "dev": true, + "requires": { + "@lerna/query-graph": "4.0.0", + "p-queue": "^6.6.2" + } + }, + "@lerna/symlink-binary": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", + "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", + "dev": true, + "requires": { + "@lerna/create-symlink": "4.0.0", + "@lerna/package": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/symlink-dependencies": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", + "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", + "dev": true, + "requires": { + "@lerna/create-symlink": "4.0.0", + "@lerna/resolve-symlink": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@lerna/timer": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/timer/-/timer-4.0.0.tgz", + "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", + "dev": true + }, + "@lerna/validation-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/validation-error/-/validation-error-4.0.0.tgz", + "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/version": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/version/-/version-4.0.0.tgz", + "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/conventional-commits": "4.0.0", + "@lerna/github-client": "4.0.0", + "@lerna/gitlab-client": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "temp-write": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@lerna/write-log-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", + "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/ci-detect": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", + "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", + "dev": true + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "resolved": "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmmirror.com/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmmirror.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmmirror.com/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmmirror.com/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "@probe.gl/env": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/env/-/env-3.5.0.tgz", + "integrity": "sha512-YdlpZZshhyYxvWDBmZ5RIW2pTR14Pw4p9czMlt/v7F6HbFzWfAdmH7q6xVwFRYxUpQLwhWensWyv4aFysiWl4g==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "@probe.gl/log": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/log/-/log-3.5.0.tgz", + "integrity": "sha512-nW/qz2X1xY08WU/TsmJP6/6IPNcaY5fS/vLjpC4ahJuE2Mezga4hGM/R2X5JWE/nkPc+BsC5GnAnD13rwAxS7g==", + "requires": { + "@babel/runtime": "^7.0.0", + "@probe.gl/env": "3.5.0" + } + }, + "@probe.gl/stats": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@probe.gl/stats/-/stats-3.5.0.tgz", + "integrity": "sha512-IH2M+F3c8HR1DTroBARePUFG7wIewumtKA0UFqx51Z7S4hKrD60wFbpMmg0AcF4FvHAXMBoC+kYi1UKW9XbAOw==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "@riophae/vue-treeselect": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz", + "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==", + "requires": { + "@babel/runtime": "^7.3.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "easings-css": "^1.0.0", + "fuzzysearch": "^1.0.3", + "is-promise": "^2.1.0", + "lodash": "^4.0.0", + "material-colors": "^1.2.6", + "watch-size": "^2.0.0" + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/d3-timer": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-2.0.1.tgz", + "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==" + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.27", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.27.tgz", + "integrity": "sha512-4/Ke7bbWOasuT3kceBZFGakP1dYN2XFd8v2l9bqF2LNWrmeU07JLpp56aEeG6+Q3olqO5TvXpW0yaiYnZJ5CXg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-3.12.1.tgz", + "integrity": "sha512-Zjy5jQaikV1Pz+ri0YgXFS7q4/5wCxB5tRkDOEIt5+4105u0Feb/pvH20nVL6nx9GyXrECFfcm7Yxr/z++OaPQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.1.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.4.0", + "@babel/preset-env": "^7.0.0 < 7.4.0", + "@babel/runtime": "^7.0.0", + "@babel/runtime-corejs2": "^7.2.0", + "@vue/babel-preset-jsx": "^1.0.0", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "3.2.0", + "core-js": "^2.6.5" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-3.12.1.tgz", + "integrity": "sha512-Bym92EN+lj+cNRN2ozbYyH+V8DMXWGbCDUk+hiJ4EYDBZfBkZKvalk1/mOBFwyxiopnnbOEBAAhL/UuMQ1xARg==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.12.1.tgz", + "integrity": "sha512-Zetvz8PikLCGomeKOKu8pC9YQ7cfxs7pGpvEOzaxGdhMnebhjAYR6i6dOB57A6N5lhxQksXCtYTv26QgfiIpdg==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@vue/babel-preset-app": "^3.12.1", + "@vue/cli-shared-utils": "^3.12.1", + "babel-loader": "^8.0.5", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.12.1.tgz", + "integrity": "sha512-tVTZlEZsy3sQbO4LLWFK11yzlWwqVAqaM+IY+BeWHITBzEJKh2KmouG+x6x/reXiU3qROsMJ4Ej3Hs8buSMWyQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^3.12.1", + "babel-eslint": "^10.0.1", + "eslint": "^4.19.1", + "eslint-loader": "^2.1.2", + "eslint-plugin-vue": "^4.7.1", + "globby": "^9.2.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "optional": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-plugin-vue": { + "version": "4.7.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", + "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "dev": true, + "optional": true, + "requires": { + "vue-eslint-parser": "^2.0.3" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true, + "optional": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "optional": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "optional": true + } + } + }, + "@vue/cli-service": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-3.12.1.tgz", + "integrity": "sha512-PDxNrTGnSKzeV1ruFlsRIAO8JcPizwT0EJXq9GeyooU+p+sOkv7aKkCBJQVYNjZapD1NOGWx6CvAAC/wAW+gew==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@vue/cli-overlay": "^3.12.1", + "@vue/cli-shared-utils": "^3.12.1", + "@vue/component-compiler-utils": "^3.0.0", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^6.1.1", + "acorn-walk": "^6.1.1", + "address": "^1.0.3", + "autoprefixer": "^9.5.1", + "browserslist": "^4.5.4", + "cache-loader": "^2.0.1", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-highlight": "^2.1.0", + "clipboardy": "^2.0.0", + "cliui": "^5.0.0", + "copy-webpack-plugin": "^4.6.0", + "css-loader": "^1.0.1", + "cssnano": "^4.1.10", + "current-script-polyfill": "^1.0.0", + "debug": "^4.1.1", + "default-gateway": "^5.0.2", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "escape-string-regexp": "^1.0.5", + "file-loader": "^3.0.1", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^1.0.2", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.8.0", + "minimist": "^1.2.0", + "ora": "^3.4.0", + "portfinder": "^1.0.20", + "postcss-loader": "^3.0.0", + "read-pkg": "^5.0.0", + "semver": "^6.0.0", + "slash": "^2.0.0", + "source-map-url": "^0.4.0", + "ssri": "^6.0.1", + "string.prototype.padend": "^3.0.0", + "terser-webpack-plugin": "^1.2.3", + "thread-loader": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.7.0", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.3.0", + "webpack-chain": "^4.11.0", + "webpack-dev-server": "^3.4.1", + "webpack-merge": "^4.2.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/cli-shared-utils": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz", + "integrity": "sha512-jFblzRFjutGwu5utOKdVlPlsbA1lBUNNQlAThzNqej+JtTKJjnvjlhjKX0Gq0oOny5FjKWhoyfQ74p9h1qE6JQ==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.0.0", + "string.prototype.padstart": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "@vue/eslint-config-standard": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-standard/-/eslint-config-standard-4.0.0.tgz", + "integrity": "sha512-bQghq1cw1BuMRHNhr3tRpAJx1tpGy0QtajQX873kLtA9YVuOIoXR7nAWnTN09bBHnSUh2N288vMsqPi2fI4Hzg==", + "dev": true, + "requires": { + "eslint-config-standard": "^12.0.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-node": "^8.0.0", + "eslint-plugin-promise": "^4.0.1", + "eslint-plugin-standard": "^4.0.0" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true, + "requires": {} + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webgpu/glslang": { + "version": "0.0.15", + "resolved": "https://registry.npmmirror.com/@webgpu/glslang/-/glslang-0.0.15.tgz", + "integrity": "sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==" + }, + "@webgpu/types": { + "version": "0.0.31", + "resolved": "https://registry.npmmirror.com/@webgpu/types/-/types-0.0.31.tgz", + "integrity": "sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ==" + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", + "dev": true, + "optional": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true, + "optional": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + } + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "devOptional": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "async-validator": { + "version": "1.12.2", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.12.2.tgz", + "integrity": "sha512-57EETfCPFiB7M4QscvQzWSGNsmtkjjzZv318SK1CBlstk+hycV72ocjriMOOM48HjvmoAoJGpJNjC7Z76RlnZA==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "dev": true, + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "butterfly-dag": { + "version": "4.1.23", + "resolved": "https://registry.npmmirror.com/butterfly-dag/-/butterfly-dag-4.1.23.tgz", + "integrity": "sha512-8B7HI5sexTQx9Wexy7pOSVwyMxzKmQxnmz6S7gWzzRuP6O/8Luny4edzkUjnnREE5PBplxK+c6PSJKrny901mQ==", + "requires": { + "@antv/hierarchy": "~0.6.4", + "@antv/matrix-util": "^3.0.4", + "d3-force": "~2.1.1", + "dagre": "~0.8.5", + "dom-to-image": "~2.6.0", + "eventemitter3": "4.0.7", + "ml-matrix": "^6.5.0" + } + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "dev": true + }, + "byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-2.0.1.tgz", + "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.0", + "normalize-path": "^3.0.0", + "schema-utils": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "dev": true, + "optional": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "dev": true, + "optional": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "dev": true, + "optional": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "requires": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true, + "optional": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true, + "optional": true + }, + "clipboard": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "optional": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-js-compat": { + "version": "3.22.2", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.22.2.tgz", + "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", + "dev": true, + "requires": { + "browserslist": "^4.20.2", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA==", + "dev": true, + "requires": { + "babel-runtime": "^6.9.2", + "chokidar": "^1.6.0", + "duplexer": "^0.1.1", + "glob": "^7.0.5", + "glob2base": "^0.0.12", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "resolve": "^1.1.7", + "safe-buffer": "^5.0.1", + "shell-quote": "^1.6.1", + "subarg": "^1.0.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmmirror.com/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + } + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "csp-html-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/csp-html-webpack-plugin/-/csp-html-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-1YqQefNG0SrZisysThlly2bgs4Ab/W91xOM17S8wd+6vTo3E0OdL+y4IAR0MKpthRluNGzFB3QhPqdOhkXAExg==", + "dev": true, + "requires": { + "cheerio": "^1.0.0-rc.3", + "lodash": "^4.17.15", + "memory-fs": "^0.5.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.33", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz", + "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.5.3" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + } + } + }, + "csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "current-script-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", + "integrity": "sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "d3": { + "version": "3.5.17", + "resolved": "https://registry.npmmirror.com/d3/-/d3-3.5.17.tgz", + "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg==" + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "requires": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + } + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dagre-compound": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/dagre-compound/-/dagre-compound-0.0.11.tgz", + "integrity": "sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==", + "requires": {} + }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dexie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/dexie/-/dexie-2.0.4.tgz", + "integrity": "sha512-aQ/s1U2wHxwBKRrt2Z/mwFNHMQWhESerFsMYzE+5P5OsIe5o1kgpFMWkzKTtkvkyyEni6mWr/T4HUJuY9xIHLA==" + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + } + } + }, + "dom-to-image": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/dom-to-image/-/dom-to-image-2.6.0.tgz", + "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + } + } + }, + "domready": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz", + "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dt-sql-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/dt-sql-parser/-/dt-sql-parser-1.2.1.tgz", + "integrity": "sha512-bp6Rtm8N3m2Z3tavtKGo8J5ffaPQdPodYV2xGi9f6IsWbHzOkpNBxHlORcWtnSLtA/JvZcvImQxgbkdaGiv5cw==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easings-css": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/easings-css/-/easings-css-1.0.0.tgz", + "integrity": "sha512-7Uq7NdazNfVtr0RNmPAys8it0zKCuaqxJStYKEl72D3j4gbvXhhaM7iWNbqhA4C94ygCye6VuyhzBRQC4szeBg==" + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "requires": { + "zrender": "4.3.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.121", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.121.tgz", + "integrity": "sha512-N7OXhMr1p2oa9EkOhmHpmOm43DHzs55dep2FF6M7y6px5QJBheqEE3nwwZ+xJowlff+AEmMOdg3ARYGB+0kzbA==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true + }, + "element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "requires": { + "batch-processor": "1.0.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.19.5", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^2.0.1" + }, + "dependencies": { + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + } + }, + "eslint-plugin-node": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz", + "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==", + "dev": true, + "requires": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^5.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "dependencies": { + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", + "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", + "dev": true, + "requires": {} + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmmirror.com/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "optional": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "express": { + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.0.tgz", + "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "optional": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "dev": true, + "optional": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "filemanager-webpack-plugin": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/filemanager-webpack-plugin/-/filemanager-webpack-plugin-2.0.5.tgz", + "integrity": "sha512-Yj5XIdKI2AN2r66uZc4MZ/n18SMqe2KKlkAqHHMW1OwveDs2Vc5129CpbFcI73rq/rjqso+2HsxieS7u5sx6XA==", + "dev": true, + "requires": { + "archiver": "^3.0.0", + "cpx": "^1.5.0", + "fs-extra": "^7.0.0", + "make-dir": "^1.1.0", + "mv": "^2.1.1", + "rimraf": "^2.6.2" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "find-yarn-workspace-root": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz", + "integrity": "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==", + "dev": true, + "requires": { + "fs-extra": "^4.0.3", + "micromatch": "^3.1.4" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "optional": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "fuzzysearch": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/fuzzysearch/-/fuzzysearch-1.0.3.tgz", + "integrity": "sha512-s+kNWQuI3mo9OALw0HJ6YGmMbLqEufCh2nX/zzV5CrICQ/y4AwPxM+6TIiF9ItFCHXFCyM/BfCCmN57NTIJuPg==" + }, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "requires": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "requires": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "git-url-parse": { + "version": "11.6.0", + "resolved": "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-11.6.0.tgz", + "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "gl-vec2": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/gl-vec2/-/gl-vec2-1.3.0.tgz", + "integrity": "sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmmirror.com/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "globule": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.18.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-9.18.3.tgz", + "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "dev": true + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "init-package-json": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/init-package-json/-/init-package-json-2.0.5.tgz", + "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "dev": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "optional": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==" + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "inversify": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/inversify/-/inversify-5.1.1.tgz", + "integrity": "sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==" + }, + "inversify-inject-decorators": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/inversify-inject-decorators/-/inversify-inject-decorators-3.1.0.tgz", + "integrity": "sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-any-array": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-any-array/-/is-any-array-2.0.0.tgz", + "integrity": "sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "iview": { + "version": "3.5.4", + "resolved": "https://registry.npmmirror.com/iview/-/iview-3.5.4.tgz", + "integrity": "sha512-CEDHdAXxpGciMV+m1jdMDs0UVqzk/AaFhCDtSGcKDLidXRMOG2TgCZhtEHhI4mf3lchKEUFO/BcXtHAfBNuy7Q==", + "requires": { + "async-validator": "^1.12.2", + "deepmerge": "^2.2.1", + "element-resize-detector": "^1.2.0", + "js-calendar": "^1.2.3", + "lodash.throttle": "^4.1.1", + "popper.js": "^1.14.6", + "tinycolor2": "^1.4.1", + "v-click-outside-x": "^4.0.19" + } + }, + "javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", + "dev": true + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-calendar": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/js-calendar/-/js-calendar-1.2.3.tgz", + "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsencrypt": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.2.1.tgz", + "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "launch-editor": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.3.0.tgz", + "integrity": "sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.3.0.tgz", + "integrity": "sha512-GJR64trLdFFwCoL9DMn/d1SZX0OzTDPixu4mcfWTShQ4tIqCHCGvlg9fOEYQXyBlrSMQwylsJfUWncheShfV2w==", + "dev": true, + "requires": { + "launch-editor": "^2.3.0" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lerna": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lerna/-/lerna-4.0.0.tgz", + "integrity": "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==", + "dev": true, + "requires": { + "@lerna/add": "4.0.0", + "@lerna/bootstrap": "4.0.0", + "@lerna/changed": "4.0.0", + "@lerna/clean": "4.0.0", + "@lerna/cli": "4.0.0", + "@lerna/create": "4.0.0", + "@lerna/diff": "4.0.0", + "@lerna/exec": "4.0.0", + "@lerna/import": "4.0.0", + "@lerna/info": "4.0.0", + "@lerna/init": "4.0.0", + "@lerna/link": "4.0.0", + "@lerna/list": "4.0.0", + "@lerna/publish": "4.0.0", + "@lerna/run": "4.0.0", + "@lerna/version": "4.0.0", + "import-local": "^3.0.2", + "npmlog": "^4.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "less": { + "version": "3.13.1", + "resolved": "https://registry.npmmirror.com/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "less-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-6.1.0.tgz", + "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "less": "^3.11.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libnpmaccess": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz", + "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "libnpmpublish": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz", + "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "dev": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "lint-staged": { + "version": "8.2.1", + "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-8.2.1.tgz", + "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.2.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.27.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/del/-/del-3.0.0.tgz", + "integrity": "sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A==", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmmirror.com/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, + "load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==", + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "mavon-editor": { + "version": "2.10.4", + "resolved": "https://registry.npmmirror.com/mavon-editor/-/mavon-editor-2.10.4.tgz", + "integrity": "sha512-CFsBLkgt/KZBDg+SJYe2fyYv4zClY149PiwpH0rDAiiP4ae1XNs0GC8nBsoTeipsHcebDLN1QMkt3bUsnMDjQw==", + "requires": { + "xss": "^1.0.6" + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", + "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + } + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mitt": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-1.1.2.tgz", + "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "ml-array-max": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/ml-array-max/-/ml-array-max-1.2.4.tgz", + "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "requires": { + "is-any-array": "^2.0.0" + } + }, + "ml-array-min": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/ml-array-min/-/ml-array-min-1.2.3.tgz", + "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "requires": { + "is-any-array": "^2.0.0" + } + }, + "ml-array-rescale": { + "version": "1.3.7", + "resolved": "https://registry.npmmirror.com/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", + "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "requires": { + "is-any-array": "^2.0.0", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3" + } + }, + "ml-matrix": { + "version": "6.10.0", + "resolved": "https://registry.npmmirror.com/ml-matrix/-/ml-matrix-6.10.0.tgz", + "integrity": "sha512-wU+jacx1dcP1QArV1/Kv49Ah6y2fq+BiQl2BnNVBC+hoCW7KgBZ4YZrowPopeoY164TB6Kes5wMeDjY8ODHYDg==", + "requires": { + "is-any-array": "^2.0.0", + "ml-array-rescale": "^1.3.7" + } + }, + "mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dev": true, + "requires": { + "commander": "*" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "monaco-editor": { + "version": "0.19.3", + "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.19.3.tgz", + "integrity": "sha512-2n1vJBVQF2Hhi7+r1mMeYsmlf18hjVb6E0v5SoMZyb4aeOmYPKun+CE3gYpiNA1KEvtSdaDHFBqH9d7Wd9vREg==" + }, + "monaco-editor-webpack-plugin": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.8.2.tgz", + "integrity": "sha512-g9G7A/lxQtpPsYaZFBqm73dwVkOziGUXExIR6iW7ksZUaiMkpvdTiE9O8edgdJGo+XtCmjycmIKB1Lt8VKbSTQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "devOptional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + } + }, + "node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmmirror.com/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + } + } + }, + "node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "requires": { + "p-reduce": "^2.0.0" + } + }, + "pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmmirror.com/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + }, + "dependencies": { + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true + } + } + }, + "parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + } + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "patch-package": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/patch-package/-/patch-package-6.2.2.tgz", + "integrity": "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^1.2.1", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + } + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "devOptional": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "optional": true + }, + "polyline-miter-util": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/polyline-miter-util/-/polyline-miter-util-1.0.1.tgz", + "integrity": "sha512-/3u91zz6mBerBZo6qnOJOTjv7EfPhKtsV028jMyj86YpzLRNmCCFfrX7IO9tCEQ2W4x45yc+vKOezjf7u2Nd6Q==", + "requires": { + "gl-vec2": "^1.0.0" + } + }, + "polyline-normals": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/polyline-normals/-/polyline-normals-2.0.2.tgz", + "integrity": "sha512-dpHrAi61ymhsB4N0XlNb3YpkKJeTFnXBXDWpeH8Ucstq0TUZrCN3YK4Jlgk8ofMWN25lhGC4wnxLMv+TUK8rig==", + "requires": { + "polyline-miter-util": "^1.0.1" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-prefix-selector": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.15.0.tgz", + "integrity": "sha512-9taaTPs6I4906QC03zBBt0LfTWAhrqEWlKSj0jRlxrg1yV+O91h0wcquu6krcA5L6aEv3QnCeG8B1vZ5WT4ecQ==", + "dev": true, + "requires": {} + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "requires": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + } + }, + "posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "requires": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + }, + "dependencies": { + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true + }, + "posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "requires": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "probe.gl": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/probe.gl/-/probe.gl-3.5.0.tgz", + "integrity": "sha512-KWj8u0PNytr/rVwcQFcN7O8SK7n/ITOsUZ91l4fSX95oHhKvVCI7eadrzFUzFRlXkFfBWpMWZXFHITsHHHUctw==", + "requires": { + "@babel/runtime": "^7.0.0", + "@probe.gl/env": "3.5.0", + "@probe.gl/log": "3.5.0", + "@probe.gl/stats": "3.5.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "dev": true, + "requires": { + "read": "1" + } + }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + } + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true, + "optional": true + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "regl": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/regl/-/regl-1.7.0.tgz", + "integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==" + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "devOptional": true + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "dev": true, + "optional": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA==", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "dev": true, + "optional": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", + "dev": true, + "optional": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", + "dev": true, + "optional": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-git": { + "version": "1.132.0", + "resolved": "https://registry.npmmirror.com/simple-git/-/simple-git-1.132.0.tgz", + "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==", + "dev": true, + "requires": { + "debug": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.0.tgz", + "integrity": "sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "eventsource": "^1.1.0", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-Re0wX5CtM6gW7bZA64ONOfEPEhwbiSF/vz6e2GvadjuaPrQcHTQdRGsD8+BE7iUOysXH8tIenkPCQBEcspXsNg==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "sql-formatter": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/sql-formatter/-/sql-formatter-2.3.3.tgz", + "integrity": "sha512-m6pqVXwsm9GkCHC/+gdPvNowI7PNoVTT6OZMWKwXJoP2MvfntfhcfyliIf4/QX6t+DirSJ6XDSiSS70YvZ87Lw==", + "requires": { + "lodash": "^4.16.0" + } + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "dev": true + }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.padstart": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz", + "integrity": "sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "requires": { + "minimist": "^1.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "svg-baker-runtime": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", + "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", + "dev": true, + "requires": { + "deepmerge": "1.3.2", + "mitt": "1.1.2", + "svg-baker": "^1.7.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true + } + } + }, + "svg-sprite-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-5.0.0.tgz", + "integrity": "sha512-/hedkRC2IS0E+kFIb+OUCfqQlbVx72/WEEeRGw2uPsNgOOgJEONXzjfSm+CJ3pB9gOHytlBmPMS8ijMCp5s2Eg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "deepmerge": "1.3.2", + "domready": "1.0.8", + "escape-string-regexp": "1.0.5", + "html-webpack-plugin": "^3.2.0", + "loader-utils": "^1.1.0", + "svg-baker": "^1.5.0", + "svg-baker-runtime": "^1.4.7", + "url-slug": "2.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==", + "dev": true + } + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.0.tgz", + "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.33", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmmirror.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==", + "dev": true, + "optional": true, + "requires": {} + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true, + "optional": true + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmmirror.com/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true + }, + "temp-write": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/temp-write/-/temp-write-4.0.0.tgz", + "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", + "dev": true + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==", + "dev": true + }, + "umask": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/umask/-/umask-1.1.0.tgz", + "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unidecode": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/unidecode/-/unidecode-0.1.8.tgz", + "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "devOptional": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/url-slug/-/url-slug-2.0.0.tgz", + "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==", + "dev": true, + "requires": { + "unidecode": "0.1.8" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v-click-outside-x": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/v-click-outside-x/-/v-click-outside-x-4.1.3.tgz", + "integrity": "sha512-qK4wwuDHK406fGBSJ4DbioPb6LQpRkWqk8i1TZhnVwObU+W4Ra6H7Cn+VLy/dTNTH/sgZJzk9YMYnB/s5RJ0Hg==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "vue": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" + }, + "vue-cli-plugin-mockjs": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/vue-cli-plugin-mockjs/-/vue-cli-plugin-mockjs-0.1.3.tgz", + "integrity": "sha512-BK7EaGhrLYYMOAPuhLxZjpBGJOLtpCFfVT2FDhDqBZIF+DimmAG/06P+gFwMDSQb8j8ROirLLBgLDjqIXJj56A==", + "dev": true, + "requires": { + "express": "^4.16.4", + "mockjs": "^1.0.1-beta3" + } + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-i18n": { + "version": "8.22.1", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.22.1.tgz", + "integrity": "sha512-JNgiEJ5a8YPfk5y2lKyfOAGLmkpAVfhaUi+T4wGpSppRYZ3XSyawSDDketY5KV2CsAiBLAGEIO6jO+0l2hQubg==" + }, + "vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-router": { + "version": "3.4.8", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.4.8.tgz", + "integrity": "sha512-3BsR84AqarcmweXjItxw3jwQsiYNssYg090yi4rlzTnCJxmHtkyCvhNz9Z7qRSOkmiV485KkUCReTp5AjNY4wg==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "requires": { + "sortablejs": "1.10.2" + } + }, + "vuescroll": { + "version": "4.16.1", + "resolved": "https://registry.npmmirror.com/vuescroll/-/vuescroll-4.16.1.tgz", + "integrity": "sha512-7fRsG2Yw5Z07LUz/IIu9barpmYiN9q+ZTC+CrVamvCbmsxyhz8mU1OuYFbfORysaUskioNMxTGDo+HOzeDfSyQ==", + "requires": {} + }, + "watch-size": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/watch-size/-/watch-size-2.0.0.tgz", + "integrity": "sha512-M92R89dNoTPWyCD+HuUEDdhaDnh9jxPGOwlDc0u51jAgmjUvzqaEMynXSr3BaWs+QdHYk4KzibPy1TFtjLmOZQ==" + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + } + }, + "webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + } + } + }, + "webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-4.12.1.tgz", + "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "dev": true, + "requires": { + "ansi-html-community": "0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "webpack-virtual-modules": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz", + "integrity": "sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz", + "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", + "requires": { + "loader-utils": "^1.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "requires": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "requires": { + "is-plain-obj": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + } + } + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xss": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/xss/-/xss-1.0.11.tgz", + "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "yup": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/yup/-/yup-0.27.0.tgz", + "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + }, + "dependencies": { + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + } + } + }, + "zip-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + } + } } diff --git a/web/package.json b/web/package.json index 7d905cc8d..21b9cd5eb 100644 --- a/web/package.json +++ b/web/package.json @@ -23,18 +23,27 @@ ] }, "dependencies": { + "@antv/g6": "^4.5.3", "axios": "0.21.1", "babel-polyfill": "6.26.0", "butterfly-dag": "4.1.23", + "clipboard": "^2.0.8", + "dexie": "2.0.4", + "dt-sql-parser": "1.2.1", "core-js": "2.6.11", "echarts": "^4.1.0", + "eslint": "6.8.0", + "eslint-plugin-vue": "6.2.2", + "highlight.js": "9.18.3", "iview": "3.5.4", "jsencrypt": "^3.2.1", "lodash": "4.17.20", "md5": "2.3.0", - "moment": "2.29.4", + "moment": "2.29.1", "monaco-editor": "0.19.3", "qs": "6.9.4", + "reconnecting-websocket": "4.4.0", + "sql-formatter": "2.3.3", "svgo": "1.3.0", "vue": "2.6.12", "vue-i18n": "8.22.1", diff --git a/web/packages/dataAssetManage/assets/styles/console.scss b/web/packages/dataAssetManage/assets/styles/console.scss new file mode 100644 index 000000000..89d0b876e --- /dev/null +++ b/web/packages/dataAssetManage/assets/styles/console.scss @@ -0,0 +1,69 @@ +/*! + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +@import '@dataspherestudio/shared/common/style/variables.scss'; + +.console-page{ + position: $relative; + width: $percent-all; + height: $percent-all; + display: flex; + flex-direction: column; + background: $background-color-base; + padding: 20px; + overflow: hidden; + + .console-page-content-head { + display: flex; + justify-content: space-between; + + .console-page-content-title { + font-size: $font-size-large; + font-weight: bold; + } + } + + .console-page-content-body { + display: flex; + height: calc(100% - 68px); + .content-body-side-nav { + width: 200px; + + .content-body-card { + padding: 10px 0 10px; + } + } + .content-body-side-right { + flex: 1; + margin-left: 20px; + background: $body-background; + border-radius: $border-radius-small; + padding: 10px; + overflow: auto; + .content-body-side-right-title { + height: 30px; + border-bottom: $border-width-base $border-style-base $border-color-split; + margin-bottom: 10px + } + .content-body-side-right-content { + overflow: auto; + } + + } + } + +} diff --git a/web/packages/dataAssetManage/directive/clipboard/clipboard.js b/web/packages/dataAssetManage/directive/clipboard/clipboard.js new file mode 100644 index 000000000..dd8ff6709 --- /dev/null +++ b/web/packages/dataAssetManage/directive/clipboard/clipboard.js @@ -0,0 +1,49 @@ +const Clipboard = require('clipboard'); + +if (!Clipboard) { + throw new Error('you should npm install `clipboard` --save at first '); +} + +export default { + bind(el, binding) { + if (binding.arg === 'success') { + el._v_clipboard_success = binding.value; + } else if (binding.arg === 'error') { + el._v_clipboard_error = binding.value; + } else { + const clipboard = new Clipboard(el, { + text() { return binding.value; }, + action() { return binding.arg === 'cut' ? 'cut' : 'copy'; } + }); + clipboard.on('success', (e) => { + const callback = el._v_clipboard_success; + callback && callback(e) // eslint-disable-line + }); + clipboard.on('error', (e) => { + const callback = el._v_clipboard_error; + callback && callback(e) // eslint-disable-line + }); + el._v_clipboard = clipboard; + } + }, + update(el, binding) { + if (binding.arg === 'success') { + el._v_clipboard_success = binding.value; + } else if (binding.arg === 'error') { + el._v_clipboard_error = binding.value; + } else { + el._v_clipboard.text = function () { return binding.value; }; + el._v_clipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy'; }; + } + }, + unbind(el, binding) { + if (binding.arg === 'success') { + delete el._v_clipboard_success; + } else if (binding.arg === 'error') { + delete el._v_clipboard_error; + } else { + el._v_clipboard.destroy(); + delete el._v_clipboard; + } + } +}; diff --git a/web/packages/dataAssetManage/directive/clipboard/index.js b/web/packages/dataAssetManage/directive/clipboard/index.js new file mode 100644 index 000000000..3783c2d4a --- /dev/null +++ b/web/packages/dataAssetManage/directive/clipboard/index.js @@ -0,0 +1,13 @@ +import Clipboard from './clipboard'; + +const install = (Vue) => { + Vue.directive('Clipboard', Clipboard); +}; + +if (window.Vue) { + window.clipboard = Clipboard; + Vue.use(install); // eslint-disable-line +} + +Clipboard.install = install; +export default Clipboard; diff --git a/web/packages/dataAssetManage/i18n/en.json b/web/packages/dataAssetManage/i18n/en.json new file mode 100644 index 000000000..1124b5234 --- /dev/null +++ b/web/packages/dataAssetManage/i18n/en.json @@ -0,0 +1,14 @@ +{ + "message": { + "dataAssetManage": { + "dataAssetManage": "Data Governance", + "dataAssets": "Data Assets", + "dataOverview": "Data Overview", + "dataAssetsIndex": "Data Assets Index", + "overallMeasurement": "Overall measurement", + "menu": "Menu", + "pleaseEnterATableName": "Please enter a table name / description to search the database table", + "search": "Search" + } + } +} diff --git a/web/packages/dataAssetManage/i18n/zh.json b/web/packages/dataAssetManage/i18n/zh.json new file mode 100644 index 000000000..c68f94c5d --- /dev/null +++ b/web/packages/dataAssetManage/i18n/zh.json @@ -0,0 +1,14 @@ +{ + "message": { + "dataAssetManage": { + "dataAssetManage": "数据治理", + "dataAssets": "数据资产", + "dataOverview": "数据总览", + "dataAssetsIndex": "数据资产目录", + "overallMeasurement": "总体计量", + "menu": "目录", + "pleaseEnterATableName": "请输入表名/描述搜索数据库表", + "search": "搜索" + } + } +} diff --git a/web/packages/dataAssetManage/module/common/eventBus/event-bus.js b/web/packages/dataAssetManage/module/common/eventBus/event-bus.js new file mode 100644 index 000000000..c5dbc39b1 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/eventBus/event-bus.js @@ -0,0 +1,3 @@ +// event-bus.js +import Vue from 'vue' +export const EventBus = new Vue() diff --git a/web/packages/dataAssetManage/module/common/iCard.vue b/web/packages/dataAssetManage/module/common/iCard.vue new file mode 100644 index 000000000..927326e7e --- /dev/null +++ b/web/packages/dataAssetManage/module/common/iCard.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/web/packages/dataAssetManage/module/common/navMenu.vue b/web/packages/dataAssetManage/module/common/navMenu.vue new file mode 100644 index 000000000..ff6c2f21d --- /dev/null +++ b/web/packages/dataAssetManage/module/common/navMenu.vue @@ -0,0 +1,152 @@ + + + diff --git a/web/packages/dataAssetManage/module/common/tabCard/index.vue b/web/packages/dataAssetManage/module/common/tabCard/index.vue new file mode 100644 index 000000000..8cd0ec7ed --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tabCard/index.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/web/packages/dataAssetManage/module/common/tabList/index.scss b/web/packages/dataAssetManage/module/common/tabList/index.scss new file mode 100644 index 000000000..4c4c91c27 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tabList/index.scss @@ -0,0 +1,110 @@ +@import '@dataspherestudio/shared/common/style/variables.scss'; +.workflowTabContainer { + margin-left: 304px; + transition: margin-left .3s; + position: relative; + height: 100%; + box-sizing: border-box; + display: flex; + flex-direction: column; + &.tree-fold { + margin-left: 54px; + } + .tap-bar { + // background: #fff; + @include bg-color($workspace-body-bg-color, $dark-workspace-body-bg-color); + margin-bottom: $padding-25; + .topTabList { + padding: 25px $padding-25 0px; + flex: none; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + .topLeft { + flex: 1; + min-width: 320px; + .ivu-breadcrumb { + font-size: 21px; + /deep/.ivu-breadcrumb-item-separator { + // color: rgba(0,0,0,0.65); + @include font-color($light-text-color, $dark-text-color); + } + } + } + .buttonChange { + flex: none; + .ivu-btn { + font-size: 14px; + } + .button-group { + margin-left: 15px; + } + } + } + .bottomTapList { + padding: 0px $padding-25; + border-bottom: $border-width-base $border-style-base $border-color-base; + @include border-color($background-color-base, $dark-workspace-body-bg-color); + @include font-color($workspace-title-color, $dark-workspace-title-color); + margin-top: 12px; + flex: none; + display: flex; + align-items: center; + font-size: $font-size-large; + .bottomLeftText { + cursor: pointer; + flex: none; + font-size: $font-size-large; + padding: 0 15px; + margin-bottom: -1px; + line-height: 40px; + position: relative; + &::after { + content: ""; + border-left: 1px solid #DEE4EC; + @include border-color($border-color-base, $dark-border-color-base); + width: 0; + position: absolute; + right: -15px; + top: 12px; + height: 16px; + margin: 0 15px; + } + } + .active { + border-bottom: 2px solid $primary-color; + @include border-color($primary-color, $dark-primary-color); + } + .bottomRightContainer { + flex: 1; + height: 40px; + } + } + } + .defaultSlot { + flex: 1; + } +} + +.tab-item { + display: inline-block; + height: 40px; + line-height: 40px; + // color: $title-color; + @include font-color($workspace-title-color, $dark-workspace-title-color); + cursor: pointer; + min-width: 100px; + max-width: 200px; + overflow: hidden; + margin-right: 2px; + &.active { + height: 40px; + // color: $primary-color; + @include font-color($primary-color, $dark-primary-color); + border-radius: 4px 4px 0 0; + border-bottom: 2px solid $primary-color; + @include border-color($primary-color, $dark-primary-color); + line-height: 38px; + } +} diff --git a/web/packages/dataAssetManage/module/common/tabList/index.vue b/web/packages/dataAssetManage/module/common/tabList/index.vue new file mode 100644 index 000000000..40b6572da --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tabList/index.vue @@ -0,0 +1,175 @@ + + + diff --git a/web/packages/dataAssetManage/module/common/tabList/tabs.vue b/web/packages/dataAssetManage/module/common/tabList/tabs.vue new file mode 100644 index 000000000..ee0389e16 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tabList/tabs.vue @@ -0,0 +1,80 @@ + + + diff --git a/web/packages/dataAssetManage/module/common/title.vue b/web/packages/dataAssetManage/module/common/title.vue new file mode 100644 index 000000000..fac3fff34 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/title.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/web/packages/dataAssetManage/module/common/tree/tree-item.vue b/web/packages/dataAssetManage/module/common/tree/tree-item.vue new file mode 100644 index 000000000..acab74208 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tree/tree-item.vue @@ -0,0 +1,168 @@ + + + diff --git a/web/packages/dataAssetManage/module/common/tree/tree.vue b/web/packages/dataAssetManage/module/common/tree/tree.vue new file mode 100644 index 000000000..2387e3116 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/tree/tree.vue @@ -0,0 +1,121 @@ + + diff --git a/web/packages/dataAssetManage/module/common/treeMenu.vue b/web/packages/dataAssetManage/module/common/treeMenu.vue new file mode 100644 index 000000000..3b12ac036 --- /dev/null +++ b/web/packages/dataAssetManage/module/common/treeMenu.vue @@ -0,0 +1,201 @@ + + + diff --git a/web/packages/dataAssetManage/module/components/tabCard/index.vue b/web/packages/dataAssetManage/module/components/tabCard/index.vue new file mode 100644 index 000000000..c921307c9 --- /dev/null +++ b/web/packages/dataAssetManage/module/components/tabCard/index.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/web/packages/dataAssetManage/module/dataAssetManage/assetsIndex.vue b/web/packages/dataAssetManage/module/dataAssetManage/assetsIndex.vue new file mode 100644 index 000000000..208ac33ad --- /dev/null +++ b/web/packages/dataAssetManage/module/dataAssetManage/assetsIndex.vue @@ -0,0 +1,230 @@ + + + diff --git a/web/packages/dataAssetManage/module/dataAssetManage/index.js b/web/packages/dataAssetManage/module/dataAssetManage/index.js new file mode 100644 index 000000000..1b6a4f62a --- /dev/null +++ b/web/packages/dataAssetManage/module/dataAssetManage/index.js @@ -0,0 +1,10 @@ +export default { + name: 'dataAssetManage', + events: [], + dispatchs: { + }, + data: { + API_PATH: process.env.VUE_APP_MN_CONFIG_PREFIX || `http://${window.location.host}/api/rest_j/v1/`, + }, + component: () => import('./index.vue') +}; diff --git a/web/packages/dataAssetManage/module/dataAssetManage/index.vue b/web/packages/dataAssetManage/module/dataAssetManage/index.vue new file mode 100644 index 000000000..6772889d7 --- /dev/null +++ b/web/packages/dataAssetManage/module/dataAssetManage/index.vue @@ -0,0 +1,140 @@ + + + + diff --git a/web/packages/dataAssetManage/module/dataAssetManage/overview.vue b/web/packages/dataAssetManage/module/dataAssetManage/overview.vue new file mode 100644 index 000000000..0673db091 --- /dev/null +++ b/web/packages/dataAssetManage/module/dataAssetManage/overview.vue @@ -0,0 +1,186 @@ + + + diff --git a/web/packages/dataAssetManage/router.js b/web/packages/dataAssetManage/router.js new file mode 100644 index 000000000..70ff6decf --- /dev/null +++ b/web/packages/dataAssetManage/router.js @@ -0,0 +1,61 @@ +const routes = [ + { + name: "dataAssetManage", + path: "/dataAssetManage", + redirect: "/dataAssetManage/overview", + component: () => import("./view/layout/index.vue"), + meta: { + title: "数据资产", + publicPage: true, + icon: "ios-paper" + + }, + children: [ + { + name: "overview", + path: "/dataAssetManage/overview", + component: () => import("./module/dataAssetManage/overview.vue"), + meta: { + title: "数据总览", + publicPage: true, + icon: "ios-paper" + } + }, + { + name: "assets", + path: "/dataAssetManage/assets", + redirect: "/dataAssetManage/assets/search", + component: () => import("./module/dataAssetManage/assetsIndex.vue"), + meta: { + title: "数据资产目录", + publicPage: true, + cover: "assetsSearch" + }, + children: [ + { + name: "assetsSearch", + path: "/dataAssetManage/assets/search", + component: () => import("./view/assetsSearch/index.vue"), + meta: { + title: "数据资产目录", + publicPage: true, + icon: "ios-paper" + } + }, + { + name: "assetsInfo", + path: "/dataAssetManage/assets/info/:guid", + component: () => import("./view/assetsInfo/index.vue"), + meta: { + title: "数据资产详情", + publicPage: true, + cover: "assetsInfo" + } + } + ] + } + ] + } +]; + +export default routes; diff --git a/web/packages/dataAssetManage/service/api.js b/web/packages/dataAssetManage/service/api.js new file mode 100644 index 000000000..ef9152b1b --- /dev/null +++ b/web/packages/dataAssetManage/service/api.js @@ -0,0 +1,123 @@ +import API_PATH from '@dataspherestudio/shared/common/config/apiPath.js' +import api from '@dataspherestudio/shared/common/service/api' + +/** + * 数据资产概要 + * @returns {Object.result} + * + */ +export const getHiveSummary = () => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveSummary`, 'get') + +/** + * 查询hive表--基础&列 + * @param {*} guid + * @returns + */ +export const getHiveTblBasic = guid => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/${guid}/basic`, {}, 'get') + +/** + * 查询hive表-分区信息 + * @param {*} guid + * @returns + */ +export const getHiveTblPartition = guid => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/${guid}/partition`, {}, 'get') + +/** + * 查询hive表--select语句 + * @param {*} guid + * @returns + */ +export const getSelectSql = guid => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/${guid}/select`, {}, 'get') + +/** + * 查询hive表--create语句 + * @param {*} guid + * @returns + */ +export const getSelectDdl = guid => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/${guid}/create`, {}, 'get') + +/** + * 搜索hive表 + * @param {query} + * @returns + */ +export const getHiveTbls = params => + api.fetch( + `${API_PATH.DATA_GOVERNANCE}hiveTbl/search?query=${params.query}&owner=${params.owner}&label=${params.label}&limit=${params.limit}&offset=${params.offset}`, + {}, + 'get' + ) + +/* + * 查询hive表--血缘 + * @param {*} guid + * @returnsL + */ +export const getLineage = guid => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/${guid}/lineage`, {}, 'get') + +/** + * 批量修改注释 + * @params {Map} + * @returns + */ +export const putCommetBulk = params => { + return api.fetch(`${API_PATH.DATA_GOVERNANCE}comment/bulk`, params, 'put') +} + +/** + * 存储量前10表 + * @params {void} + * @returns Array + */ +export const getTopStorage = () => + api.fetch(`${API_PATH.DATA_GOVERNANCE}hiveTbl/topStorage`, {}, 'get') + +/** + * 设置标签--表或列 + * @params {guid} + * @returns String + */ +export const postSetLabel = (guid, params) => + api.fetch(`${API_PATH.DATA_GOVERNANCE}label/${guid}`, params, 'post') + +/** + * 修改注释--表或列 + * @params {guid, Obiect} + * @returns String + */ +export const postSetComment = (guid, comment) => + api.fetch( + `${API_PATH.DATA_GOVERNANCE}comment/${guid}?comment=${comment}`, + {}, + 'put' + ) + +/** + * 负责人查询 + * @params {workspaceId} + * @returns Array + */ +export const getWorkspaceUsers = (workspackId) => + api.fetch( + `${API_PATH.DATA_GOVERNANCE}users/${workspackId}`, + {}, + 'get' + ) + +/** + * 标签查询 + * @params {workspaceId} + * @returns Array + */ +export const getLabels = (search) => + api.fetch( + `${API_PATH.DATA_GOVERNANCE}labels/search?query=${search}`, + {}, + 'get' + ) diff --git a/web/packages/dataAssetManage/service/db/node.js b/web/packages/dataAssetManage/service/db/node.js new file mode 100644 index 000000000..6347b2c21 --- /dev/null +++ b/web/packages/dataAssetManage/service/db/node.js @@ -0,0 +1,103 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import {isNil} from 'lodash'; +import { Basic } from '@dataspherestudio/shared/common/service/db/index.js'; +import { isArray } from 'util'; +/** + * @class Globalcache + * @extends {Basic} + */ +class Node extends Basic { + /** + *Creates an instance of Globalcache. + * @param {*} table + * @param {*} db + * @memberof Globalcache + */ + constructor(table) { + super(table); + } + + /** + * @param {*} nodeId + * @param {*} key + * @return {*} + */ + async getNodeCache({nodeId, key}) { + let caches = await this.get(nodeId); + if (key) { + return caches[0][key]; + } + return caches[0]; + } + + /** + * @param {*} nodeId + * @param {*} value + * @return {*} + */ + async addNodeCache({nodeId, value}) { + let cache = await this.getNodeCache({nodeId}); + if (!isNil(cache)) { + return this.update(nodeId, value) + } + return this.add(Object.assign({nodeId}, value)); + } + + + /** + * @param {*} nodeId + * @param {*} key + * @param {*} value + * @return {*} + */ + async updateNodeCache({nodeId, key, value}) { + let cache = {}; + if (key) { + if (isArray(key)) { + key.forEach((k) => { + cache[k] = value[k]; + }) + } else { + cache[key] = value[key]; + } + } else { + cache = value; + } + return nodeId ? this.update(nodeId, cache) : null; + } + + + /** + * @param {*} args + * @return {*} + */ + async removeNodeCache({nodeId, key}) { + let cache = await this.getNodeCache({nodeId}); + if (isNil(cache)) { + if (key) { + cache[key] = null; + return this.update(nodeId, cache); + } + return this.remove(nodeId); + } + } +} +const node = new Node('node'); + +export default node; diff --git a/web/packages/dataAssetManage/service/db/project.js b/web/packages/dataAssetManage/service/db/project.js new file mode 100644 index 000000000..760a6636e --- /dev/null +++ b/web/packages/dataAssetManage/service/db/project.js @@ -0,0 +1,118 @@ +/* + * Copyright 2019 WeBank + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import {isNil} from 'lodash'; +import { Basic } from '@dataspherestudio/shared/common/service/db/index.js'; +import { isArray } from 'util'; +/** + * @class Globalcache + * @extends {Basic} + */ +class Project extends Basic { + /** + *Creates an instance of Globalcache. + * @param {*} table + * @param {*} db + * @memberof Globalcache + */ + constructor(table) { + super(table); + } + + /** + * @param {*} projectID + * @param {*} key + * @return {*} + */ + async getProjectCache({projectID, key}) { + projectID = Number(projectID); + let caches = await this.get(projectID); + if (key) { + return caches[0][key]; + } + return caches[0]; + } + + /** + * @param {*} projectID + * @param {*} value + * @return {*} + */ + async addProjectCache({projectID, value}) { + projectID = Number(projectID); + let cache = await this.getProjectCache({projectID}); + if (!isNil(cache)) { + return this.update(projectID, value) + } + return this.add(Object.assign({projectID}, value)); + } + + + /** + * @param {*} projectID + * @param {*} key + * @param {*} value token是用于第二层比对的字段,sKey是实际写入的key,sValue是用于比对的值 + * @param {*} isDeep 是否要对第二层数据进行修改,如果需要的话,就需要在value中携带 + * @return {*} + */ + async updateProjectCache({projectID, key, value, isDeep}) { + projectID = Number(projectID); + let cache = {}; + if (key) { + if (isDeep) { + cache = await this.getProjectCache({projectID}) || {}; + let arr = cache && cache[key] || []; + arr.forEach((item) => { + if (item[value.token] === Number(value.sValue)) { + item[value.sKey] = value[value.sKey]; + } + }) + } else { + if (isArray(key)) { + key.forEach((k) => { + cache[k] = value[k]; + }) + } else { + cache[key] = value[key]; + } + } + } else { + cache = value; + } + return this.update(projectID, cache); + } + + + /** + * @param {*} args + * @return {*} + */ + async removeProjectCache({projectID, key}) { + projectID = Number(projectID); + let cache = await this.getProjectCache({projectID}); + if (isNil(cache)) { + if (key) { + cache[key] = null; + return this.update(projectID, cache); + } + return this.remove(projectID); + } + } +} +const project = new Project('project'); + +export default project; diff --git a/web/packages/dataAssetManage/utils/clipboard.js b/web/packages/dataAssetManage/utils/clipboard.js new file mode 100644 index 000000000..7efc01c49 --- /dev/null +++ b/web/packages/dataAssetManage/utils/clipboard.js @@ -0,0 +1,43 @@ +import Vue from 'vue'; +import Clipboard from 'clipboard'; + +/** + *@returns + */ +function clipboardSuccess() { + Vue.prototype.$Message.success({ + content: '复制成功', + duration: 1.5 + }); +} + + +/** + *@returns + */ +function clipboardError() { + Vue.prototype.$Message.success({ + message: '复制失败', + duration: 1.5 + }); +} + +/** + * 把字符串中的内容放到剪切板上 + * @param {String, Object} + * @param {void} + */ +export default function handleClipboard(text, event) { + const clipboard = new Clipboard(event.target, { + text: () => text + }); + clipboard.on('success', () => { + clipboardSuccess(); + clipboard.destroy(); + }); + clipboard.on('error', () => { + clipboardError(); + clipboard.destroy(); + }); + clipboard.onClick(event); +} diff --git a/web/packages/dataAssetManage/utils/fomatSQL.js b/web/packages/dataAssetManage/utils/fomatSQL.js new file mode 100644 index 000000000..caba9997b --- /dev/null +++ b/web/packages/dataAssetManage/utils/fomatSQL.js @@ -0,0 +1,23 @@ +/** + * 转换 后端SQL语句 成 html文本 + * @param (String) + * @return (String) + */ +export function fomatSqlForShow(sql) { + if ( typeof sql !== 'string' ) return '' + const arr = sql.split('@$'); + const res = arr.map((i, idx) => `

${idx+1}${i}

`) + return res.join('') +} + +/** + * + * @param {String} sql + * @return {String} + */ +export function fomatSqlForCopy(sql) { + if ( typeof sql !== 'string' ) return '' + const arr = sql.replaceAll(' ', '').split('@$'); + const res = arr.map(i => `${i}\r\n`) + return res.join('') +} diff --git a/web/packages/dataAssetManage/utils/formatDate.js b/web/packages/dataAssetManage/utils/formatDate.js new file mode 100644 index 000000000..d3d68b595 --- /dev/null +++ b/web/packages/dataAssetManage/utils/formatDate.js @@ -0,0 +1,11 @@ +import moment from 'moment' + +/** + * 转换时间戳到字符串 + * @param (Number) + * @return (String) + */ +export default function formatDate (value) { + if (!value) return '' + return moment(value).format("YYYY-MM-DD HH:mm") +} diff --git a/web/packages/dataAssetManage/utils/storage.js b/web/packages/dataAssetManage/utils/storage.js new file mode 100644 index 000000000..2ab293c3b --- /dev/null +++ b/web/packages/dataAssetManage/utils/storage.js @@ -0,0 +1,11 @@ +export const storage = { + setItem(key, val) { + return sessionStorage.setItem(key, val) + }, + getItem(key) { + return sessionStorage.getItem(key) + }, + removeItem(key) { + return sessionStorage.removeItem(key) + } +} diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/AtlasServer.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/AtlasServer.png new file mode 100644 index 0000000000000000000000000000000000000000..56c6f5889e8e1c7218295920860dfd6fe4209ce8 GIT binary patch literal 3652 zcmV-K4!iM*P){wrkF4=7wqb-fl;4ajb z*DkN_(l!4(=gi)jxifR$_d93KFS*&7%gmiKbANp2JLlYcPTl0>BpIeir8Awjr}FVR zA{vyBvwdBI<|mt?rX>=>$gQ1-=6QJg2_aTLwptde<|Im`GaHFWZeFCR2BbPbM0;vY zsG5){mCm#fQ8y87CZe_&K5~eNdb539dt&&k#L-$Jn>^hiM;*5yI`!x-leQA2(iudZ z-h|{S29c>d+t=04pe&)IokXd0W-0O#JY-OuVs?qhbdFcCf}xc}B5B^kB>I#CQE9VI z$#*@2GK4}Zo#`Q>r+R1y^_5s8dIk&u{3 zu}fqGij+h|id7;bP%OkQQfv|#fnp_Akz$d^2$Tr1i4?g+MxaEAMWje2G6Jz6a*-mF z$Oy!WNJWZ7A|nt>A`>ZeiHtz3iA1DOB{BjjLFgidHnj{Ffts48(YLp+rlzLGq>EC* zv16n3$fN(_Qk>AHwFyNcP7&zmkG-FkFKcE{5@(*;|B7}ZO$&MeZdI5R==AB!G;;b% z;^mPnS~!yyE}TWnm$MQaRT~8rDUd{*bD(Dq57X{nyv(2^Ikw!sj5goCj6+e12`rND z#M&g$S`jGO_9cP%&U8kf}5f_rAr`F-Pb`MHVw{#hN)oF@rk*X%vsdT2-w8CnZ z-EL<7uNa9$w!TfpU$C`x7PYUL&!8kZP##6ugB2<(twmCH*dvwBw2P%Fxv!N`K(?=o zQE5sUeEuwLyX)`Vid79PYSUS6b)-tw8TZwC4Do?QZFE@XAU?m{8u88Safa&(=XzhQ>QM|;LsU1<+*9ibqq=o7}QQn zix1*do%QnnF8*nFi*tuzx&4L$+EVFEck#}GNF>&Y|D>+Jn;iDIa`YOVvvn-CY@JRs z*EUof_L#eAIyJVr8){T|*uxDy=r^<{*~QgaiDfz=hdm$+BG0wgCau4CUTN3^ubJJ^ z;Az<7^1JHk%D^=pe?~O6vS61KW+&G@D~vX0+k!~z-#{Z z-7D1aR(FwT^5UfKz1uyG66qd=NK`XUkp?H+X}=wabnP`QBa0u98*R+?bseCh#9Et$ zZ4I%I_r;1tqIbGYr{CTTdqhs5L^?(xbnGeKxyPM(Voa@HR%e~Me6t_?=miF)aOUF0 z33}wGY;G3{1Irs3iBd{`6&o1p7#o`ieD4{mAA2O*6T+P%&;9vTI`;Bt;NvhNCz0r2 z)C!y|Y(YRiWtWK4?MIBTf=|8ESct*k7W6L~i5$TF{2d>>zTh7)3U6@4lBmV}Hd8>B zC-<$V&)l-4VE?zixtgBb*TMQe|Ac6PMC~>C)gAckr`s%9=FG{pH;@G5N<`e(4{$I2 zPab}+5vh>&z!N&?0>t?0S5{iz2J(FWffou|QmEcAWeo(o|9kE9r91v=wE_(at&1Nu zh(aX#a=x=;u%s!D)*i$n5s`{>rdme3NQ9(#*F*lR9P~5csz@hfKM#(LY7d(iaLKL| zQ75#EL_q`s)h?+W96Ia!*ywlq+MVz8{eG@MBFEc6ROPAtCjync+CXV*>rCIrMpgOD z;s5%6KU2=3IvdpKVl=3U-L{)k72XeU(T5W@a-fjfYaM%M3YS}vT zGwgBd^kpl@fqZC%73VH8*OK7h%jHhBMnl^>zJRaHa?$=cL4-hyYySKhmPj|X&!;*| zo<{1p`Fgr%`)XS9_BmFGFnQ-6j-0BMpQa+&zOF5G>pyfDJ=XrSMU8ONveUJN<&&Xo zUst^ztMu&Q;lNi1XvW@bU)N@t6ZMm<0rQI)Jc4`(X;4lgaZBt$^D7!WkiU7+KI{?7Vj+f_p;RJq zH>1fW4Q|+5X+j6wW4&9YpRqHwF#mYq=ouOv9nU{sw{`(FH&^eJA03^bfupa}${Xj> zqD8YDkL9-vPBb?+(z>Pc_DBd94}}Ys=eOMV?TR|e)YtET$ec^tiB=pM>|~# zQg&`WZfvkc04j|L)L9UuB4q6Xm92bd*R; ze7%$NH?mhF$RlL6U_Y^3%K({BwJFAC&+}Mk`?^r~Wx0M&S&hgD)Bne*s==v>;ZO#9 zv_Wq4_@nPrMW&rjQx8k3U1Pmb%%;u?d-8fjR0~IJ)kATz8wGyK@ZgXCSx~K_O93+d z{^<>|iSL8GBA}F|qC_HmA;~_^>051B-HtT%Ye{A&a6eFvX;$)gj8IV+CLnK0rO$vB-_bN^; zw2JF_*l~5skVv#UIYcD4VL!?$Evz!2RfxzWqf(stToqgkL|$%QCqk~pya$Kw6*kX*$ZyAvH zK)8P#JwqcSm-3yAi^X^yj+5~CnP-8>&u!F6ij*5r&2`w}#5fIfqM0q5&4?I&CA#g_ z8yxqe`tef+DHOJH$9}Lkn#k!AUjmWe+o+Suk?hq7{x>^eZ)Qi4U-&IUbJMi4Q3g2? z0Z0m8Q2!mD+#>|jk*iT%!{Z7Ys0`EiQ2~r068L|p{ z@udq&R$+DmNkj@S^J%aMED(hu5osV2@)zVOsB&;o89D=z!=T>=7mwjFT3K?~0?%

$MbTmhzV673VV_( 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/aws.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/aws.png new file mode 100644 index 0000000000000000000000000000000000000000..79097bd9203ea7555f38e3412363594de992d5d8 GIT binary patch literal 3825 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 n;^Ak+4gFJ1zPFtw4hw276%9?52H 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 VdC%Qo@7K>PLp?LyDs88z{{zV#-$eib literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/DataSet.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/DataSet.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed51de7592c24082ac68ba59c3c09617af6fdc9 GIT binary patch literal 3362 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 Jm8Ra;{|AeZ3QYh2 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/aws.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/aws.png new file mode 100644 index 0000000000000000000000000000000000000000..d9be6f3ea0a6f6023453bf68237776d330d0fc31 GIT binary patch literal 7337 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/azure.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/azure.png new file mode 100644 index 0000000000000000000000000000000000000000..720f3ac5915135a26cabbf4c91814e257f85cd36 GIT binary patch literal 5032 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/db.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/db.png new file mode 100644 index 0000000000000000000000000000000000000000..982c6867a292e1fccb82fecbaf3b91cc4e71e651 GIT binary patch literal 4729 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon_feed_replication.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/falcon_feed_replication.png new file mode 100644 index 0000000000000000000000000000000000000000..af492dabe66b6a45a181abc5b3f1f74e532118d1 GIT binary patch literal 7833 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%0D$|Wo~F9F|J-H{ofp3aXTMzc;rT$i=tb|(o}EvR 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink.png new file mode 100644 index 0000000000000000000000000000000000000000..af78144be1851c196fffc4dd0e00ec452b6e56b7 GIT binary patch literal 6876 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 Hu0mjf(-{=; literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink_process.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/flink_process.png new file mode 100644 index 0000000000000000000000000000000000000000..af78144be1851c196fffc4dd0e00ec452b6e56b7 GIT binary patch literal 6876 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hadoop.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hadoop.png new file mode 100644 index 0000000000000000000000000000000000000000..0334fc7d78e460356f2f8abef7f78550da305786 GIT binary patch literal 6408 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 CC4EW& literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6e21427dd71bcbaeda4832cfad07db0471f2e9 GIT binary patch literal 5289 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase_column_family.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hbase_column_family.png new file mode 100644 index 0000000000000000000000000000000000000000..0182ec3e0f21ec84d1ca938f143552f45534ad73 GIT binary patch literal 5553 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 S?)&p=Sx?Id`Ap+R#Qy*lzKq8J literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hdfs_path.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hdfs_path.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4e50416c3ed0adde30f2e4ee31b871fc438e87 GIT binary patch literal 6613 zcmaJ`by!sE)*l+_R7xBv2?r+W7^HFN5&>Zth7x9A7^HRRPyq>PM5GZo(%n*`bcld} zC?Z{g7<}VB$NSws?sNC^?EUWd-D~|;uU)amhC0j)d<*~pfLTvh)08|Wl6Mk4E%~^b zxFk#-c!^p!h-P?aq92-o1*kjW9kD(^AVIXh>P)Fu)GWe27<^c!oiAADDa<6h%AlZE@=Qg@l}Pkbl#%iC^ON?2N#hAFG7tp?1sO0@1_}j{DL_5}I3n5~g!2*pgP@7^ z!4TZMh;Dcs@HZmb5${V>5h82)w+WtJ1_u8I#`*l?D6-3B{Lx-A5NWWCr{{0G{zdIW zG{yeE8vm8r$2`CbD`SfF!TS<0|6wNk?tcsVO-R;8(TLzi4hq^s6OZxr#Nvp0 znkqu%E7DGGPKxqixB^%X0Rw?C&JYkBi*W+U%VNQ-?z}wKT3F98!G!BFPBioHE`yXD!|KwHFAYjo% zJi#1~_xO_q#;$lG-p3X11=P^^9d!kuxB(jDhWouJ@jFm|+pUQuxZS}zX%q0Cz<+sK z(e1x!fpx-Q;aCU=28F>va7P6gNC69nfgI5YM`vd_d3hKZBlHiy(|>sI?@T4HkS+20 zqmZI3%+XmM426T7p$I4lfrZ0Cj&e|W5LN+;LBkYaaxgetNQSJU%0D$|Wo~F9F|J-H{ofp3aXTMzc;rT$i=tb|(o}EvR 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive.png new file mode 100644 index 0000000000000000000000000000000000000000..227f5b3a31bffe487c0db9b6b310d7ed818e0a6a GIT binary patch literal 7791 zcmbVxXH*m4*7s0D@1lejI%t3dLhlfIl_H3=0HJq+M4F*@q$vm@AV^b+2#7T4y-F1X zk)}v5B1Q0x_ul_~-w)4vKD@Km%$zy1_iyjB+w8L@-pD|cngUD#006bN7Sb4hPsN`& zGE)3?Ep?d(e`CR@TVPDQoiKqYKQy4?=xvXNXnUfZ(Z*<$;{)FTv^)S1VO>ovFc$iH zvJT#!BB;MKB3Mr!JU0NyD`9<54(@0S#2)SJ>ZQQF*ZhGS;_9ftZ7!h?)AvzBySQov z`JqjM3``w@+#O^bxs?p3sfF~M*f?z#8y!>Uc3f%v~mBo+$PK$Cw{zZauSK$7) zQWp9~5H)WIxQvX9C`?RLOiUP0A?*La3xmQ6 zd-?PHgMdW)JNUW!U|hYuAb$~2_TB*)1#Y~i|6YQpkG}qYfxZ0yV<^1IM6oCzQMd?9 z)YJ3ty8cD&k1PCWlG<8Al93;Iil*GAUR&lT?! zln2t=A;1&uh0#VTaO2;IIJ!E@O2ZH`FewRfVVHvxTo{3Na1@r7M5Bad5RTGlN4Nw` z28Q|v=YQf?5rc^%)K!t{FjW;eTwPj5QbJur1)%~{fvZa3vH#)K_VUM|yd2Q~$aclc z{tvI(|H>Vk0wWi1jJLmww+}>3?XTBmAcFcR2UoAZlR|$T_3w2f z(SEM?(T*B^-ky+uSz6Zhf6xMrmXHxgNFs!#W#H1n2$ZyhFiK3yNf<6;FD@g7kd}fW z;N1V=cl`ggpeSA`(ZAvH|Afy!Q}~$tJN$1l;2-{*PG~QD4*B7egwUH{O z*!k@|5N5&jdY`xc+^cPBq2S3{DWPDKlMAI!}f`0h14XIu2gq|enBpI!#+{W16%^fmf=_idKc#fAZ|6D)m)p9B%n*>o;rJl**vUOAOr z!`UaA9NWEXtG5A|+>7f#x^Jf-A8jdtm-OFGizPMzH-p8KxyAF1VnV@&{h*r}T4s|P z)5J#5!k?xgi{}+DQ@|D22{Ye?50@wRWDdF+*MH91X1&a^v3z1-Prf->`sj7r`46$3 zy2(Mrq#n;xJq<7zZ2VpC$IQE-Zkk70FU=p%2Wbp+H$2l?e>Q&%7WVr<^OMKh z5yz{uZ&_nXf2=ryx8Y~&S+>JpUcIhO7?$07{qe)YhntJd?}nvUlSoa=vl|LLGXO~3 zLSq^2`Lwz1K*NI9t)o%7>X7{o(An&t%U`x<7keMj73C%AZyfptqp#Zt=7*h^w;c4c zimhjwfFV0gTU8n+ZwzU(uEgHV4!Z)$k7Td*7X!Zxcs1|v|M`9N=!{+e7_YOnVd8cG!rIze;|Qxx&@(3U?U~6&uD9aRIXcUl z|J`T5M0kLEb!)@x4_D_K0{m5=!2&i;KN{uNy-|YJ8p?j>o25hFCyLe+ZdIjTo-B;H zJbCK;{F4u>9@9MW2(b(Q#kbl$0>S^2b&tQ zY{Tw`;Z5Bl8Cf@`c(E-uCVzB8Y_Dc~dR~+JhgUL#a^>x&L|kcQrM_3ofrdlSZsRIV zS3ujJt6(CImN(|Mq0@k4!zU;4-=uT|{7PR#6+shW>yOQoB*F678ib_eU^s|F(EatB z7(J;)jCwVBXV|ov`GEhJf`EykLj4)Eea(9`@#)(6vYWoXzDRIHohEGnxpK114kHWJ z($aEmDR}R3z|7q~sAQ-8COfUg9IbHo7CSrph5#?CLHC8nwzs`7Ipty)YIG z*d4+G_RCbkpaS9M?b^eYL{Wni#l9xIeb)PV9%ZgRQnGm-cJAs=B>g)19Qk!dlcd0x zK@3e$dbU}bpX6k;6CTsC(DeO9;@W^ferD^*ylz$NiKTzwg)4I|)vNb}rm4=upY_B? z92NV5n}o7Y*#kKt3V5H!6srx3HZBw1b$W`X>YtKtJKMZ!ori!%%cAI9_?@{EQda~ufy`z3S2m3i``Q;#@uD+|XJt-AE37J2bO{$aw-g};vT zH|5dU$$~fQ$B}@FvR_hOpSvICJ3wpuxk-I)y{?Jat{oCNyt>#MdjIXYyL?v=W~&Go zCnis;wVN1+xiGhI?aqj{op!eL<(<#m^JeiX>RhR8n0I^dXwatJxRdae439`uO!!)- z2{!LY$eWOiQn)U4LZ`B_l2i}({_R_n-KH&(Pj0U&4{Zu7&j6m~-eCs!PBt%ml{oyU zD>{G=SHVP)rZQ;#l<`K4k5Q9f2~-j|sEpFdwkK^Ahtnf7FQe4$I^ZDZXTC9TP23LN zV8eTiq*{Za79IeQ|23P=7wE1B1aW{gq|YUH(m-wm_`2J?Cs};M|E1ONhFSLV?ylDn ziz4mBl6|7^TG1oLbTe~nvnThwWIhG&wW1dTW&`MvT`waT=5zqlCktVnYcD zj^`1&OG?*5o9aP_YU+K&DGFlq!M&FuV}Ulz**htXs*w>=TNrwU@&ObIHc{&HzJ2V; zf%Qv4Tl)6}uKRuP93jR693sE?vaF1m<2;Ut3IMtsa+8EtG%OozR-6}fnkxb*VBP!M zGyhTEmZVi5sz#dpy@hwx^2g(9F`Q`zDm?nxFqNwJ8(<>izG8*zcCT4*T4qVK7lpT~ zTZ~0M{63U->4dg1IH)z%QXb&r`bJwPyVudJX}cdAAg-nDN91a^D*9rbV;aVLG`4)g z^f>3yk<^l@v7BL827~UlY;|J7l$lPoRf~OYhE@r9yvx=+y+P}q;waY9mR zv06K5SzZope8Hz-239(~xJy#uI{Yr}Ta} zSVerVI}-rrUFT|0elvHS2l~@^MijxJPF-7Fi<SJbjaSoV$%eP`W&uK{Kg8(<^;GtxBHDRjLK*4wm1%lPxhEn4%CURV$NA8M z`RSK|ezl|lYX$sAjZ~TG<=1pZvTkMK3DC90#P%IP z{>)kj<|T@>;+5yMd+tG@`itxHNdiUB{KCS>b@JgNCQ^<%Hc(XoM31TdD&? z3Dzo`qmFo!d3fH^y%HU^GFYTNH*T@k42#Xy@@}Ki2R$N8bwT2YIC)_BA{3ls6doz2 zZ*ccB!%I@Pbh1Iy>JL{z{#jY8z2+u7^gl_FxQ+7C=jrVC=TNnm6BapId@0cxsvkwJ0TwGVrTAJnYf4xO-LwBh-GW7U3byD``;uIu-D$N=#?)bI-QPMPxh= z2e}d`2r&sym>u;8kBp4;$}==#V63(}vc<~Jp(fp)-W4Zi^nrz`d4h0`)Wp0ZTr5ec zIPnq5_h|`DfR-&K7x35g=o`BgX>xlgQ+c1MN3BF_yoO)3R8T?@7Z>eAkF=B~J)12k zBGe*(`=l?3yzWZh7Yxy@Nur`CU@kwfU>=l@q2+x3L2eaD%S#jOP6Wu{5H^AZ|2hd{ zE-p9ykB{d}RA1f>(Xka*d@c9HwIWlWu5el#JPoAvK5Rj=c@UF;sBWbGs-*~z8*?b> zBqf}vG395dFELUo6#H~+E*hWmQwWO;-2BmvT)srAR8WpkaMvpjMu^=@PU1n9k@J%( zNGaD^2U1g>x=KgMv&u-4DoQUAT5HYs+oLyC!F7U3|ZQ1!b~V|EISarOS&` zj()lTp#LKIfh>&RkUSQr>!K~h$1uhIR!i!$Pvlo{!}yjBg)$21pja&3s6nxgv9#n8 z?{}V~^&}tT5hxppB@fuTScz7bofWv*!PXuvIA=U-BM~(-x2#TY%hlJdcswz=52^uj zHKHf%*utgKnLP zN*(ew{)w@0yQJU4W*(?J~JP6{@69D|@D2c@LbQogzuPJBQ1eI@M_Qm0JcYx(}*x=I} zAMPD84~=L;-#xMgL5=jP`&5q}%W^nGf7Pd%HDVnW#9^P9YBH!GzX=ZLVF%yzamanT zKt|TL^^?+5k`+exGc&Hp_vo3Hw@Ho`(RQx>!tdK8Y{l1{8GeG}J?YEuKMvY}iEAqu zao4AA^a%cem=&^kD~S|SMrjyNw$Ht{?<|HZQ5XN5d?x2I92d`lW2-bxGW@1h&4v1&mTE;_52zW}TV+<5iYF~;+ zWoOfE5T{qXtkj9RjG7`?-PLmW=tNyA#CyJ`Mv~Cl&lVY9Gf&Q-0np9Td?D;7=3r;C z)pJZ}bRBK}35A5-X-ajR*JdnxF!@H9_z1{wns1Fbv9l-ZzGl*+EOfNKhD~2Y7aAs& z;D&GEvTg^0183MUY?=$+X$f$oNY>J3%onQ})b1nCu{Yb*)Bag91CooT*3xLJ{G z>Q9##E-lVFam$ihH~+ewvfTI8f^oWiu28W@!cav|6@!m3`;$ZPIX$S}|L zp5D+Dc*h*lgm0cl{GS`GhNnr_t8Dsbl?<;$deI*a0EDpCD>aG8Ie=SN-N>y(B^TpY}MT@M7eYxU`!Qslt}4hKT( zKsP4Dh@4y|cG%&^e#v;!w%QeC4FU70IvD`*Wqa}6M_P07djmhN&93Rs^f%%h zDG0Du{^1Sd!8+k$j43J@4{FM!O{q0ngbE|+JIN+C(kF&z$b!t> z5xEVVdJMnGCVSa9mw1SQEbb+>c%fyT@0o9E7+l7&+0N*sbStI0M8do3j2%({?Xw8K z+Y$aKe$@A)&i%M;Ssq-}X2+trK{1i|0decV?PfmBFYjz8-HqRpme0gaKOhk={kCS| zQ*Qj+HM+=mKC+jv3)vF0fk?}U0#^dq)A(OV^IKM$XEeU7S|ac)<9Vt=Fr8mwx&6dt zMDPy@0#YSFNcuSRLZZv4xmn<#<#$Ttonl9I^?Z42z27N}>C&K+wl09oJcVolW?oOn zL2E0S7{y9sJ`vkrUea?>D9O?}qI{qlsBk8%cbz~nbXz(xo;1O&K?0l+J@XqpyVJ@c zy6gta42_D?LPu9#hg=skVq@)1rFBEALTt z&Wk|^8q2sB&_g@ezk3GwS4QuP%!k<80t|>3sOS3;g?`?q! z$V&65vr^aP*D)mxiK`F9jOksNIfjtd@D3%*7@?b!=~R_^$Bcm1T@pJrRx=4>=cjz_ zZjt>nirK3-Y3=t?#V9C-gdecpOnFE6l`C!U1?>11m8%MQJl`^7z?W7*wa3x5TaQb)w%4Fa<-Ui6WMg9e?>D`KCo3|i3!jzKy&28=Pz#w75zl~m zWR*4@yYR*d@kcqnQUD3w6faSoQ`Uc)9x$5NcSrcv&1(o#gelg(bTKG5X(b`!dlc;^ z)0};0-pJ{-puTbBl;UK<>#<%VBh-&mYmn6P%iF>18mDYdx)Lc*0-1Qm=$m&IeE~98 z-%pjlcxDlh^yMgJA`1477jHua1){ORs}evg@@B4Z<0%+56aF-t9{4_MZ>mSRd6hFv zO$f2Sdku@SUO76Aup}hoT2nA!;H83%H$T^AU+X{wI?;C4jU<@g_@SMQAx_K&#cMnx zNKFrD9lfdD^K$4mP{#94f{z?|AC~$&Kx}7zAY4;Jj@Fu?JMz0ptkQ&e3`jFo?8iAf zHpS^ow$q;fxq;5EezCyZJk-@H zDm|Nrvm7GfgQlxuD9KI}UlVTITsMGh)(6vcXH?rPCJtQ@cbsX|%yVtMc?F;oS&73e zK1(w~SBL=@-)GfhEe(In z%%&}HfN%^lm-RHo)^7WdJU!~YsHw_oqIU`+KtQQi=*Z&9ZV(~e$MmM368;PK+yZJX zl@9%kn%aK;WS<2qvzOnqwf*8j-91#Zn^)twh) zTvd9eQC5^Ox8m{i#-Gjm+WS0x?CBOfmrt|*oMjpb{FWP*_W4x|si2b2Q(#ec8#JbS z40?XjD9XLspVe`F!uF%7Cf(*>sQHeFm0oY5Xo(vC3G}5%n6G(jzBJQFwT1)AwA1vr ur{l_YVF?FCPRg@h7M_#_ol8R;0pOeLqLgdek@EK!u(rAZvP#u1;{O1jt^48t literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column.png new file mode 100644 index 0000000000000000000000000000000000000000..35fbe482343d208b02b181dd1d002fbda72b7286 GIT binary patch literal 6252 zcmbVQcT`j9w#R@JQHTgcnuaDVB(wmDfB^y$A@mZegb*N<1W2SRN)r%*p-Pb=N>jRs zfD}hSI*ihbg(4zF2Bb)Fd~xo~eeaLE?jP^0bYNUqIl4P@qt7ZU3ZEb5sdM}dlD^)c=ynNUZNHY z3u_3;8b`xnO^^hN9~A$K2O8q%&qTAZXk7~N#}j;rG_V`dlSI~**m%({0VcU?OW47& zN?3n=q8G_1ERbjwW@=3c^C2MIB`)cJwL*|g0e(ap9vtH5OQs@2v?czMi)7NjwqX+B zzgTEK+7kaV3WqfZ>r(=WU^rA=k)W&w2Wudp%Id0W2m}PIqNJ<|Q__Sft12q1Bh{3U zDk|W=FA1i$Kz9$MCEDf}2aW1IeAxH^ZH+>4$@@%7)F}-7a6TxRR(}`j(?0Rzz1=kh%;%le=hrvx zf6JqOT`!8|23;{ywxDx)r$4q3e}i8C`tF4Wd9nt-Q-aNHc+wvCSQ$sp_ZBTNj9Uyk zs1SL0u=d5RhcC)3ieKMZ+=2Dk0WvP9Xoc^trBK@T4OdoIso4888rJ3K&vIq(c`km$ zmhZb}n@p&){H32q)GQvK3gLn$o88wX%!zLS2JD@hA8zdBC5P+9CwpsEzm5)aaxiC; z2+0)|m>1RbN7+_7NQdWg5Ewq4t8Sw z$1&=NI*3w=`P}Gn;Q5?!IlJddfkeKGRW_m;iuz&;;~?kcKw_Vo{J_tmyY}q^YM~u0aGv|Jeq8n@=4=SXx+!kCd8CYvqvPD4{_|Y

bId|R~!@l@c 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 W=_bf_QP8jRe~f`Cx=PPA>VE*=7b}AR literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_column_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..c08f4b4200c9ae81fcd79e2eb0c15477bbdfa199 GIT binary patch literal 8560 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_db.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_db.png new file mode 100644 index 0000000000000000000000000000000000000000..76b5c3f8c5f940625ad50ea9910a37c64d03043b GIT binary patch literal 7713 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_process_execution.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_process_execution.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1be806184247bfa7f53310827b3dfc7cf39cb1 GIT binary patch literal 9730 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 KSj`he$o~OoSgc|I literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_storagedesc.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/hive_storagedesc.png new file mode 100644 index 0000000000000000000000000000000000000000..c3930a43f46902ac3af225e055f2e231ba8f8582 GIT binary patch literal 7190 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/impala_column_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/impala_column_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef403bc4d288ca876962c8685cf1bf0713296fb GIT binary patch literal 6541 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e564f0fa93c458869909159244163ef812554c GIT binary patch literal 4038 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_group.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_group.png new file mode 100644 index 0000000000000000000000000000000000000000..1bc9dadfc270c4cfb434b8f7e122ce7f8aa2cef9 GIT binary patch literal 4181 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_consumer_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..80248e9f078d6ab5793f418eac145b26b07fa798 GIT binary patch literal 5299 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 FV1is%3T*%Y literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_producer.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/kafka_producer.png new file mode 100644 index 0000000000000000000000000000000000000000..372cff48f1d549070918e846eeceb764ac3185fe GIT binary patch literal 3737 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 Hu0mjfn+_WS literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone.png new file mode 100644 index 0000000000000000000000000000000000000000..f498c2d149acd99605ab0dd739028304b8bba364 GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_bucket.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0d5d159efd44b5e679f9655841bd4165201f0d GIT binary patch literal 4378 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 Ue{qQXuK)l507*qoM6N<$g5y?bp#T5? literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_key.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_key.png new file mode 100644 index 0000000000000000000000000000000000000000..4dba49172dfb4a4848d521013cf614f19aed0a73 GIT binary patch literal 4406 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 wHBVPb0W0HIoFHq)$07*qoM6N<$f?Q*6J^%m! literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_volume.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/ozone_volume.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4326b22a3a850018d6959fcd07ce680eccc3b0 GIT binary patch literal 3658 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms.png new file mode 100644 index 0000000000000000000000000000000000000000..84f20bae4faa6a6b03ecf09bfc9a2402c4432c8a GIT binary patch literal 3541 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_column.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_column.png new file mode 100644 index 0000000000000000000000000000000000000000..200a28821617b06597bfa6c75e60a0609161ee17 GIT binary patch literal 4016 zcmaJ^dpMK-`=2#AMJo|0t(lN^v@v5E<}h-IDI%E}Mmv}}7ILbVLykE_p;8v9wVWUzf|~v zMCjk7T1ZqtVql0s>+4|+4R=E@C^R04!XwdoaI`)Fiy~k!klz7v{`Mu_5uyHkK9_(*hJ}S8!t@Xvo*xozXlRH;VUQRMT&w{Pj$rd?;c#}a z#vco0MlhYnnnPK;nq2#+qVhp)yTusC=B+tI3`m<_>!#}pTZc7)8Khp-rI zK7~w#ir*l7m_7tN3Tucm!0EwJbYCzV6g z3`{Mt7UpL9XtV_$k40IS;V}B97>ofHjY9pwQrN+K8k^4epi^V^BVDx;PCuIu?cX!C;`j@jm~R!M{6Id?Jp7`-c!g zU(eeYkHTQ#z8D+^j$>f4aBl+)9?mdi&}n*xdIow}EEFlGh+J)+|7xZ`N8%1$75^Cx z@#df5Vz9*%#S@PXNN(^m03g>$A)8Xe`)3Zxq;^|xs!*T}ZvkH;*{lJ^f&d+!W{db~gQVD=YG_l+Qj*ZX;R z>g94zw(bGYz5+FNgM3XNH!vx(#9;7y%k13S&^+%o=UV&qh=U#LYxY>hyxg|XG`X&( ziR-?FopiB*Qe;|w`?`Eh(%$nuC#OfRp6TCPl-;QK<+=4C^sN_LmRwHCEbfUwppjKU z0-(T5(f{mY=Unpbke%SnD`QbA8KlBa2L}t3np1Wn6l{E2QvGP4tMvQ3C!pYaQ*4hP z2f@!PE?VN`69ise%K%V-YoRXV>e76ycs7yAy@xMTSkzN)L`ay(`=x z?b&?6xO!*=ey(YAY}`YgfSEodHIZbhaT#Z66@F?_1OZzWw9txYKvOpc)CVi(va(4{ z&C|(BTmow>gJfzpolLG-Irdt*$GfJmzA_u%V z;HgnF^rhLXHrYPzz=2B7L-W7tLZ(~4FHK*3zD7!cd|~6+bFzeUz?|HyiWyQ*rp08MnpdoAma! ziJ$ZDtQOU-iRdvRE~|-W@jUy?n1Hb?#d!m1+ z2!7QHGez$dg>qfMgckJI*2c?+)?9ErT*DbwS47%9fl+o?Z>&PfEO^we?YUtS+1}_% zD~!5u8YFvGd*|i&O}`?JOJso3tF4rKJ`1b&|1h%74_7;zljD5GnW9`%Z`}AK_cg@P z9h5(p;XnkWSJL^yDTxf*hs$%r?eVfWjb4rG66OR29U@8HGHLu3ux)9x4 z*$XDpo7yVe^e5w+&Z;Y~oGp}he@NxMHJTnD~b1wQU+!F@A-r3yuGt)iSZ;*ISca%G7>F9m>9yN*}4#FIrXa|%M_v(Q_o&T8kb93%rJDb9&w$6<}mr?r&h zeV_|2=ghM$0qcT#Z?t_Y_T<7n3H_HR8CeQg&8p}MU^W1Sy3U-FUz*Xt8a zi6X|Q2Emaxz7a+D7V_X(KMdMuYzBO{70avN*K!Q46#X_D>MWtrpi zhM=~^^7S%38xp#xT4fj=B6Y!w>s2dkFIAn&FvhRlh!k*xMh0&b-@25YRpj)Za@5|& zaO?I9nE8>uz`$&sXPAcY`;`Jf-iZu=kXT~!ECZkG_0VMgRVsnYTyycfRw~Q|Hjow4 zK@r*Bdh%tI5b=BhaAQr!2bG>WP~3moBRYE9?xzM;UTi)X*G-)UR4g9Y1`Ns%AQrvv zo6rQW+imY$v7UFOVO$e@rL1qgT(valW$HDtbT{r{rgUpB)lHVsU!MtmVJa*;ZxVH| z{LsC=53de4L|c>zIYakVV@~GE0)ywj?tA@dcEBL$U7P&yS{$C+LmI_nfUPHv zwvl}h`<_EPH3MK*jbedAEt-dv`jivK??tctP_+vvm6&1&1lUX$;J0_!ZnHkj#KtvH zDGS9pIiyR%vIkKj{d{dZsLaf{ckO2a2lk#(CvL1f+|al4yh9O7Pfrh_tdeh2oM#Nm zS8RQ9i^RWT$1^*fdn&Zxx${Eg4&Vl-`icz(vLRWT>uKe}mHy5pk?Nf` zVQrBOAF_NUjs#+KanIM&?>2pM@GXshhk=t!G!CNaBKaTh%{l1{jCxCDcKmTnTb@1r#=&rkE}Ij_&-&t9}?kM%t_ zOZ@41@*bn+jZ8F0I_|ECh1oK*eSa(oREizVWjVn*#h))|_T|72aj;W}m~RV=Z1ndZ z--2(_T26G?3*(H>pCtq;p7Iz$RU{YakjOn`AJ=w%yy*BoYmBUIFG2NAD*#m2@v{-t zx-@=@#ImU%L@xU8(Ac8X>|>z-Ff^B1ubv#oV;Gdoy}4(VN{W&3zWZFozxz^T8lns( z@#IPtv1|x7`cWl@qSSY#M+p5)b?Ff7)Q^$s@W}CeC20eHcQr`oyXI(emLNRL%mG}O z{_E3QbLuh7P;A;R#{*YErMg2KT(d$qS~QOic`X+eWw$$pMZ8c8^0lzXs)VFKW5I6G zOH(dWbGdFWC6(2MN$bminj-0q{^d7&NYEq2?APQPre-Bcsj+JAToHdpR&%l2+DlnV zS(T~MI{V(TS>f}bL-MAl?UH-DJYGR@HRny+Scj8i^7Qk*OX1GITuNhWF_U1G5&PrY=Lzj_*KvMo`1Km8y~%RpQN0qS`1_i} zo3oW4P`w`Zs+2tQ+d13Q<2Aa6@ey`C-5(aU)7Dbn;3H<4$?CKV9+Y-tHMcsPu2IKdMpXuu=8{W!YOYy?y!sm+ zsZIx$A>AQR&+fxJ>e4qC`Ysox-ePAd&uMGAmV5Qq)6_e=dFmGvl}h26la<@Hhn>jj zG70|#xs&NoNVrT4tiOMMYyHjw!i`5f(U)11!O)9JPg3HNw|$M=c>BKMz{Dk3tZ`K^ zM0WRdz^413oZOU5t^}2H2c&jLgPzLR$H4Wzo4r#SMo5ExG`({?xJlhe4K$U=pSF7w z96CLl?A{H{EWF&%>`8H#J~d}Iqq@~9Drm=6(8=n2rDwDxQs-sqSR)<9c+gixE&EHu z38n?0=}Eh@WYLMqtPYT?dmTg1ED;rMh1c#EXl+m|)>O&GG*0oUExeZUEP)QR`dWb^ zYf`Ii`$f)wZhQ@a)>pDb3Qn8Qr$5i0!np=|iThuRrLZ@{{s!u{4%eoKSPF1fLk|AEH zZz4HtQ9)(WH$=q4$x5YZ`Y>qfru*TF6&CfU3~kbx2sE`qF1Wf|rIlTD%&smx@iK6# zS}IRJ0Cb<0>NsG21MmLm;IBhXm0N3Ki_%v*kx5?hbz@PlAfFadg45{}k%cla7uC#1 z$;NLwQ;HTIXz*Lznw+;qbZ%dA$uXmA*Q2g!t>{)fM?_a&i?#%x9>3?h*;j7j!~kcs rA)|RVKcmzj10N$-VtaW-$qTUc>oHYa#!ZLSe`tz@J^8wsSKR*r89C|u literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_db.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_db.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1d1690f8db4de14795febd2190ad47a82f8d34 GIT binary patch literal 5656 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 a4&Y^Db`456_3E#?S_7R+s46YTi2nmE_cs;* literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/rdbms_table.png new file mode 100644 index 0000000000000000000000000000000000000000..e49fc68f848e4646372725244d112234a9df1848 GIT binary patch literal 4165 zcmaJ^c{o)28y`$|63U)2)3s&H7-PmvmKnxavhRDwEDXkIjErTH%C)pvN*EPoucU}u z3MqReWlQ9u1!XG<>HfyOxBL73ai8CLo^!tM`<{3CyxVi0lkV(jEhVlj4gdh8Y;6dx z{4o zlx`ExqPoR9x|8F>$ruXQ+ze#G!SWq2sB995!-$BC#&S%-fBMDp>1{C#4Ej@r9c~K# z3zWBmGsu$3qJoU{QBbl0(g=jc=o_F6kr<2~2mv=RhQWN8m(Farz*1A`-A2n3X`0gaA}WRp11$Y{t< z4+Ls7nMIFc)0vT=ZI7g2W(?aD%t!iH3XCWRhkqPLM*m$Xe#u}QQWVTU9}Z(Mw)6T^ zJDTlE{V$Av)sA+Li=x6@snN_B7Mb4<8sw)jzjpsW(6%BU4c3W8=Qo8EL12<&7}Q9% zEx{Dbf1^*KQ?SNxBnFN)GK9j(Gy^D-N~S=KQB)EXgQOT!DF#Mx44m}S&%fClTA~nW zyp^Sur3K2sz{=Pd3AeH^LZI*n1R7}ohyS#-jf`fKBFWUBvFZHSf7@F8Ut6pti%McM zS?)|`#Lp>k4rQ{L(V@&Jkfr5z*D)Y%2NIbcxh>S$Zq#3S6R0fu5h{hqVlqH~RvJtH z7ZhYNl0t=}Nl-KeZUjY=NN}hz4Yf_74UxuZBsCa=2LEkO`JW2@HK}|FKa;4RfUqdT zV45);frQc!MhK`86^VofqY=hXDuzlX8Db3iK9OJ;A0ljfc>ZUYev0@Lx=sGG8hqxT z<)TLNH;TnyogA&{G5|o*!cFAmg|oedI$U>fRj536x6YkkdYapy&-Mv-=G$TdBt4l@$-73UU_<1bi z-1u*YErA*N6RXyXVPC81E>3j`Ugfb{FB+>;Mp}qLpOh8@6yk@kY&FkI#~-F8cs0ZZ z%m!TCOcF`fuIbz0bCi{mCVz!ZF0vQsEA@ahy!m1`M5XuWpFYTtXx``;S~2n4z9N8&E<@s?)UERPT^{_-^G1ALz=kwcJ34|qH4@wIUEnl zD^}n#YG>t++EFndar7isAuaH zlls0%J>H|;$q&|b!Xk#Ad8Ob2O-qg1Z$wSb#^OO=jW-{EuaFDP?LD$c+xl1`+sR9~ zbX(l>F%cy;({{JdxnNa+cn0Ty8arV)&$~tdp~k|4hsL~zgxVPGloT{`!hdx!W_~Dr zb$+rxZzVv zD{`2go}L=HP0s(6^lhn_^Yx?8_qB96Ezh~F0~fx48=DtEl(YXvSE`_%qNL-=s@ z%X-;3$}y7$=9{zTZx@&J{CjDJcl)x*(V8?kKViFXdP$1@M!Bd zoFaI%-08}bsi`S(F^^|Oh;Qg!q_{Yr^}>#G>LGSl>JWszHmVx|nc1M(8U+iv_DlCQ zf60tli@WyRJ4+cPA`FlPTv0badb%x%RdsE1IlWS1K=7ocQeyDrz~y8o`$Msd69F25 z1?OFCHEd+-oOV=6JZnMfla_*CL3X z&ETxe*oI;9DYoN1$rg;K<{=q4Pp*^?(-e?(h%kG;T*O9S=}mLeAtiTvL!{}Hl5ZG!6*$!@RPbgl+pm-1j(Iqb&-r<(kz8htonVLH%`6@{8d8 zR(nmfFIzbTu0vD%ASdkU`9USH(phcAh=DfHUFXYX#7qsT{$}U1`e6!XW-m#$S&nD@ z#?Z-yrOp;Coa`jDP307RVAncAj7kRvO;XyFSIO~@YM1jX(W1?xL)A8gh{2rewP_-$YUMq}j|JT`M((EDqE|`t|!CQ_16culT+sG51Atm;%Z^<3((F53)igAxvE{0K2|q;4Gh_e8Iga-Kzn2g zlLTxo-_H^$vKROwuyV&#_oYHiOi`%xl>~KP0f0OaS~o1 zU*C%cz4HhO(v7Y0wfqpJ(G4Ff=iWWiaaQeVLCwa#3p-sx2U4G)$Wgv)r?1C}A+=08 z8iV=}$LDj(oJ*RC;x~EI0jH6YCC!>*PnPxD;k8FEr22j(h&1zb3&XL2p=p0056RBG z2$0Iaz9`$H!jJ+^iaMSPw2{^Rz){Gaj=A_F829zl7>Yf2ap(zxB`s6o7a~~kbm3inI%aEguY*%?zpZjp#tiE)9SWR+c!o}ly=gfA0tzqnzcVAv5E`H5d#vMvUN#rkD`HT56vOqcHO(Z% zC&8BIPWL?(_k7og)e_TlATDHA@2=;6Mfxuq-F)heNG_7NODOV5R}7V@IPIFSH2KKm zjfT4Dfu8wl^Nx*}yp^g%(4Z12PGJ61XBMP5yL|9{MrJuY-v^J~)3ev&Dq?UsK&f0! z*wC$jh0II7xr|>jkMBGBP zFMHAHikWFtuFf%;DYY3gqGhjl zFTClV&d`?W){Xz5Z;!oE%Dn%>!{%Pg9+FHT6mGJiKihhl^Qysd_+X-~rn(4|B>Nf2>0TJ(h zpqG=AVX2jqZZjqrKKTcJTt5(qLq1n->rg-5|J^zzWmx)+$tHN&N8l{3Eu zjvLzUYV%Tid=l%@&{gl7Swy5sy8&DM#T92c=hQFlew zqrBHXmFLaz!b7?9b}71oew!LiG*RMKY+1v*FfoU7G*^Ff&JyTy_nh=&F3IG05Se!f z;wsv40IILweg#q&UTH9ihK#Cni+GX2;Smwq&uu@;%-%Aj?mr$=S68>My`y8=0hNVv zS^exzVrX=!mpsaH5iYH{;PAv=_c@|qYRyi1Vu!gT?mY&gN05s6G#YF40L#ETXb%l*xqX9={ng{THuXJkoC}bv z=%sP*ZlJ3+R9Xkhc*tA^6))63z5SouD-*XzB!-K7q&+^z;dueS%S+VDu+56=~#8 zcdMyZ?fbs3K%xCbW&n|a#GV<6662Y{s*p$|kP$E3{keN4V$^1M_wHRbm&?6~#bUqX zr?c+kW5y9b-rwEb{Uw!3efQ+alOt*)#Hfw%=FOXL_|HpzWXZx0OH8C!&z?PdO>Kg< zA<)~mZ@(=R3NOi`CfGW^eERh1D{2F@1%WJi8b`a3C~^Y*@WT(Y?AsT~qG9l&`||V8 zKmVR0M4Tc9ljr})qA9Qy`j#R_qy%Eu^@9I=N*2xHISY@kC_+R^AU45~ub^K6{)p5E zMTE!*gut0>jwcAra^CEJC?Z4>MBBhQa2(y<-ah%_i!YYQFe0%)OdjjHf<-o+PDe7P z#x0PwKH(t>S#R6|F?s%IA!~NgscyhKvuR# zj?iU&s06aIJ$i&K>q8@umF;bVP-T56L9`8=+YX`0`cN#8mF;bZ&}4n!7RXwk_C*-7 zK5z?UWqbP~3|Sv2fvjwAdju})19M@Jiurv09a#dkJB|{G#9UC<*av2T?(XhzUHdFq zv^%mv%KAVokPV#g9Ric}fmk3b+wUE+JZFET0MN1p;-KtPPM5zUi+hJ4WPQsPh{JNJzAFaO}j8F+kZ7^N!B-Qfvjx*)u1I=-;@Qivi( z;K2bc_4oGB7hHjZxH-W5d4+pR`9qClX*B@|DolGRiAR3bObp_E@wuguA zt}gn|PaYMYA0D4jPo|qv$z*Zc{^1cVt*%!*24bdkDn*%07xiW`;=PyG*R-{>N1W`X zCQ!GmPf{JQvOPR>cBDPek5A9&^z59brzVQqh6b{|Auw9~`dMU~KELS036-ZhC-?etENg&8}{_}z?LP2+Tm*@G_)fHV{UDF_wrbl^g zdTNq3ws&}2w@_`JogI{jSC2r_iMs4VC44nMKmWXztgjgZS=k;gI?^Qz#BnCw+}w)4 zTRXcVA0z>5^PAae8Xq0zpu4Lkd4QwSQ)&hE$oi_^!pipW(cM|f_1xa(DCfp3C+y0O zPU<5-o(ZSpsRao7navN7OYvo3RRQ!6`f={o&G(4fmyN$9BG#A+1_5x z^YnWH-%E~vR9s!((DvRwO^lAv`Q-&$rE?KrUtC@m$uTuCMp-3Sg!lYwX{A~9%gQtr0M5UMW4viR0Cq43su`z zKl9%&^%u&P0i+wByuCcR1wbWDj*SYr?PqBu^7%W??Ocdp8A0!Los;hEVz-1Gy_@ptzR zMbe(Ljx6#fTZuEaIIuj;0J)#XbJL<+ zA%UP8L9<_s6b5*F{=in~f93O{jK7bvos*n2{cxHq)?Ss_&vD1x+#{NundL-Xhv&7) ziAfq68TD*Sr_wYv^?)8ddQ91D=~%H4XQ|nv}ftP!aR=J1kGesWp6*O62BoJgfMVvI0ilbhDINdyvJzNh`(anQ=apAa! z>_Dke3zOd4*Gv6W*X?5Nz4m*6BEEX2;vc3C|M@56+5F_F&Q$;CvCvgO&^ z-J=x85plN^(8bko5My_Dhb}qSA_;{3J2;-1n4A=rsgH@LlBRKZ>-mq{KNZp_xG82rEbNcL9W(w*#Z{V5Q?%s4%to-RNH&l zLcr2=37_t7#zBn9$*E!-B7w;r85yCK)fHM^USch#z2kPR}psm*rLZ2bUXm zc+zj(vIOFmzw@?SzQCW!W5DEYB#znI-S?C@P>>xSH2%B0&qd1T&6_u1(hD*OOb#Zi z+;n5u%gKb51)@k7;!I$QEr??gKpyOaNpLJjLQJ}ZXt?5iKmb^mR5C?(g}dU4$9n`} z_&stJ$KwfMfw0Z7Sg9g`3B9nmKz`$d&&T=Xaej(I z93L5G>pfN+ts5@HA`7jaw*mYK%hmYrwqx*A@)S5$I6XTRK`AU!CgZ&>>gwv!GcX{E zBo81bR=%dMW{^hR|2F3xWb6-1IRa$O@s@ZdCsPkjAQ~%H?xKr6jS<$|{jea2#_elukw*=jXo zC8WCo$&*PZ;Lfqdf`!6y>y1@pV6Fz|aCabwHxCqJ>w2TSFV5td5$=m;NMyFJv@yUD zySmC1D$XC3`5l87B;rh#$YA~_9>?jI7=)9Cj90CU=!M~&Otq{qTwrf+uLxp0JGz|X z%E>CA$tq7LCnvPGx9jU7bYP-;d)(u7q2n)63daigPIn^s-eI{fgY!zqfkGT$1)1g~ zrX&y+$|A=(AW%Zf+er6}eaAT1M^No<5M(|&tbZXS6Dcx?_c)Wk^5Yva1hj1Gf%5qH zxQKJk&r6L_)yO0AGvkvSM|77+qax6cFe8Ij}B;$k zp}aDpkSE8aSy@>rT2BPdc&u&4sEbn&{hV7uCcC?{OQ=PpBH+3ZWSaud<6p#?u#`vp z#&a?R5hN>vC4m@WadEMj;L`!+0-|~3zq^9rR^TS!HgK(#?j}%@`0(=w{*0331_@_p z=ZcctIiBNgKxD)wiA0i>PKJr79gkh)!oq@*O6U+-bdS1JdU*~G_Bm_5BQosBA4%MB za&n&oUyMmC?hp%-eVNr)t;G~`EiGayqy`Ko60wk8KYjZ2YcVQ30blcA;*J|evQda5 z5cFoW8Wsiv1<*ydL^n5Hzb})D>I7lHP|AR1QG;8o^0DzT5nD+hMjB$7i%E2z$N6}Z z9`fXQ5)d;T9Upln1N)A%YZ`!cajggPL{N%|)d09t^}C@jd1GU(7~kOgflO(wxQm<= zT)1?3SVXI9t2N03fSWl%oWR;w>jqoKSNJQ=7_EwYa(^O2z+kSeuhI2YxuwBMpJf%I z7YH#~>SSYrSC*IQ@bIuq8QrkuSYKcFPJ#%MOEC`OBV@xR#KduCdyj*8eI?`g8(eD8 zT_Eahk~AHjx?O=|t^+5_&Bu~SPC$3PF@C=!PXXl(9v3whY)3FxUdi^>;*#MBLyt!w zx4*9k7*vobmn+X%I6>`XadO1Xm$a4*QT)8Byh<@)a2qPp?ltH*URJRt0OFbR8Ug4b za#c!jkE<%=ck~h?Cdwc>@VV70=LOdtw>g%0?q16$MFQa_i(nQR1WFUDtE(bl^uU$E zD5e6an5z>6@>Nq+5*J*HDk#4P{g}ZG`~jfY#Q_Zvud}4Cl@hCFzT?u2*e{oQpDHm{br*S5$s(v=U+-0eC0m zys#|FEm$C_{aQ0n!B;H~{@>f%qtnw9&whyaGMOG~H}Keft#2zMklS_tJ%xlM%VNJS zJPe{9JjUFV8|p#DZ8hQu6XsG26Q#%6(uDVqTx=%s(@_wyU~KLvxTgufCFk+5oBpU`R#9=I*$+ZRV&?q-b0L% zL#;RgIU`TtU2ub7axIuL!Fr5U38K~(^IA0V{e*>7zW1$v=|p^nXTRHG;JmfH=}kp2 z*;IKSHKc6U;X4aK%6gb~nB>{HIU3}@qMg&H2@9m^)*8ll8YF4WLeb-8yFaLWi~8AK@bP2eAQ&bN}#I{Re3*a z12V$(?CtLsv%#2PSRD{ljY*Jw-rU?Qx)tn?xT~|X)Jr{p=5&7l9@n0(+)Ox*hx*vi z;E-rJ5tb0g5a$vTF3d>|s>Fy@EZ(Ndim2ZGP_u*OOr}cd23R4q(l*ms5D+}FT}MR% zLDtXD&%ff6Xz6#QPESwW+L!k}f1(|fi6je^9`K}~V2MG)fL1c%ef@o+-#G7Pc_EQ? zl>;K8ulh<$T5fG^(Zh$+9-^VT55hxPiQt&y9a&z$WD5(aEQFgPaVuLE2@yZ31VWRV zb|os_hfF!*ANe_`(V=G=9g9KSZKF}>vRy~jKq3fP5Atlg5)J2lthq9@mq?e5&qI0xWCq#mjo+F?nQYflGh-EmtVc!|9f!465Q1oQ zAZ}q|-F=-&Q*%IPHLqU4d(jKDu=q>WvH;2;$cER-{zB&CGo4tcARbs4vR~P8InMS< zX$B_;6f5or+*Am*L2M_vS|~moX`gXwYDD6aArJ^wGZE5VT=}zV-XpQD5TC2{xXs;H z)FN=Q7zh+nH-?GE9WIXfIMvD= zIxqqF48%JiEG&i7W^pTSesFSfECTRhcDvFQVVUlBs@s^;6CQL4L{{5t?niaNyJBdwil+A$fe#tA_m@4kY^c&?t?{MJ=;2~yU}D;m%T z4fi51wef>qBDnL(@WNfl%W;C3?4XZ#A5l%V>!`bGXS!MsAYjy`y~!I1e56=%=ejP` zO(4j6wg`V9gHV+aaBHyR?qdaHdm}%8*-+mA2UV}hV6|RcR--(x=jsZJmQYi+>u9)I z2mi>H=s6hxt_l0;pFb6!TlW<%>XGd_8tz)E42QQnkGnnj(+&C}h1w@Mu)F z>u9;%&Gc2R7J*{vv(G-8qZZKe^&?R<;adcQW@NjLmI-81)>{OJW@WpMK(1i3vi|;| zS=p{55CU0Qf4|U*Y}XOkHMCaN-y5_f+jRs+AS>(d2U?ZwIs(6H&C2?=M$58YN8q=C zu(G~=!D8o23K)SC2(ljc&LfMq0%UtofwPKGZbXyM=U7_~lt@gHTdvOYYRknK8*6UfT?a9~Qd>xkrMVXUkV9;Rfw zjz|b(Wqq(PDcf}z527WktPc#v17{VH{j!d4@WL}0=qQ1RkRg>0LXh*7GLo|{hptGN&);n$34dq9y}g@O(v7C egS;#`2>cs-Vz=+Fc&2&)0000p$?_*VVUtIO`P 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/spark_table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/spark_table.png new file mode 100644 index 0000000000000000000000000000000000000000..1404026ae4dc50d29ab4e1f663e67c8d590bc2c4 GIT binary patch literal 5005 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 X9m*XkE4l*J00000NkvXXu0mjfP}8YJ literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop.png new file mode 100644 index 0000000000000000000000000000000000000000..359b77edf99bc3731ca002404ad0985e11769dd3 GIT binary patch literal 4081 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 Pzuyfprh0WcF4z7K*~;K$ literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop_process.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/sqoop_process.png new file mode 100644 index 0000000000000000000000000000000000000000..aae4d56092d4cb1ef89348eb09807c2598597666 GIT binary patch literal 6862 zcmaJ`c|25o+dng7U&l^S6WPOT7($aJ`@V#RY%_KSBfCZ@Bukc*B_!EzJC%LOPRN=N z$yO*rMDO%G_x-%@AJ6AKpU*kJ-?`59y{_-I{d0b?Mh2S93}+Ys0ASYEQa7QjNtByR zM?-mjN?H`6EPNylOOmNKffQixiwCYcc{|`?+Mf2#coV$6Q;<&|UI_pocU{daNtXJ0 zijLl%()NFJqys&P6f^)RT?r)GJG$dZFbBM|tCzCi_Ul$bn5&br;B{GjxIR%0@8YTz z?29)IHZXGxc6U^861<`UQwmh181TfC>|ueP9$tQmfy#pava3kh{}Iaw!v3W~a#t4o zHz`YfBbb`EFCHc$nSg)*=>U|px39AdLP0@629A_LBBdxAQhq^RB>O-q zFF&DwEU4rC9DQAhBv)@Q*dL4b4&MGGWkCwle}~{n)Yt!yVK2YG6GcgxOrSkc1|bcX z@$~!?*T1y=NGACIrSV_2{mg=hco`GCpSQoSBc&b$p?|=X-2MNK{wPw|C>r{@Qi@{l zq3-SI?}_&!X{##>Qocw#xjHFg;AjQ7yevuz?nppLq4ADRQW!bBy_5pl34?b+$ifxi z_W#)VZ+N&W3Z)5?kW-~k4C`Z|6sMf{7Cj*j`)9kyHb4r zjaC1Dv5IQGczcq!ubH>E$3Ih(t`{-;p?j$0k? z>v{|Cbj{b>6ZWr6E4uy{7LJY>3;~0YlS0WV$V;Ko3UX5R3K*1>ygUL4hr6^`l_H@;Li~r2q8!SBfPo{?QUs(dQc4z&MoT%!BQa8V1-zp@N&zL0LZby` zC=_M>G|&HOrhi0~4*j$J&uCCy{xe*7FUmyuQbvbE4V3}_-1FM%SIq)vzhrCPntQ{2 zSJ&*asDkr--_%a*ET|cLT;BGs%T!kqE*pZ7=-+}+=WhI!xjET#-8QJ3DK#fsU}P|1Vy23ao>EWfA>C?1Umj-u z1`>sYGA1j-MTL%5?7 z_Qd;-z)1=C*u2gLNka zEn73rv`XGrQDf(^<_A18I7`-adgd(AfW2^2(wlnJ#-+?WN#Mul7nTk+r|vL(MrZJauQ}+)$#ko7TUV6R!;N+zhpE zIoZFld$4djv(IT2ad`an_9>!a&iDSypPw^_>ZWXO1al1k{yrcx6tEEH9Ded+s_cPe zMPrB3ubs}%{gQu`?X}^Kf37~wJRg48{_FI3`*rxU^0Quz?Q=n^*#!La(D{?Y<-{4k zQSQ~vC#|PP178+e7v@Og`c^lB4z3@BJy9GfpZa?XBFz1)}a_iM*bt?!=E3n&6d*11(q4Ezids=UAZ|Bvm_YEU+ zK0N|f&b|~LtxuWfQVdmGD_V{=a%m_15RDBB;USZg=GSe~PTtheL4iez)(Cb>C?|Fw zp!fX7q$ISr`t&xzGi-mxd1irCX$LE3rMgbBfp{8zY#Ecg}yx=JR~W_J`eL zN-(bBKUa8myEqJSGOZ+D+tI~lq1JM?Va`_>OKt-nu?<55cAdxhp_7-<~{-(wH+ z{np@wlLr(kKb5*BNQ$zo%6mx-%igcQ)-%Ot^_+xeG5NIlUHINu7!P$M4(UFU#<$gW ze+k)cb`C%Nxf<_xm#8wk6r3~qIZ&l?RQ?|8`FUzRefZJ6TY;+(T3_>=&YI=cs+UG* zb@qytKHOosXF83Y?qqTH$l=>tdzMH*@m7A5hk?ms7kG(;%ooq3IdI^erqiR%$KjvY zaR~SCgTd=%jiRD5Gh;ai5hkx zU0?5vbc2&ZnQd1ZyRIASFtKFcIV=$p>5Ano3YZTP9WOSr<~w}VRi`vyc;&=w;OTOG z^cGbm+tnCU8%KW-u4<&9eEHcXBlfwro(gpp!|2_wsikUSt2kEPQnA<3*%KoG|G#kKL zO3pUqbJ`PH$$X7Hb2xUVb8JQ)cKiYw>?-X!apR} z=}K$bB;mvC1w^YHQW*uY3?NmvBWjSNPvTU&zp93M`MIT@&Qf99PpK4XQBM-8v+;No z^S7P-_ukIA$+Ve|yX~5fw_exL=tlKMl!CmrjPZ+@NA5evy(G=1rJb@_?%c@Eii(PB z2svrnrVM3WEfKZHzbo_s^L-aEpj1JQu@gV#<;SZCr(5l9l>SBdCOGK*$PaE=n+Met zr~-Y{8w}m*RvyqA>6VQ`-Rg_vql3EsVp+W;logfnMG3M!lM1k=7}%9zHwy_zn+2eQ zV!gpziaEXV5JTtPjx`}BF}tOZJ>j6(^*P)}<;{zYY$^gITBRYAYPFa7F}asU_9kz5 z<2~~@QMrouoYkD#r2^$J`HXIC-!9JzN{sA^y%nE=Y?mHHn)-wrhr-PsJ0r)=eZH+P zPwRL@nz+AF;8!L;F+X|_iq{eIn~@_6?wnbg!54N;@bc1RMS`Rm0szjg#7q&@8%!;Y z`B{H2DFLeA-&v-^0Q3oFJ@1)#L50}ZdGk-p^dM+H z1Irr}qHnQ9Ulqx%KV-0EMdX?;QD$!jQ)TmYy1rTLk8^d)8?{Kg)Q&uFSGwnF>DsRNKk)aRReoXcpWqFfZ*>+M|SA?d{iKEAtQqjCPtpr zGf3El(%Xpzh;5Tk6i0h=lTt)ugQM zO#Q*YPalO-B-}4a+7F+XKyD6@a?SMpUlyZJ>S7?}!!Hf<8KMjaY=k97F6XRsm%oss zmqwTON0=ygo{91;oqoj9G_oeAZ&A3X=Uf_BDVx$?eK@nP_mY~k0+k4jD-$gfe%M9F zGJpv&;| z1$48KD_q?7&XdB8TW!%S(SS>5fm?~~4)kh67@X?%w}G}GkA(-|B66f%mB~#jF0j#} z)>z76j(Z;!U7z+wti|f|w3tbL%8V_n9!Qjk5c~Fl>xzyzUc1^N5&B7(p2h1^oU%he z?bTx^k+wRT!PxzbAJVis6K2X$yT(69$Wc_m7^Z$i8!YtBE^9U|Fr7zZB6G;HEiV{v zSZ?-FzKfSZ4i^_Pt#OvdWim3^F$kbw8R?S54CyN?pFomeCD1Fx#QYVsNr`qo1WOcH z;cp*WG^sU|HtH;>tf!B!4B4ZeV$l5q$`zx#KP;G%wGFzqW_=0!qSmG@QtO#itZMjK zu>(YqB^&w9v%dy(fT(v?bh@QQF6LaS$#;)k+Amsspv!vT?l*|zwvRogN*dyWUT#Tc zz(x!gtc(*YnmV$R(yw<$9D2NxsB@Gic_F959?qP@>b$#NJ15{l;wh7A8bhHo*B{^FM~mBQL(JORQwq3+nqK>S#@*M zE!-7Cx_W8uAMIlFNTm_Z1}dT~sbcrwrL5#*sHnaa=etg zFDYO+EwZw?=xLX316|F4WZRNy@Dz5vR|lN*)GXPYniXI+_HPK~Z|%%pL}zRUrdCx0 z4Ec=kVrc;Iskz|#XhDI;hgSYsdCBu%N5I>zi#>Udy8IVu0@Fd%fKN9=zV;Hm*V2pHk9k z#eEY5<4wL=#8P8R-hcq8IdU1qk>jqhqcFvsUa}>-xngiHsz865Y}U>;~>ry1f7j$%-flL#c}|$%vh)`_AE1s`$%X6a38ch ziyum@##1So#=_U4W@hqT-xUaE#V|ESI2bc2p{~eit@|>Q1vRX~`I4)t`8=LhGZl&L zJ3V5j;cWrLzlx<8&)gTv&JQgyNbnRC3OCCb_Xohh9@mXeV&^n& z05r-}2?Y<)a&mN2JvaTZ`UykPN&HCe4*6B zba!rBufQ0$ZiD)Y ziX1J{&&Fju9xgdraqjM6^7ChC`ta*GU0sjEPiH^|$-X|IHbF)P_=>_Q^zqtd90c0f zBKFiOZP?}M>XO2T+_LY_X!SDdH=Q3wmO1x)woG+QNN~n}S^5|Q;{qS}FnDs)CUM3Y zMI-B&v5RiViK^a1TR{$^TqeJBUuVSm=6JAf_f#VUD&B+vxkz@}3U%+-58WR6b!eli zsZa#vY?c>xa9-HsekR3qHpuf2MBczti%)YyV9v#N^{R|wJ(y$O!=?@1F~>#gtiKq} zV(39h16H3*+1ZR%tZ2%9XQ2)9qLu7JX3Z}7P0G6-I1IU+#m-u?z_fANGE3M4qSQr= z#ff?vGjrV6SHqvaz}Lo-D~kXc*jNHq;z}9v4Uun_)>6WUDX{j+7xK{lct}_Es#CgW zlM?s10JSxn7dgcld0pGAL4!__gp;c4;H;qj?l(m*Uz2Fu$FIj%@VP}74j)KgK|nxTvcq6=chJsyFG8%k{59K{wrS;5=;Iz8 z27hmYa%6(qh=C**FBMe>r^*h%`yQ80uYbeZtFtah8&}JGJ>~bcIQYG`B4MStN?q6U zhz6hX@8cSxdf+o{TifMxjC0otr6bGymwn$Lh%Is4OqXz-4fKrM9IY45eB`&(tf(IP z?F+H9$wPN)H{SgP%Q1{4IR2&l^&7@p9+ae%NX)Z+xD86opUvn7>(1EPGhrMIht(<` zeJ>vhF~6u2Vw(HjWtp2teQWscnl+gf>NXOW94B^O9BKaqtflp(yX^WedLQ;z^1Kk; zX;q!FB^;6dxf{UG6?!La9>%`O)qGg zMw~hlq`D2GF|SQwS?vXb=`xlzUUn0O_ReEPbalFOLjjGs_K&GF`S~V{stnGLr-6>t z%i}-Zi*=g@)8~Vq>dkW-GgYWES?a8z@(eV{5^UlIpCsl>5{p&_$gGR7?=-dxl?>V9 z$oH9m7U86Jpy4VHh>qzYhQ8n1b{?Vlzyb}=HE+DbKL7j}CcO(#k%hs=W%TavJ~a4~ z(Nd`QncyP!koy`E{RLKAl93MA4@yu)aT|;ULBS8U244KqWKz=)~hI00dp-$tqTD|j|QmCnfj&0WF2an>(#AX1D7Xmvqe%fxXP$c4P#3;=qu-`*3``kWlyYE&~s6 zj@&76UvL%1=Fg>q9Zae!f=8FvhzYCn58Fn!D~G=9^A(5Y(Ut|h8jUIXHr;L6UXQod zyRC7lPm*6kr1zsew$7GmD}N}kjy`S-4kXR4gj6v9kkI{Tf%A+a98W@lix(Rno-$~T zKIBhzi4_9`t3LZOuIxa~%)hDz$O}9w1%R}w-B^VQER~D(vT(9|htW08J~l>duL*9k z$FWry0+}-Er_#nT<+{=3--j~!D|axVVX8mtYuG#y*Dm8U&qfJ{8i!+J>ZoH<>0~5X zcU(vAvl-VWnaxxTnHQy%=kpS2SZ&^D7C220;P=IX{cJSd>pgaWxA}We@|}cF98Ynq zMg#0~G=%!|aVvKotA|&vt^ajPB!55TI+si=*WTF{HL8^eEykmgH$98K!1cwegWC3= zO)u}n(M>ezrf?^>5ELy9MS5}=P%ECD7loe~ zo>Xk`1D*PJrxa#8-9c?Np4R=jE{xcWm@Z32s|ks0b^gxDh(p^6^xOu&wR7U?%>M7i zJ`ovfzL;BeiOD9<(Gx9{^NgEnd@~xExI|fLfNT3&ZC<>eOZIEIS9K|CD+>{aHgS7e zu5J>A#Viq!SkD}^K$%+|7a?sr`hJ@Y9ci{uX|==Z@ae7@XWXt)!bdXok+CfDR1%Ak_b&qOBs~9SQ>LU zqm!u^IhHw$tc2mjkPHH9 XBYrj9`E2>;0QQ-l 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 Lg<+|_bL9U3wa7!O literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_bolt.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..f35add3ac5e1411060c7b2da6a66206a794a621c GIT binary patch literal 5661 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 o5nOq%3mFm4jiic^7ku%;Yo;)oyguJ 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 TTI`R0|Hn7dGt;fnb`Jj^s(J@* literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_topology.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/storm_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..224a2876fb8ebe788f7fb01c7818ace7d0668f7a GIT binary patch literal 6268 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/disabled/table.png new file mode 100644 index 0000000000000000000000000000000000000000..de1e5cdff0fadcaf5aee4272ac51bf91cfa35f65 GIT binary patch literal 3000 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 Yl#!cdq~|1K`^;V1%WVy-$|X4IKiwev>;M1& literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1c68b15aeaa05143176402ce82fab0fd24d205 GIT binary patch literal 3349 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon_feed_creation.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/falcon_feed_creation.png new file mode 100644 index 0000000000000000000000000000000000000000..714e31930ef4bad71c7e67d0cc21f48014d0d011 GIT binary patch literal 5631 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 V?-d@4&By=%002ovPDHLkV1m&h`SJh& literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hadoop.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hadoop.png new file mode 100644 index 0000000000000000000000000000000000000000..f8394167bdb10fb8ce6f67ded7d83c4fc1de6edf GIT binary patch literal 4867 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 LNkvXXu0mjfWB-#G literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column.png new file mode 100644 index 0000000000000000000000000000000000000000..b01300c0918b35c1b33f59804c20e5e099310e6d GIT binary patch literal 4198 zcmV-s5Sj0ZP)r9ew_K>7!2u96056)7n+ZPZYyU_zwQHVH&(f>*A>0zFXU)J~cLNjMA& z*u_e0j8D8f)o*sj?5_8iotd3^GxI*u3gct;?apU^@Aqy&6h&|Ve_fykKqY`0`R$;8 zOQPPIGxCEtNM8q=>y`hz8rMqXuL~>!utJu_ukkWH09pa;Be8na1^4A4c$O2^}=g~_WfK^UQz g@enp$!Gy1*(1 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column_family.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_column_family.png new file mode 100644 index 0000000000000000000000000000000000000000..b01300c0918b35c1b33f59804c20e5e099310e6d GIT binary patch literal 4198 zcmV-s5Sj0ZP)r9ew_K>7!2u96056)7n+ZPZYyU_zwQHVH&(f>*A>0zFXU)J~cLNjMA& z*u_e0j8D8f)o*sj?5_8iotd3^GxI*u3gct;?apU^@Aqy&6h&|Ve_fykKqY`0`R$;8 zOQPPIGxCEtNM8q=>y`hz8rMqXuL~>!utJu_ukkWH09pa;Be8na1^4A4c$O2^}=g~_WfK^UQz g@enp$!Gy1*(1 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hbase_table.png new file mode 100644 index 0000000000000000000000000000000000000000..92a0b78fdfd90e82c4153796ae61090c92cec216 GIT binary patch literal 4096 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 yI*G_yiQfFI@n0000U{L zsCn)>*L+Y~r*$Q;PS?}Jg3xp8dP+=N$Ii`At8D?B-=DpQdF&ZxVD{|C?C)B$nA!8+v;TYM!|(t5zka`fj*bp!>XJUgkODx*9k700 z$`>-0WR_}QS(p48A`X}|?m^GvJUG1xKsg6jsXv3|cMx&lECi6{AvE2IpxRCkV@c+A zacVD5`3*$+3f#lt!V+=LbFmDn;;A+nOEMQKtICd2 zyd_dFK%@ow48ukl)T38YG(-vqh?n9)QY=I&0f?8PK~f|{Dg%g@VnI?IL@EV{mm)z@ z6htZqh?n9(QVc|X0uV1nfusnC{0tyoiUCRX5cw%Uyc7YFtReDqfOyFsB-uiw0c0at zgCt9cG=KypTaaW2kp_@U$r2=4L8JlXmShK#Y#`DA@<_4*Nfr=k0QE?+0ZDR*G=O>~ zS%4%dL>fR|k>nsr29XAkS0yP(l0c*ZB#I;h$>$Jh0EsF|K=LU>8bCgg&q4ATL>fRo zl}|zP2}Bw|lE`Nui4KtlkfibnNTNcd0VE5F4w7gPX#mMeqJks}L>fS{lxQG%9U={& zE?sTAAeXA}5(Ol$Mg`FT>QqbfXE^o4yJ%@?#?WEEKy2I-=+h@m4prmj)o3JMvqTy| zUHakpJ9zxD#khF!B1Xms;)m~_LwkFxT&f3eTckeT_z*P$)NKA1mz(#Z{rV-GJ9~s3 zyLH%jTyKv;gf0>N`o*BB>05R@BxEom2TozuhR%zO)FCt^1Uj7#d-v`}dipe+KC>3F z@qd)~u53gg!5bE-*Ug#Q0BUWiMswpPT)TP^vu9^v`t<2YPEJNsQxj@xYEV{I2BXo4 z8#g)-6coVD`RS(yR9Dv^I%Ych1vg;a9l;2^c@rOO+s58Eo6Sf`nTWoj|B9i*W=MR8 z4(fH&)+>nA2GF&(GMqTJ9(j4W$jQlJmc(5VSPwlkAI(jT$Vi`x1=-n{p49~my+3{W zEZmV;gnl70(%q!6dIeICeIm616mauPocw-0ii_XI^5x4t0_cM+Td-*U0^B#{ZbbC& zk41|Y+W-EUWnt{5rZ;Md-UaMC=QjaW=+5ozK^(c-XU4cD&cC)6-Q>}cd5Q7E{ z!rG!DATR*!H*R3xfdh!J1F^QY7NbUuLehlS5f(mDnwxd49$6%hEs@#)qFz&FMIlzN zeyv9Uk)C^DIrEnilammsi^SNmW3i&J(4kyhTpZ@jn}?q+{=*A37ezg?NFG6?#$H(c zrGH?;gcQu5Ki_GYwMA>X{hU9&@-oKVc_;dXgrK0X5GIpJu-p?*Jb{M#uX|Nzk>xQ+ zZbPKjaiE4vyRmd>XYhSfdAY;;)U&FswGDv(&c;oh$7^hlM?~n5oRW+r>dl#jQ+bfJ z3knQiy+9euBaqyJNUZ?Tw1nAQhq&Rxu_!wmP39(tG6amZll}PON0FD4gZu8Df{Xurx0hZxt6~`LoY5n37Xc9Li3gk!5MR(xy(uFCTaSzxwsB88pt6eBvJ-#$qwZVf2W5VPOavXGYrSZm+Oh>1&8%vb0R)9!1+72@Rg)Gc& z!xu+)fQ9BdL%3TUc1g=HL_t5NRW4SR5n>5$6ZVF<+S1bnNJU z22O2FEoRMm(B@+als_z8>hw}{o;7stYV+pJ*zop7M8{;y`KxiJWG?-wgPd6+Rb~hT zH@H}R;$?IM1~AJ)FvP^f;5Re6rYWe&ii?Y9Ju`2JMyhAeo{g0&U&ZZXR?2m>+8w>f z<&?9L14Nt?rA|Mnr5d$AJdb|Cr!jf*WXo~#Q|ujT>XnhB?W}3D7k!3(*^fW|7>_*i z2%G9SRdW;3L-Umk5HE+`n$UV8)g*JX76EkP=(CtJXC|5(8f>5;t0ScUDSjJ^vma&- zcXt!Ai?g#4uG8VnnKR7t&?90%1Ojo35}jyQ(v!PmEXge8%h*^V&I(D9wOLeA6Lzs~ z9Rp~?h7HUQN=mkZ$Vpe7K%2K<0W#C4+Kd$mi9VyUvXZSgB7jJ=q@=CYtR{eX*%%u8 z=1i4V==_gsF?!Sx1`w&jWMTu0yzG~4Sc{sqq?BZrjy5SLHy2BmEU`Iuv!er7ueNyc zPGlp!wQppBi0hH5&I-|TRdZv71t8v{2n{Ma6Aea^^>XEClO>`_+~LEAv)6RJq{Kvo zg!UKXw&Wm7PtDpADLxmekXkQqWz7mL!yr|Zn-CEZ;qm8?rTKV=?cjY`snPP-wR0ys z_Th&g;<3jbL*2PL{2^~C1`W*+=fH%I3Azo!gEb7Dc<9d>PMIO!Q;iimTl>0Y=V?g4vutg%wa7^($J!c-?#6=X zed?h-|KbaR@6#HgK7E1_fELtNt;3BQvR~%mEwObkJVa@Vza7qrK7aO~2*h#r`f_s> zvk=xIE3zc_3Cx)}%K{HIP0k!`YPzWGyoC$!{EII-y>?PkGV+$@;^!+hs6O$E7`G=! zu|a7bBKNy0GFJP~yIAk&+Rq1FR+3<#rs%E-6LEj~RP5is&ta7!uXStIFz{%-kt^Mo znu>;o2K;6HdbBiGqVC5nYWPaK75PPh+{~;h{GlIC8u91XUPDdwAzW#xM*FpT!E!tl z=NsywPt)VAH~)$+HN%atsh79{pY}>Y-Es}Rf0r$W$de~3F(ATkEm3(;+{k(4ZT?;cl@V3VjTMNAzKGJY&gC1l3h}~) z3(Qdt2?-Ir^w6P0@X<#*po^M{Gd~7n(4Z06yL$uPcw;Sd(g~ndt5)GseSbtnPgTh` z<*_~wbhfKeZK9d|Ns}kAyP_^S_14JuamOn03J98j_)+VTFnS*Td)1pPeBQo&r&)+$ zKUOKfD9xni-L9m_h-Tx9~VR^>u_Z>h;xl4*gcRQ&5n ztI+VfaL4#p@W#5oVMx?KB#uo&^ngf=8JU3C*aX2jHiB)`=sVd6xF$g{ZusVGyFWz3 z9}twdvt~+qhJqYjLH3!nxcEO|1plf=f@ctvwr%$*?=ZGwmu_V)B>x*FKMPo^3 zzMKPI)nEDwXU}XyT3Q-=@G37aNA>Bhau@0hxKQ_nr5ttT!@?6_EGxqohJ4Ia8S=m;2YDLp3>FM1qlHT&3@% z{rQfwk}^ac(R7u{M9A!TKC#=Rh`<}N@agTdetKr)n(S|?}Ka+yfjSdv-9 zg`HU-m;2(a3pGRb>zz&CwqndUzFa3j*3BI|-g1>$2Hv80B0e}450lNcO(wx*w{&du z=+O?xX>VG&i)bXS-t)0)yNeprZ8mDk#K(aoi+Qysv#=GSAJN+BR zPsb5cgXJ|%&_4hC(|A!J5{NxS@4mYQe|ald&+pgzTIU$bv^3B;-Q31@&R*;9!tZRs{vRRXyU5IjvJEQicPWxM}{{q1Qg z_7NjSupe>n-o2J%v~MhT=~l#zoX1|%5JGG7CY(BT%I4hc>}&>+J5Dn76yN#Vd6*kb z`03(TZr6`2Tk`lNmbyqFj{t(Fn-{sZF^yZ3?Q@wMg_|gMb*|3Ltcm^k#*BqxeRY(FLK_;jFD{rzQ+K;1E0tuDVw&|7U8DMT~&V9+0@wsLO-}J z@)^r(vK}cZjsYMDB6l-Z6Rd-W#ULak1`o}D8Y^D<55aQwO)Dul*o?O8J-Wr-s7C;y zClEnGkevBLGiT1kE#avM3GLj?(b#YZjrE5d1{uFOd_eI06DQ5MeQf7*etgNnAvYQY z;eGVcTr{^hu72zYxR(J$3JhL^7YeUBlrbHCnvHr}H?0z>#{i+H5J4i4c!;bm2{jd; zeDVeE(LZiEW;$$O1CsVr8lUgl!j4%7L#Oit0=s%v{P>cPwX#1({>x{(&LCm5W31|! zTW_;8zs}TtopzE$_2jGYrg{YsdIJ$80EsLF{gBoW(2pBoH@`$`19q#oJU2nB$wy_!57hEHIO8ePXL0iLJ(^p`CL8& z2)>MCt%2k-`4k}dIvBbJlIZd|K#(G$z6O$Lk^~?~m6kyR$?K8~AV`_pLj%cck`y3F zoghX7sn?PmAjl!hkOoqZB@2KcmsC|6NFGZz06|Xq&NPtRmaG7R+>+*LAayI*0R%Z_ zUerKxDp>*qxu);bKyr|50fL-!z-k~_Bx`^m_e8=PNb&~=O2|g-#~>*JASflJxgUb0 z7=WOpy!d_ulA-{Dk|2VAfTTEppfre}ZjclS5R?cJ)CrPe0fJH?g1SIbG(b=?L{JAv ziU$ZvhX}SH?T|rrJW;J00D@Qn9i);z!$8U0l#oQj=uV`1rASo}p%bJmF1=)g8^xti zfvaRIN|fp#LRV-T0%?XD#eF3cm$k4|Ms@OvR0$C;E|z4G#Bq|ydCsSdO%m2YRH+&w zUR)N*d>?0$av)>c>oa`TGD0!Wt*YOLb4YzJ^!I{0@* zNpXIKb?ShSgeW(!C`N*03Vz;Z%W zQk;J}K;NM|g#<*oc|`2etdeOUl15zoPtVmsbJ`L|bW=)-^SA4_ ziJmFkNR4$Rsr%Y)0DvI*XWJxy%@i`cC6WNz2q0Pq&GA%oN{aIfjn!ml8QKyV93X0q z87z`vAu<6#vJ4NBAt5pmK(Y)ClHnjSAwaSW3zDHAGBH513<;89APND1WEl=5LqHTl z0Ld~GNVn!Al)e7AO!>>3n1Mopdk4jA`2khDqtY_6(S2D-76p<`3)ky0My#r zqUF~cL4F6xFQsMl0MLaC^*Fe10jjF@iTk~J4@7Hg0wOx5BRVz*F|pZNHBGPbTUi^Q zA<_###|}M?no~zHapFW=d+oJ2a^wiU`|dmJ+_?*Nb!QRLF$&Q!*+@tnh4{o#h=}N> zRde+uzkuWuM0x?JbV~vH^hv{e@4bia-Mc%zX7}#hc=z3R@#$xu_5=ZP=)v3e;-#|aYeiDAyBWq_L_jIbLVbINSc7u%cq7q zOg@3+6-0V*qWA526vwN!2_Pm+n1FNV&Y`8nJ;(a&*|P$sRjXbT-Cc6Z1h*_xQ&Tn0 z)Rv;TX*W`PCLkdp4y|ZK^Z88Fo{ly$j9!D}F+_R+Xz!l?LUq+wm^*hamM>p!d;I+Q z^8%)(rY3RQo@AJKw6wG$t()(t{-HyMFm2j&)Sm8yKK&mzs`KtKNNz)<1wf~3zD9?zt=P7;*y*`7Yu2Ekz_V}% zVUiD5znd`4n>SC4>~eChMr(&#QTxkk#Km?JRwpJV#<7j3Pm9m%(4hl5cI=4i>S~M_ zF%t0!Ik-IIaSwm7ZsZY2Zb764K-E=6*t=&La&mGoWy%!W&_M}TI3Z>a+k-hiCvUZ_At$wH47_NtZ-@%KjYhP zzZJgO2OoSOpnCi5xAEYE4aC-2$mih;s9a(xpoELG^)TE3|FfHVhduq}|t7 zR8$Cv2o^6S9bRuF`#Eae9UX7NM1Vf}=p(0g@qJfceKnRWS%MpHyiv4;R&wLUzhmH) ztNnX|f~%?RZEWKbB5ALTjaux~vu$$$rcKRn(`i-{FP!`yc0CL{a>!3##S_WasjjZh zA!NW9)0{bTL^OQ$>eb?JdzF`$W8AoL*s)`Wc$EH8US1xOQ}PkjeMX>8SD?imlE${R z7fD+XaojvN*eyPHt`^___4jUDAy=YxqD7L2`-GuWr%vMV1S-C_zP{ep)iES6ZQ3;K z*|SFs?d|~c-F0zLe8hNUvw4^xS<;75)#g{hK4LU$n zQ{!=Q>kB}X+@%p3TBPXcOFeRJZ7r&*s)XM{OVeH~sY{nGh>MG}fyd9H-@{w_WcK1~ z2-w$Oe=Uao{7%m0T{(C#;$upE`aK#eM=~m^icmf%bz_=sT5|ECvvcbY@uEgWMTvvp z{QB#!0wy}Zv@RT?Lwa3USeUp!e*Aa=BM*W^%R*~IfbO~H9(?uHS57VK*|VnzJVJts z$L+V@j-^YNph-V-vmmuPIQp__3MX+AAT5* zJ@y#xy6Y~C961un$;kpTS`+#=efsnf{uSXONCb=`MD%@>?d0pOzy5mBol<-~Aw72N zNU%?3Af#%II&f4YOB#)RsAVg|J9NU~%6Bnv;6R_dwD!acOiK|N8HxD#c%-GJp@0AW z7&U5?cxUh4y-`+Hh97_YQM4s1D+`@FcNSKRw{)}<5)wpP?Uj*{fn9H0d6rKIn zurze-c1=KkPY{$|xVF4<&aA!;)<|iI76r3KYNGSmBW0+^BQsycZi)x328ZSZgoi9X z2C0kUGzZ0@{MM~ooxYhsUUk(~w)>1Vg@um@>hB4loEWi<&Lm%`Ru8Q_UAqH2wmvKZ zc-{mMJrRfV^5~1_LM`C<&O7gjz@hzUjE?y)zx;yRZoADkq*qgMaWQ7jEWm)lhK>~} zkOy?Tjh4p-uYZer5Vfc^#z+ABKE|wo zXmc(SutiyAOQg#p+XQJ)_Otl1=sSt&8{Kfj4Gy1t-F4TAA-(K)+l%vQ zk&%~~by0xrg2)gB)_e6qya1Vlp1~)d7HbL;BtM98Bl{>f0b^>eDQ7&sNA@ z-7f2kzL~Sd%()y5_NVB-5KvmX_AH*-vLrPTIQmg%&yNN4`jR+!hj~Msi#U46zr~vehH{S5;nV_$9(@i(w=;1$G5a~s!z5fxbSFiD^HFDA# zrzz;$Fo4JevomMTIK0l2q_$gcy;bB4J^AF5`2PFvou20u$>hnCQD1jlEHW^eY!Er; zp6XcLx?hd5vV(4SX>uAZEe?Z-?6TU6g1Z|fXQY}=Hgkxcdg>`$bB*)d7@y}nTi?EY zQF-vcjdZHrk;tzhMBe3+Y9u<@@d?-B@y8dsY=C`NMR2B0ohqg%zWL@G;rpyyxl&BF z`YMjhm`cJ)TUTON$)!!tKKrb&MrQMk7-NjkTaeKmC8bQk|9<>O+q8sI35op?8=r&l z@O~JWH6Bfk<@n^2PaG2LX>EM%I?~=PNd74NHK=l7vEkSsSO=b zh%w{86vwcUuZUF@BS)_l_XlOagp|~Kkdl&y{rff|B_%~nW!OtCI4G;FxiEVXAWnA> z5YD3!>U;0KS9QLRR*ShyO-(1n1hbiBNQjgoRGhR`u7lsR^FKwtGne})Az}>2RhQ=O zr0?d@5hM~RkmM4 zi=lLwnUJSku_3?K9gP?<0;#E~7%*Ufm`7uL>8-ck5+K4{7ZiKjZVyKSxAFgh(w}vScyB z!_JA7CPhU>V(F0*I)kYqY|QvCX}fcc{412=GVEWf7GU4LeGbp4t*588VQ^6ya8ydU z#;iRt9woykcaOZU2ITtn>v89ucZxxQ(Nt2LA4W^$|A{D#RbO{NSx z9dJ(of)qlKyF}R^bM-wePLZCTX@pa&l=#mxB}8#?okaAQDXsS6C`#=@@-a2v$o_dx zMeD|ZCl6X5f}}RF%WjRMyp*20PNZ-p5eo^I*4vv(aj~7n&mlze@*i3Bb(B5`t&x4T zHKn{=x+H%lyEgh{YSm2+9y}-<`7T|@8}SkdcEV+v%&K+k)`=QN_FBAnv6EHcedX(9 zxf^^`6T34xQ$Q&?=3J7UoScG|);>nO0+%dNNpU`%1Vb+rSE{k`g6$D@Q|wBVfXJgS zdq7-SBQ;-Y)v8sZ$kubuJ%_x zApN)VLaKp8hn5bn3=jV%7)o*E#`4DYAno0|7o$gy776?ux_c^u$2N-cHJBWA9e3OzlG_MJdm?Ov^@%5*fLMGSF)0XVBp^~<0qc5r zVn9Vl$BITXBFyR@_P&p7br^iKhly5+PB&rVY&^v5dnZw;gttsCd+DW@1Y}P?{j}|U z1Zn#8=~%dMp#aO3*tHVGM;>`Ztl>}ZJKv~Q=%bS2d|PNpxfZ{|EPIt*JohL3?XRCY zJjRQxHpL(p5T!MdMPOKRuW#nRh$Y<=tLXpm_lJbvWdGXS++5+?5RA;sOaTc~V!3*j z=_0gH^ru*kkB&IIKUVM`FzDX`eHsF#aV5q1Hb2^-++J>85znyeltBZjM^Xjeee0i{ z8cfSWkX)_kpp~K3dj9$6#bhe25c8B|i}BMB_o3y&33TijhGD~oiTN^4uT)eVMP}B0 zICf+`YEB&&Fby9*+*a_47K)!ut3@aYr$JRxQk?IQ4xxm|RMu$!o&r$~O-&s7%gck* zhTu#vBS04}G$5*526Bck6(H5um5VJQSkYfrWMne3u3RYcnyBW+@6g(^3$?Z7=okSs zpKC>Pb1OPWW+Ogvg3&jlaj-&AEBt9DYm}P&DTWT|B}PJYvR#SRiGGrN&|jh-MT@~? zH$p?8xPgp)YAaJWx#$&)8V7v)Y~ zHP_v9L>Cj=581ubNmtXI5Vn%(~QlQH5*E9q!MazXdCn{Z=jQZ<|iwx>3Ic zCAaUW#oUKBW5K@<#>D)dw#Q$3bua#K-vHHC@jKS6E!XN)E-op~S516U&1{tVyu|@; zRuFXTL@rjY{2!5Z$RRxAM+`#JdFJFNhxuI6ql_Cdi40;(tYz3#G7YKyKOi@NmrJ$ghsJicG?I-RJ*6+mb!Jyv>Ci5`EEClbzZ(?n56h+8WVB$n8N zl&(R?T23INRb~-(1|zv3Q5Jop)ZWuXH|EQziq=O~zrL47ZT+QN(i+hU zMMeF#R^s^aMu+Dc8ZHR1^9VDU-Ep*P?9yW`u?R8Ie&}`ZO9-Lhw5~Ux+Fz zcZ6(zd7bc^G}OGd_Vkd|?vf#Xh~#J+AEeVgkTd*Gs3=>A>gr=6n8?wZJ0rH1^IH%X zHyr2AN2xwrjgAm0pC6JP%k!_5L+$o{XKt-KGZRQH7ZcDs<7M>f{W5;q zQtZ~GDT|>0{PP~Pv^`5Cy#bsbbIllnLwh#I^K_w*XCjOjwOhW?k=j|%WM1PMUJw6B>&AE?N?rT z(dn}|vU}ixxej}+m6eyNelNQ$HNccznTGOs4_J>@z?u!Dix_~c>~%;^Jb;L>Ex6)} z4BU0sKZ$Cw_Up$WrI4_?h%9*ph&*k=F2|j^My?=IbDHT`(=Q65L+#aW)E+ORHXBG( z^+~Ry&p`R1YV6v*0*${OKvGf+Vq;@OT!}HJ&p!K1~{Rdor`50sl7>t`IdtTI2 zIRcZV9JwL*jx7D%3}s@ky*_I_2uC&-c-;&qz8$j@9eIm;u8Ag5u2>vc|Wr3u7 z`5hnxqEea#l5Q0cfDov1dlpE#Q@{X1AZs>SAn8T{1qgvI{Aq!txdILlf>Axz0!cFk z1t0{g1hEBD&=oX*5X?H(7Dz!;Pys@)i=kT}1zbS~2wGIsw?GP*Gyw=&ZOdSRJY__MT(mXh{qV_6&ZjqUX(vDJZc-!P-f(3VJ+v~2(_Qu|fS zwO6UM)q!cYkvD}UvX``t#B!Y$+gbr&QG0u37)_>w2$w)gm-cPX)j@M0Z5Ll)ChKD_ zQ$i$5s%~4T;VzPAB+Fx}?c$X(HAJ$cF0LSmmZ?(eQVY%2b*U*NAd)2&CoPcnar3uz zqSe{Jqog>0gP%WJ*9s|!>?Hv;MH=m*QDJ41M=@L*eZM>Au h@o9H9lM4v}_=OeR1&r1mca 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 bFaZ7oi1GvAp-)ga00000NkvXXu0mjfa0F1j literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_column_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_column_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a9f040da861a4be2b024f2b378b5e673764415 GIT binary patch literal 6806 zcmV;H8foQ;P)x4J5+u2grrJKgE(&Oxx zk}AXpRm%St6dU<(*eh%y5}~;Vz!U(JyK$F7p_o+6-0&k7Fw2tB0QOXc#BHH z1YlV~v9ZF9<3mDW0a0PTh1O&iP;A`NgYOv-g)~IskhQFb;Zce(Eez$M zE+io;%(s|C%d07z2MgA|kyg%CiJf*Pct^NB(bAi30hB$KQtoGbn; zF9ruZU0@9K1$d$m2Z+k)lcC#DeXezFo6RyUB_$>&I$9rd@KBw()nbdSs%i!wxw$FA z!Kr;>8V3%DOQ@~Aa;D8{+mqTS=3TLN*P{v=OBCt=WsT4w_s6Zc{>E68>^P5-ug~My z@dg|}(a_~<-H14MXkeb9>NxHf$F zQ6)a#_yZanEnc5**j2r8|IAEGo7x{2YFgH(_KBGbz^^F;%|jHb0L8`ucRgxD)(AaT ztvQahA65GF{23X&Fn{hX84u4tq*3V99R| zbj$K|B@T7}@!WNms3?6&Qc~2t{;*1#g(y@3x^99E_dXtlw|;-b=hnxW5)zDf?%zk@ zy6oiBNl8)H`x+!oLKMmXO`W61^9B1*T6VF=-=84ec56m+lu=XBiGzU?r1N7w6 z-?|lX`AY=prm<;0wMd%ESckF?bjKV$mi*=)E&;Mw8ij|=*5(&xnx@3VddK3l>z8A5v={~)t z|N8H8Tyu5eAhWq`Sz21`!tS0=6T?|3=YejYZ9`oDMl5)Gm(yeFF1&@2BjT}i>C*P+ zE?v5Wzy9@e{QA|`keqxylKT8q6(+O!oL7)BpY*%sKeEKe8gA^ae-vr?OPJQV*2k9nlK?i_F=EiHC8*uMJ| zR;@YF{v3TCbK@E`HJ!z&%EK@kb=bCTD{^yl9bQY2q=$5m2-C`ye?V&5wXj)huzvlg zNK8ybV`C!@95{e4zW4%v{d^B%;{V0%Yy9Z{CR2>u+o8 z)ypu(Ti>Y1Em1fCM2)=BC=^rW;!rkh*w9V@QH1B7d+x!MDN_V11QDzY7cSuIufN8o zO`Gu5S6`vJx*C1^_QjYnWAN>_-=e6fNH{J%Jsso6j~C7}Yt{o8nt90WYyHdTKNv35 zw0LcedK98?0cd!h4vmdhI^~3PIs*&_om=Oi6(SHRDJkgFr;p%p@7S>ebLPx}PN&1Z zefxyxpMLsj0WRwP`|lTqxS>ObqVl^vZeK59kBQb#^6+D}tH&S;7l5dN!>!m>(m5w& zF!VxY<$1w!xGN58S6_WKCQqJ>Y15`5J3AXAM~=jT1q%dUY5Mf(?GW*}+i$-e+qP{( zlXp~|Nc21ozGw}2vHa#xYu8Q9bbO= zrQl4Lm6c(@fB|T0YeQ*ihdWbJvJ(l3<2-tg-Fs_{nuRFb0HOwFMd6r}@`fq-dYrGx z#+*5x&$HwZN0{gnz5o9EICA6&;^X5nc<^9{$j)ku_xRk$k2m1d=_b#}6XjQk!Vw^< zSDfBya*;Bn+=jjTE@Iw1?oJGt(gIUSZOTRpn& zhDHmTn=S6;1Qha10XAF#f>>}pf9{G~$EFW>6uPbgbA2_=QMo2 z@l*60INR@^!>7Yp1R%TO;|*>f+kf!O_;%kUe6}GG`~H!QrYjG_YPI0O2OkuYl5$^1 zO)T2J_10S$GGvI5C!&rWJBG=VC&JoxQ24p7cE685p`&~TQ3N2nDh}I_H8jrS*D-2i zOGnG)6}Wh@20M4|6rLwU9I7O7I8*vj%pEa@G-%Ku)YR1A=+UEs6}wP<5@#x(LTmFX z=&fs9zJKooBN7s#yy|rH$#50{$S(RrIg{*vmu!yrW)??l%UR*yKmYm9f^S5pnM2zA z`SXS6w{G1kSe;Kk`J~-SJ@Ld7f<>ZO%;oXS9libb+d>9=^ytx8wQ4P_F5Z{@MYVM; z$CHwxJig{`TcQX+c6cVw&||?HM%*!5kLqeOhFz8D)w#xxze$L?>g(%;h>T(?KyHmF zdFzM-5XB*o5V1Hrd-iN0Ik|iHZp8E&>hgU#Pc17mp~RbO?iNH5fb4ZL!ZZ0^Jz~Ur z85OM;rZsz`2@@yal~-O7UP*^q$|cdl$fXSHCDA$&FzI+&q>_>nG&SeByqYn2eXjI) z6+Z$Hgy#DP78=^&kz`7W#-xef^+mr|T!j1XyAP{YtrC7FNQ8n9*3TrdcZg!`?C!ho zb~p$9CJ8b&vc<$C0=m9V-;-9TcY-jCd9}ibR}e)20)FzC0b}oQ{QBxI0H3b3V)e^y z7&;_DxH+DxvhuV52rUXL^&G}nBa=WHHENV_#?6~Ir7?8;EAPy5YAD^|Qx^Cl+`5F#^L9Xi&G#Auc1>nvZs9IdUbNKLy2xp}|9pZ>HC8#ZhZUiZv1&tUG{ zhXn8%8XAPAH8!dBP8toJKHKGcJ}@&ACw9doc)QS+M-W8->QI%e>viM*TCwpxE6kTW zp4+=I3e%?z@c6tbsdou29)#eQTW)F3P_x`oTU#r%lQcHeL2np=_{5*Izi!;kzr?BU zO~}vx8757-1rI*>FwCuE5uf<5%lG44eS^-3@;yR_t5++wx!oQc0mxB|#^_8_A1-T? zZi0jUbt$lNbvZuYc*di1o8sRVGS>8GDl0o^&B@8Z(WA$3^@zo&uPsAtuXLpMo7%0< z@#fMW;Y?Wqc5QNa+M`u%-LgaxfI2Hy=1eE0sdp=W_6Hq)@x*W;XXJ^JQf3NP=kVdf zLOzHMXatD9QDS0md|&Z~08o6wRo(gwcizz-1N(IX2%cIbcZahGKne}d>-g%&K>{wJ)RSEebHl1*@&F|C_8uaFO~5z3 z=X4~>aW`7)5+ZS>`UpTWaVSel?fALM2}IOi{-DS7X#<4_$P=~c@-bl0Boq`B2pMYj zRntFWgx1nx#>u0KQw$wU~;2Fw}R7Xw>j@vC1S2*?^m-2e#UHe0!B z5u3BHVNnF24$%@xqV?JMo_a`6ox8iT9iZ5=aTru|Euv~;grC{4`r}_-#+%D-^lE79 zj<|Tk12eO{1qdP!i^M&29n{IO7B}0~(vF1zmnpRaqVhdfrvOoxvh7oa^kxGxSBz{2 zNYdY4jl+ir&*PmHHwib^-=d?veCdt2ZPK9b03>OF$cKZ}qBE~ohX_^4BQaNwXw%S3 z?N-RNI}L_rbwht_Z9JZ>-iOKml#X{--Xug;{tzALcUO!@!w+$Ie~G@k07>e^hXX{S zGablHcSA-7v-1RF?3s8}v^L>6b14p)Td<^Xv|ufK0Tc5-^nKR;aT4yib0|Jq4s8CT z!QCj#9ZeQFX_xYoc6;fya2B0sN%F`{DMoLSHtlZ2;pHaeO^wHrmu?W|@N;GTeWe#Y z@|l>2ns9SpOuRWAXDTh&xh_g51_ORs^<|+v5!oJ{iDTV&{&>e=*W<4kkUrS%7nNrKrQqqWe2h*8wFV{|a3 zLN$x5CWh}UW0dcY{(p;6J9F~Pio>hIrWGBkFvButMkFKHq3qA z9*OZhw1jF_f|f?j+BlQoZ;AS5qvipk80xn}+ilkH>rYKrG2nZvyqF*@w6$bRd(3*G-Rr1Mey96=xxfvKV ztmAe3chopNYR=k(<0K`R>=upU^Oc9Y=dW;>%)3?JeqDRM3W{x2W4C@{Eutmryp*Yi zB{%sH^ENDqD*YZtO-J_7D(R6s$^IH?*r}_w|Gq-y#&ZZcvfGAPPwCq&1Fac{L1#6y z?gE4^8rw9kEU(w;3zRC#ZMgOZ_Y!{ui?Eb!_v~T`8l7c%ki4?b;ZqGrh~S#i zI(~L`ocw&Q{51_K*C_6@9yH=#tOSuiLtX+Xuih&yMV9PF)Bhp_awlBco=OP>hu$q8 zJLZ>^Q5nR*!5MHGlPRe7#fLO>+-v{8{IAy^l1F~Z;j(nQ)giSYIpNGRak!i|N3R+= z(s5@{AVH#Z<|+DT!8E)Doh8Z~(E(1Z=gR#%Z|y;KAx5pbUsnm2oW&v>F6S9-epn-qxwc#`J`mm2#Ef)VQYT zy?6 zQZ?C)v!WeiTE zL3fMp86r_hAgGc_~SJjXP15{g|N54LQi@>y7q(C5G2holEI}()>HS zQ3QzX7s|E^HL+ELy+5>4{XbN1n%`J#Mb_|+8lAlj#3)2(%pK9H1iK~ars{Ny=d@~a zk|Gm*YDu@Q5{xGo?sou)Lsv>kKg6F%6oxLgrZ!~P3RXxyH!P(j0~zbpllRVgd=MO! zc7N*@S|Zo`0t84IifBhFuDTj3s(<{w13;!dX`L(#+g14>G;)i@DbMti)T-`w=h=d> z)ASg3hht<#OZm+PEq;SNrV72-CtI(jtD+Mvzfml%vJBCcuR-e~Nev*m*w3S!7j|*t zS*OQy$RfnAK5lV{+Dt0eDU4K4ex$fnQ(?X`6YY-A!Io5Mcw*;Z`ueUX@Dij9*>QBl z=~Hzjd45VQKNLn1xX~m;O1YC%H23cyE%9KA(}{yhaR}4Pruw+!kh822kst?%)@k`W z@ih8zmHSbX+O!^5s@GnxbD$(}BS0kjMec8=9#KRPt7*(~)s3lk$QQZOSTAof3uASLNL;+g`R;5zD5WFK z&cUv%kRs*9oV*Sin$WBYeWTV^)Ijf;Tns4@k0gt`xm`M-QNX>y0hd7vyQenP@ z*2weywtXylFSR7XL@U6=qguqq^2Vj?+V+{Jb$Rv*exH&I#KG!Z4!Xb`fJpCUISyEG4?}N!MGuz5x z%-J3uVIt;*R9mTC)duE?Y3(Gfd`E0x=c*YoVu6AO<#KP2f@0%pt>lg*$)lm3 zO!|ef6)F-raH=jhh$$#G&eIY|W?6+IQcd@}ip2ZxQf_Tkr6rK$+h+QE zy5zYY`cLwl1Bi+8;B5Kkkm>L1Vg!!E1T-MWS%SWb@Elv z2q|BuoKLSjE`;SVK=2kKXb>dGmTgg+tL93~eiI<&Ob+RsoUIxG$ho|R2muDk)m$*S z2mzOSk?+&W))FoV>T1zY1nCMLUdn5L&|Qe20Ut?i_>r{r6RXn&G=;hSj~hC53c!s$ z%|cAw0tmi<2muBOvc=Hl+iP-Fj;+(53@CQVQ zfTUIV1t9nfB1Ayan*0V3{0R{vAZbN@1ql9z2oaD1Ex!YVo`47ukOHM10SG+>5h5V< zw0aC6^dv-xfYej!QGn3X5FrARzt!UaArKHD0+PQJ5P%RUh!6qE*9sUw2qZ*^faEI$ z6d(i|B1Ayyt^y7av;YwzAbBfI00gZ-ga}BUN;3dKOAsLflDpCrK+qaQh=A0UGzSp0 z2oWM6Ig=&t3y1SF+23lOvn5h5T-(lkKOIz)(oqz5Fz+M z3VMJL3J{?Kq~#j86i>7~6aYe~KmMI!irdD|bG6w@Fe>CAk|b{Yw@@QnZPEHHQ`>MZ6cn-$p<^r3MFCy{kWT+1<(8MB zq>zS4Qh;Czd3Yp+1w@hx^DQQE2f=xM@|ns+e{8jU-}q2hSV1J0Xq~3W9+~dHx?Ppx z7N^1^9ITF-!WJT>L@UL}PWsoG7+KNEl!lYFaVh}+56KJ5rXDwr#Q*>R07*qoM6N<$ Eg1+4FjsO4v literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_db.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_db.png new file mode 100644 index 0000000000000000000000000000000000000000..c47836caa5a5fa82bed3f1d43449bdc476eb5a3b GIT binary patch literal 6328 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 Eg1+4FjsO4v literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_process_execution.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_process_execution.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2ea450af4a58c697dad3f746eae1612b24f634 GIT binary patch literal 5611 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 FV1j#K*^mGL literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_storagedesc.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_storagedesc.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9692984b4930b40f7c7965d25f8b99e5cb776d GIT binary patch literal 5807 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/hive_table.png new file mode 100644 index 0000000000000000000000000000000000000000..144081f9391eb37f16b63c8d6f8caf3443b2d152 GIT binary patch literal 5027 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 + + diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala.png new file mode 100644 index 0000000000000000000000000000000000000000..6711fc60c0f2a9ed8349252b595e994fd945b7d9 GIT binary patch literal 3582 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 Ef>pSXb^rhX literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala_column_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/impala_column_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..d3db7e615924214feac2f85ce47b38bb514ba3a1 GIT binary patch literal 5896 zcmV+j7x(CiP)#dJ#MBA=Bx?W(r^#Z$D$rkm|T>*8qTGygrceSg9?YdmFHVAFKfFuP36f_aV#2_Su zgh`moKL0b{H}lPzb7sz*IWu$4nfX6Yp4`qYGrzp=`@Qe`eV-!`2vAPSYOME8Bcj1X z)Y`Do-I{xul$G@mHP(CQ6A?Z*F!SP^(oICo0E>NYYS`#*PSfL>QdtL4W4#xkEMXsu z4Z1AA+Ki8ejqc3`UDGnk8i<(1xrvCDrubF>Y6B6i%N7@Cdx#i3_iJ!dsnGMdx7}f~ zEkup=-qFk=WC9+!)-#y8Oz*e zL0~)81dpR8+gT;sK*Vx7O+-{~g2#!c7NiyI0+KD0)=F=j{2w;UnGoN00We*Iqr^H?q3ecjnB%Q}tWn_59PFRi7Cb>;mYk8ky$L3t0R^6xM` zM0N$}+e`d(*;VsAKRZcx z{{6eEanIG?uc06RaIEI*UjKuyOXn!*>{%~8{^VhLbo~bfMD+Vpr}}R*>hIw)B}8@x z=)i}a^x(q>q&HVhxBPeLf)*{TCZ8`r`}b?NL>(O->L2jaH)mZC_t;&3_>vxaaK;A6uW8o@WO=7nJ^*PUfy%|d_w2J8uj=4OW3q>T}nGd*#HmW4L@V!}qWMhZhmcz$DHo(YHNe&MR)_oKSN%Us_(Z0(LX-^vL6c|u>8;(`f@x8^ z{?I|Z9zJdAkhsZ1V#&!X7LAm?Mt*7Aj?WXmFIrCu@||-NK9MPH5M>KMP~|9p!d8e_ z(y(#OpF<%1)#W2&7Gm)`)XiYIaL&&j+^;E>AQx(Qd3jE_w9yHloGys62_R_P!~)u< z10v|nruGPs8dhDX7$4zh_#FU(9(nYjbgo_<{_u=jZz&|@5M>)cgD-GUU$0M>Mc@Jq zzxuCFr0)R9n$^>zj#>N2%n(4YZT(#O09eod{9C&2+1z}JIy*hOT18R{QMLgD4Xz|Q z_HnQ7^J~YHNuQtjkB{i9Q~lD{=%p5|(Ud7eLiwQ2PxR5l|8`LN8eokWQKb9cy?x%V z={YZD5M?7kT)sf!wJ)xxo|q-|OG8gQc_j4nA6yd-SFXD{T-tc>ksv@%Jw8hUtG{30 zy%84;8C;;fiAhjOAj)QdlGVwR9$NRW-;k~Xw}ufHN#%^P(3Q(d^Q6ybd%aS%AEUU5 zEKl_IJ12ELK~ECy*Kmk(041jtKixy4MwNs{WxS$)@Pp_{8+mz7DF(tQj@S_Y`Awu=solO_afqC4N}pgnuPiWqrq`R#EjkAwsx;w54LVTh0O z^$6GLJLhdLFV9Q(Y{MYR0Th&{k7z`d{@|7vNF5zPXn4>p3P9a{+xSrb5E{||o?d{U z(h@gXLv+msF~pta016K67vA8cr7K-jIV|-B)LZX(C-n704 z#CoffDX~D8FC0nDujkk5T^}i7h_W3ZVk5AQPs3{%v>gse@U-mmhkk$H9Uonzv1vY@ z{`=Loh#|h1vF_~bPwLtLeZ=r0I`po;Nbf>h2|<(tD6B3aF}&qzzXXn`_g{C>6$?j( zN*G2;bZ@AgC8L{ftfj+y1N`}Qt=Og+q8vbx>go(zA{1TaYHthB7j1sStdS_UJN&jG z5vf;WYs+ZSf@<3Rn~1nBVURRIlmjSQSk)|^e)lUU-E?EEA+eFDPd+&t`YxFsqC5X? z0{!ll0qQy#wY*S5AjO3!2T-&CkT@!9J*2$G6Rgo6x1Fa48l(Gxl2Hi@s!@Q|t81>R zp|6c7rM){;5zq`$Oo-S8)*1Q=SX{^rUAH_u$q+%cntVlG+IF~$@`~Mb$8B{<{o&{* zLf#0U;fA1n&HB10asKVMj;Ggt;fRXmWCBPV*hYh@QjPl9iJL97)j>*yvc}Z84*Dj` zN^@=BAuj}%CD(~-k5T7$K9c}~ zTF>{=zx3>8W1&;Czo4!eouTh5c2`l^!3x5Wn--j;JMIX&HN6&TP+725 z18pCP2rg{pJyYoP@qGHfXLaS6?{BR4ZdTewG72K*#y04=i(OSy7lvr(Z~PKKYWniK zpM`!?^Ylb2`FK$1`;UK4^xRAj-En6fjjbIdt;~_A(7-=}L4_h$Zs5JW5% zy2;49*-^u598#@GNiI(~f7CPSv=mS)sb^9clD-e~Y3o5Z{b{q0W-hFxhI@xeQ;yzm z{z`)BqoX~lOBDke^b(cn}TV6Iob8+;nPoFer9iG)o<4Uf;o(AT zG@6gp?n(5B9DP~8kSy}ey|lvefI8ajUChtk(4t~o}1 zW6p%)BUmSK_&;>_2y&f^&a#Z3;h>8zL%&k^cW8Fo`m9@e%U*lJD?rSxU)s0VSkA*A z=_y%2ZRTyj;|k!Q*BKp$0OI*IzIZ8pNegdqNnoHq=t#qdBJqfO zZh0nh#wlDFMrIrqd=|ms!ZDSvN6%Vbd`s|oMB&-sp44h|8PXCCk+eY!%SNs>(-Ufy zG|QsiN#ieye&OSR1nA`b(fE&VdeyH86AG`$UW>)om)H3eV`@mEpJwe*?-YCWA-RbZqd)A=+%k47CyjqBsyo_C_|1;myLiViHjJ=W~#74|FxE$y41+zQVAzQpz21-L=+D5@1N$kP}3W=bya0bfLX#uJbT%mGJvjIGD;Pq1uF@THd@ z$74K;03^wB5M?4>fTfWSF0@HR-MOPAPSg4{a6+yWW zK=aHrS*H|{Zmo7*a$&=0Gmp>^16_5yOB%&+VYKwpI`#FM0S~6_$cvw%0`7nWSkL5B zRC;7ExjfNES%Sq8&Iy&4J80%*PCDBixhhDOYqe?J8LH)VGn|T}mskL`U)dUJ`r<;P z7~B^=!$OJH$upvljxGN)jeBUiVs8(u9U$VtGvXeULg3!oS(V*tfw0lStJZAB2jim{ zQOK`g85gw#Bib)SfB;SP%e4{lPbHh)+;L@FsLuy8G|)&k`ss;^*Hy}3>Kj zb5f;dQ$hq6CIW;27r|$|niBeVxC*~0mgapaSr_~aa21{?4xIz*)HSm+s-2aK*VSe% zazp@LrBc|<616pKbay#fpKQ08{^mlN1yY-BDhgIejDY}&5TyiXa4k&c2EML^Ck`ho;tnx+{C<3C*cKUk@66hv`iZvu2bBYq; zp|Cq+aZ!t1UZ?)*#5S!{OGxGvQz646cDb8oMKnDbVbLw2%%N3s_obyAA}WiMjv-z| zh&G#LlqO#^K}+SnScroVAZv|nI)$ZR5Rhw;_&ix!0@*39Qxt*-<9)MOBl#PHH4>5R zixqJ5j5HU@9!M(260+N(D^tr6aiR2r4#aeI5|~)`i;pIsw6(zu)(AuBegPzmfRHW5 zysTJD{~|ZUg`Ckx_wJJth;rd~$Cn<7$ZjLJR$G99Pf}m?g{H9ih_m02Qt*iC&>fpSlMm0Ic_MyAOVUjw$^$7 zHqj+oAR5f}y)wmIG(I0ptXsiKVM>r%Jc4x-#S%!&>&F0y6z0aqtKZpNTN*aHqgIiP znuE+@Bh#!9!smm*`fwGnjq22da>khTQ(^|nQgQazwKQhkg{lC-5{dw|>CykDnQT=npG{fEhJ1d|(8o1)##>$oXGQ7VUpFNL$nZqF4|yx3&B+>}}%p9N}(7v98N6`R#YOtpeqCgPD;`*+w}Fd$2qK~YuQrPbLgp*Nf5 zwGypQDzn96yGNEbo&liwN-OBgrD=WshK=qGW&ufbGg{Y_)*}GQ<1dT`v#f831Ei_z zRr4kfW&lYZ?4p@J-kXba_{wPbKoV0+Ee^+uNzNJ#o8;L<2?0d0hWKjAl1C;6rI5aJW7iyaAC;4eN*&$i@1k;YBXt>=VlWn3=rvoh%yY4-j&kS^v-s_)HkiR zQW~)&qkNTE8%h^Iq!%K}Fi2Y0Y~+Hq;)POiDPi#(SRgq(YF5sM(hU$L0}+{Ee^{-n z$I2n#YhJ6lI zDAf>A4x~&fEdWtEAfg;dnNZpQqI5w-Igrw+v;suwgott=r9){4h|&!acMG6E1~ z0wT(RlnP}GAj%X(lmp2~WfUOFBt(=0$p~c}Aj&jElmjUlnF1g(14NVqNsmke5Saxc z%7K)KOa%~`2_njYq(!C!h|C5NKN@Lp}$0brg99!E{<8#cNXw|ugyYy}ZlW4(7d+o#k_RtY;c-6Y?&&EYCMk}0V2CvB2kU?-ucWbWx~Zhk9%v`WW~y|Jw#kA@P?aPn&Mlv zv0c44*c~3OtbvG&1>Z~9$9#k0rZzS*+|0K2$|_|YL~=2AH;sLaW}jn$)y8(~Zss3$ e$o1$J5&b{$CU*Fs8cZ$#0000#dJ#MBA=Bx?W(r^#Z$D$rkm|T>*8qTGygrceSg9?YdmFHVAFKfFuP36f_aV#2_Su zgh`moKL0b{H}lPzb7sz*IWu$4nfX6Yp4`qYGrzp=`@Qe`eV-!`2vAPSYOME8Bcj1X z)Y`Do-I{xul$G@mHP(CQ6A?Z*F!SP^(oICo0E>NYYS`#*PSfL>QdtL4W4#xkEMXsu z4Z1AA+Ki8ejqc3`UDGnk8i<(1xrvCDrubF>Y6B6i%N7@Cdx#i3_iJ!dsnGMdx7}f~ zEkup=-qFk=WC9+!)-#y8Oz*e zL0~)81dpR8+gT;sK*Vx7O+-{~g2#!c7NiyI0+KD0)=F=j{2w;UnGoN00We*Iqr^H?q3ecjnB%Q}tWn_59PFRi7Cb>;mYk8ky$L3t0R^6xM` zM0N$}+e`d(*;VsAKRZcx z{{6eEanIG?uc06RaIEI*UjKuyOXn!*>{%~8{^VhLbo~bfMD+Vpr}}R*>hIw)B}8@x z=)i}a^x(q>q&HVhxBPeLf)*{TCZ8`r`}b?NL>(O->L2jaH)mZC_t;&3_>vxaaK;A6uW8o@WO=7nJ^*PUfy%|d_w2J8uj=4OW3q>T}nGd*#HmW4L@V!}qWMhZhmcz$DHo(YHNe&MR)_oKSN%Us_(Z0(LX-^vL6c|u>8;(`f@x8^ z{?I|Z9zJdAkhsZ1V#&!X7LAm?Mt*7Aj?WXmFIrCu@||-NK9MPH5M>KMP~|9p!d8e_ z(y(#OpF<%1)#W2&7Gm)`)XiYIaL&&j+^;E>AQx(Qd3jE_w9yHloGys62_R_P!~)u< z10v|nruGPs8dhDX7$4zh_#FU(9(nYjbgo_<{_u=jZz&|@5M>)cgD-GUU$0M>Mc@Jq zzxuCFr0)R9n$^>zj#>N2%n(4YZT(#O09eod{9C&2+1z}JIy*hOT18R{QMLgD4Xz|Q z_HnQ7^J~YHNuQtjkB{i9Q~lD{=%p5|(Ud7eLiwQ2PxR5l|8`LN8eokWQKb9cy?x%V z={YZD5M?7kT)sf!wJ)xxo|q-|OG8gQc_j4nA6yd-SFXD{T-tc>ksv@%Jw8hUtG{30 zy%84;8C;;fiAhjOAj)QdlGVwR9$NRW-;k~Xw}ufHN#%^P(3Q(d^Q6ybd%aS%AEUU5 zEKl_IJ12ELK~ECy*Kmk(041jtKixy4MwNs{WxS$)@Pp_{8+mz7DF(tQj@S_Y`Awu=solO_afqC4N}pgnuPiWqrq`R#EjkAwsx;w54LVTh0O z^$6GLJLhdLFV9Q(Y{MYR0Th&{k7z`d{@|7vNF5zPXn4>p3P9a{+xSrb5E{||o?d{U z(h@gXLv+msF~pta016K67vA8cr7K-jIV|-B)LZX(C-n704 z#CoffDX~D8FC0nDujkk5T^}i7h_W3ZVk5AQPs3{%v>gse@U-mmhkk$H9Uonzv1vY@ z{`=Loh#|h1vF_~bPwLtLeZ=r0I`po;Nbf>h2|<(tD6B3aF}&qzzXXn`_g{C>6$?j( zN*G2;bZ@AgC8L{ftfj+y1N`}Qt=Og+q8vbx>go(zA{1TaYHthB7j1sStdS_UJN&jG z5vf;WYs+ZSf@<3Rn~1nBVURRIlmjSQSk)|^e)lUU-E?EEA+eFDPd+&t`YxFsqC5X? z0{!ll0qQy#wY*S5AjO3!2T-&CkT@!9J*2$G6Rgo6x1Fa48l(Gxl2Hi@s!@Q|t81>R zp|6c7rM){;5zq`$Oo-S8)*1Q=SX{^rUAH_u$q+%cntVlG+IF~$@`~Mb$8B{<{o&{* zLf#0U;fA1n&HB10asKVMj;Ggt;fRXmWCBPV*hYh@QjPl9iJL97)j>*yvc}Z84*Dj` zN^@=BAuj}%CD(~-k5T7$K9c}~ zTF>{=zx3>8W1&;Czo4!eouTh5c2`l^!3x5Wn--j;JMIX&HN6&TP+725 z18pCP2rg{pJyYoP@qGHfXLaS6?{BR4ZdTewG72K*#y04=i(OSy7lvr(Z~PKKYWniK zpM`!?^Ylb2`FK$1`;UK4^xRAj-En6fjjbIdt;~_A(7-=}L4_h$Zs5JW5% zy2;49*-^u598#@GNiI(~f7CPSv=mS)sb^9clD-e~Y3o5Z{b{q0W-hFxhI@xeQ;yzm z{z`)BqoX~lOBDke^b(cn}TV6Iob8+;nPoFer9iG)o<4Uf;o(AT zG@6gp?n(5B9DP~8kSy}ey|lvefI8ajUChtk(4t~o}1 zW6p%)BUmSK_&;>_2y&f^&a#Z3;h>8zL%&k^cW8Fo`m9@e%U*lJD?rSxU)s0VSkA*A z=_y%2ZRTyj;|k!Q*BKp$0OI*IzIZ8pNegdqNnoHq=t#qdBJqfO zZh0nh#wlDFMrIrqd=|ms!ZDSvN6%Vbd`s|oMB&-sp44h|8PXCCk+eY!%SNs>(-Ufy zG|QsiN#ieye&OSR1nA`b(fE&VdeyH86AG`$UW>)om)H3eV`@mEpJwe*?-YCWA-RbZqd)A=+%k47CyjqBsyo_C_|1;myLiViHjJ=W~#74|FxE$y41+zQVAzQpz21-L=+D5@1N$kP}3W=bya0bfLX#uJbT%mGJvjIGD;Pq1uF@THd@ z$74K;03^wB5M?4>fTfWSF0@HR-MOPAPSg4{a6+yWW zK=aHrS*H|{Zmo7*a$&=0Gmp>^16_5yOB%&+VYKwpI`#FM0S~6_$cvw%0`7nWSkL5B zRC;7ExjfNES%Sq8&Iy&4J80%*PCDBixhhDOYqe?J8LH)VGn|T}mskL`U)dUJ`r<;P z7~B^=!$OJH$upvljxGN)jeBUiVs8(u9U$VtGvXeULg3!oS(V*tfw0lStJZAB2jim{ zQOK`g85gw#Bib)SfB;SP%e4{lPbHh)+;L@FsLuy8G|)&k`ss;^*Hy}3>Kj zb5f;dQ$hq6CIW;27r|$|niBeVxC*~0mgapaSr_~aa21{?4xIz*)HSm+s-2aK*VSe% zazp@LrBc|<616pKbay#fpKQ08{^mlN1yY-BDhgIejDY}&5TyiXa4k&c2EML^Ck`ho;tnx+{C<3C*cKUk@66hv`iZvu2bBYq; zp|Cq+aZ!t1UZ?)*#5S!{OGxGvQz646cDb8oMKnDbVbLw2%%N3s_obyAA}WiMjv-z| zh&G#LlqO#^K}+SnScroVAZv|nI)$ZR5Rhw;_&ix!0@*39Qxt*-<9)MOBl#PHH4>5R zixqJ5j5HU@9!M(260+N(D^tr6aiR2r4#aeI5|~)`i;pIsw6(zu)(AuBegPzmfRHW5 zysTJD{~|ZUg`Ckx_wJJth;rd~$Cn<7$ZjLJR$G99Pf}m?g{H9ih_m02Qt*iC&>fpSlMm0Ic_MyAOVUjw$^$7 zHqj+oAR5f}y)wmIG(I0ptXsiKVM>r%Jc4x-#S%!&>&F0y6z0aqtKZpNTN*aHqgIiP znuE+@Bh#!9!smm*`fwGnjq22da>khTQ(^|nQgQazwKQhkg{lC-5{dw|>CykDnQT=npG{fEhJ1d|(8o1)##>$oXGQ7VUpFNL$nZqF4|yx3&B+>}}%p9N}(7v98N6`R#YOtpeqCgPD;`*+w}Fd$2qK~YuQrPbLgp*Nf5 zwGypQDzn96yGNEbo&liwN-OBgrD=WshK=qGW&ufbGg{Y_)*}GQ<1dT`v#f831Ei_z zRr4kfW&lYZ?4p@J-kXba_{wPbKoV0+Ee^+uNzNJ#o8;L<2?0d0hWKjAl1C;6rI5aJW7iyaAC;4eN*&$i@1k;YBXt>=VlWn3=rvoh%yY4-j&kS^v-s_)HkiR zQW~)&qkNTE8%h^Iq!%K}Fi2Y0Y~+Hq;)POiDPi#(SRgq(YF5sM(hU$L0}+{Ee^{-n z$I2n#YhJ6lI zDAf>A4x~&fEdWtEAfg;dnNZpQqI5w-Igrw+v;suwgott=r9){4h|&!acMG6E1~ z0wT(RlnP}GAj%X(lmp2~WfUOFBt(=0$p~c}Aj&jElmjUlnF1g(14NVqNsmke5Saxc z%7K)KOa%~`2_njYq(!C!h|C5NKN@Lp}$0brg99!E{<8#cNXw|ugyYy}ZlW4(7d+o#k_RtY;c-6Y?&&EYCMk}0V2CvB2kU?-ucWbWx~Zhk9%v`WW~y|Jw#kA@P?aPn&Mlv zv0c44*c~3OtbvG&1>Z~9$9#k0rZzS*+|0K2$|_|YL~=2AH;sLaW}jn$)y8(~Zss3$ e$o1$J5&b{$CU*Fs8cZ$#000030dmQd>xv1Zo6U0W+Y}D7v#eMr%qOQMP7RlFE)W!P!Mb5=NIWf+U#% z5($t<$cv;LurI=64%e%#x)yYIc-|Eez1uX}HI|2W_I&N<)t1h3aiX(_9!x_*K9 zM60`@rZxRFDJ$h65<$VOf{60*P=vSi5K)tO16X_A4K+;(x?DpluXQBGKZk(Gi?b0#MtCXk)4jftH6zgy-ofhN*aHJI-x&m@ErX zRdqdloQ+9>N3Lf?%hYXvYtdbngs7^z9+u}R16+z!ZA7%f-B7dFIG3c4ECo?jb^T<~ z!JT1%%L%1T?uME*#=JCbvJ6C`?*o9w8sKswsTpAfs|;^816)JQs;aJEK}4UJ1RxSE zWs~T)nO>&1L?S?24R9%1)FWCXQwJ+eZHY_{5Q&y^uh}h{q}sCJp1uA3taIx=XESdpo#3=5GJ0h%^7kDh#dCUyVCMZ4b`iTQW{ zWS}p)*UqT4(V|s0>g}Nia>vr%|=wLq`E@&nxff^J%9V<1H%_*=W*@=)$r zdL1Pxx?F%L!$D+KfHrUVA$|RYO*eqJrq7Q4C*&Xv578De4yB6>1(8*q=zsc$3L3be zp9SKA70Ms4?mYnMzu)&bhcDCrimO{pYcT{wRs{&d*vjQo=|A4`MC|}aE5w0Z*+j<Wc(a-?p_4d&Hv0PKqAhLQg^{?-^n&rUs3MK-Q zd!Mi~3j~0+KkxIg5S3oE%1(<`+iBpE`s04`fyb7SLC?ik$$~i zA1ee4bI%$(jU7kS*5al2HjGgIc!61^;u3+)`dSWYgB8~3w&k`l;*?)gG&|vzC=~#z zoI8OA`vldQcqIX#d)N5@f@OmRLTm_+!8&bvbXYS$T!-Brdv}-jr&`~iP>50iAm|4( zi&#mA9)bnJEDQj_;`oLy8yhA8lpeD_Tx(XgaGTcmCk&!g0f<TakpQUaF7OmR<)u zQQRGCqXUG1AbgnOqAYg*aPtLfYCf;|c*xXWIIE9CtrU&M%&e%yS9I2LNWUofnUh{e z$@hc>T57f93X#zPLNs~B@~Huj;etCm`)U14Uul9VH#dWNy7aj|_&o>eJS@Gz%Rb;l z10vioJF9y~A7F9pGbg>1Cr(js>Ebq=86BXX|Lpo8fVhf^vS`yUZ(x;&S|kYi4LR_A z02AUsB<8(fjUdE~^pwL%xmpev7l_PYffm*T0&@JsMP`Addg%T#Hrypsun?GqVO2-j zY=PZ>Z-f5jv{+G+Ge(%E<-NK?WCkZ%YGE#28m7Nn{Xgt>_tHlC?XGtJb2&K_lYEohO(a13MYPmjL|C^ZsAUM87q7x0hwz-8_A?f{T z)AFd|`vvTNMMWXejuQ#HJ_Hv_%LO*Q#|-b-=f2d5&jO85X13t3A(EGu03JBpc+HGT zf%#L>`b>ClZ@2e&UV-|dST~5wGL47hD^=sC-v+&=sp-5QA}z|uQa@_~JaCjt%X~jR z0FlRmaDSlBOJ$`3ZFyoecLo4pNt*Y0{m^u@+o*P_jXK&W>ZM49MM8&`&#MbWW{v~R zoKYAA5-gEcVMaHp6kqGGsw2SX!2(1Q9p-QudA#m!vDX@MX-Kae*b|uSZQkc$5Jg-0 z2pC=2tlCkvVur|U0O3c59|V5~!VK+j^Lgs+_5JAZm*)L&g8%i$k6#RVtWY|4c9=n+ zCU=IZd&{BWs7pE`1v7bMJJb?vxh72!hQ;RYsudGNX0<@?f6(Ti-or=Q`R;sXjqo>a z0k7TFruz8J&D~U5UZ^Pniy>?5IDsnW3;uGCaDr8mmz$tyt!jyl<=di(oC8|HMk89Y z_?jUy^AH9w=FOep2L@J2KIMmAeECc2=;&8CLTI5FZA^hc6Rr~Iz#eVaw{V%S^mX;~ zb_SIc1a7IAA5`MASiC%hL<@xArSgWCWb=9miSQl>Z2o?iqd#<2JSS&+2%qtoF5Z#b+-Ae4Pe8}4ENQR zhOBztPMfzL>2o)B&ehWTPc=kVOQzz7fBdJ{`|t1n!?*OpOJDkZq-cfa42W`b_4W`Q z`n@Nnb@qIkA5Y;NcdZd<;ZGV!YY$0P!)0`9|+Rtpfc?q}Bp-0wJdk>)JS zV`&O4B^wyZpr%HjwULTX>0z-jeUAk+Sg#L81FXDbn<|i^hA7p_In+oVz}!=Rnpv|q zHqND+7G`O(MgRj-{o1ABXKItn?W|Z$3rMg+6H2`Fo5ur!sj5MW3ZgVX;WZOcZHeGd zL0h&SrGNg#Y--*YJcE)7v#GKheEtt+bbt;)L&SdI^di>79cnxe%Z4%$q&`B;0CCJn zLB^V8J}abPc~yZF5hAMsWFIF`cBO+Z+&DxJb{?dzkwNx&;cO@6XF6%{sD}m*jgY4= z^8fJMoYAilNnHM;ASP8`-$9F37b{NJ`3erqvap6sZm|Gfccc1_X#j7|LJW1GUx#6A zXk?Jy-gYe1OE^fABX#}{>sX83ObXsd&W%3G2_xl7c?LPom0bYbHlU2YHjF)$;0 z=>F+J0ZJYsK$YY*Q}bx`eb-R&gdF;>Z63uT1~6gBDiUGf_ag~I8naes0ibVa10d69 z3sg4S#(N7m)P!tD6Aq%i2H7i27v-;VQr0}}0eV=a zbL)K|A)p9&lwwSggw`(Md==CTVM&nGhmxl*IBX;V5dSits@-SFkc^f4VR(M|6L$LQ zPiN`b7gdLYR=OK%6qj5pLR3{MGPOUOP{riXMa+`-Pi`9azG8?&O z+u5)um$#p2?vZiy@RBmcV@Y#zN;-XNkS1N}iU<&!(4)W(7P3 zc#w}nIt4}l@R6ibe(CemrjDT(e=&=WG?H%h(UAn}_LEgM+WA2%{c8Kyu^ei*yP+ni zi-;0LFj@EN`!SNI39n=YfzbW-5cM}k4k+5P1u9(U3bIOf=9RD;i4pGCHXjShv0=!= z3XhcC-pd! z5tKRGP6dwyS|QA|zI%5l>Z=1t`@ES`{8A}_~B(uS0f)5V>yiM}5iHa8YSM zQ(Wqc8R3RF(eE3&X!pmh@q&jdz&DaYWT_b$hM}T2vjQHA#d^p?1Vb$zI=4PBd8?P; zGu=`-iDp$?K}AKGbj5hzc~7?uQ~xC|O}*9^>+0|G(8+K5>G<*Q=(EF}iuK}g)D%8b zlg>viwL`L_GvHlXoAB&Ii#zrZT3 zu!{2#rB;53_*vC$78N!ON{<~ z%groLmh8?UNfeum3G;8QgNOZ;RX?Rt>Vw4e2LgtnqStW3$F6b)Ipauqyj(nsa%_Rs zj7WhXP6O)%u#kx58U3as7idr2Db-7mOrn{9$Wo~eC55Ubg5%xSI6^}$D1-Gq2CD<` zr0Ei=R(4ON+G{5&K8N^@yg*GV!1TnEhm8>9(NnkBORxT$HC7(dNc4>yHS^ptWM~Xv64Sj{N|5j6P65tj3EmD?Fm(Fm1~=U*P8;WNQg`u{uHL%VkyESziSUjn}Z$FRUa zL(LIh*Bz$%5rTgscbHMdC>4AqSSGGm`X3olDLXd>Ot@V=BR60T{k9z^Xlsn^^)Tg^ zJI@w#rUR66mM9)V39MA|W}&`@>!WLcv^35#uv#5rQNAV99*GifU(Ad1v5*n*A`EjA zi!*}?_Y++A6L0w;N=ua1R0d{Z&pk7`OE@ChN{zEn*l)0sj#$-gOJ#`AkV@(gk@(~9 ze7DkH02ZxaUC>!AoM5rgEyPMf!v~wzK7D2vx}@ECdx_$w(7G)HhOb8+`$4ds;E%s8>N^6AX2?inpqX?whU=SR5M>P z#2^w|s;Te#Z2`?xn1xv_EfFXA+ssHK)*G$z>B5O`%fPilR+*^BwhSpEzYApPWz?Z0 zpPd1!P}?%xv#e2dSN#-Fz%pvTB@%n`ZBK=70DXd_&NSbaK@O0XZ5dKT0i%{Y0sC|+ zdYkXu_#S!HM=|g-KQndick&F!&Nq}5a~-R zEhJh)rp7`-BvQ8^4N}UhIg)!5w#Hgahot?Z)KyQUeLX0eLVeLcTAAwKW(q1QfJn{u zokrfW3b7uZosUQTGB1_IvEzL%gGkjjo~rhMH7ZD(Ub&GfzF)xpuBxur?YIEu)mLux zclW@t<8>|rN%cOks@9#Q+R(QC*$M^_(jd}8H497AM#8EWFQyVmyaJLH;IBQX`8eU) z%@|0U03xl+r~#5_$_=}%C*Py~YxIOZe$l@#EAnJ01K~d`-{1wc)F?*7Yd@|#MGrkN zx*Zi(uj08-Al-FGDJw6*xlk2}5?jw|wk-G45WnE;@j z@6Hd}`wT!ylf4E}OaM`=Yw?XZw86q)O&N(L9Zx*f#4_@jVMzhPvS;q+;K!Cif{yjD z5?rt#()-eLaad8Ggz^%c3$Sv4a1F3_ynZR%rg}+G%m9%dT|tayk)+P>!)p)vi^}f0 zV-z6t58~}#y4zt42~fmb^syX$N%O4!3yyqObQl>R*OSt0OD3j)NEV4( z6!}u1YeXLik4gIn;Xe15)SicfxBjKC{GecGMJ}vilh!4{L62hh=R`<1fJo2QGDZQ3 z7vbM|duc!cK8H)G&E1&}^}7X0i~XfmPO6Ivg>Ai;l3whlD?p@oe@NdlIBOKopNASIGtmLlv)` zh9k{?NZzp(L(ryQ-pC;1J*Smgz(gbIkck-@j>-Hd5m=lbPClG^fcmPe14)7v7l0^U zozjvG656+PiWUJsqOal9DgR^mv46GYW_s_P%Am#$YK7S!AKKv5!^*w(`lycuK+$0Y z4t1z7K>`#vfGD2r_L2z_oY{3x`o1q%p68#bV2?fg*yoClErunnX$@E&-g5|$V0!PH zm3{7qmJ9c>iUjAvP2Q$2PKql)q&5MoMMg~8VtAQ3qkuWNSlJQJwPm~lKxu391SswR zQ6eBBgO`z5SP21$64gC6UD%dzB@7@+WDDXnNC{Iy0is0ru}*^&cO@JkN=7sEG)Qq% zQUIc4b<|ITq`Q&^5G8Y4hBQdJDX9QaviJ5#gA}up4iFh(gP1f(nq>%p$SAuEr9o0H z!vI7^+NvrIQq(dOKxDN2&e9-7l;Hp(BW{|P1}UTr2@n}|=fyNgK{6~rWaRBT(;)d} zXn@G*d%&haGCn|LhK+<%7$j2wL}uBIIt4*84M1e3EzMI1BvS!IX4@A(1wb+#Kx8(E z$l4&85+E`oL}X2nObZa16(X`0NTvpe%nT7(10>S}L}rJG%neer6#$|{EnZB7s;cW3 zi2IV7VT&y{5iO3U(YP688HmUS(qs{&83wqVP}<~fsIk;m7nXvEtE##l+mJqGjH~gh zP2BEjZ} z!fx5+$1d!e@7sHa``*0y@!q^2_uluu$z*rlym{}=%qQoZd+xdSR*a2}Q7n5UlId0= zY9gZkOjoKq{+jF+d599p^b#U!Wsf;HRKnXbMASz_0INIGl{y$eQ>9hpAW9_Duq?~j z0{}I8aM=MO0!VxC$aJOpJ-DVaiVQ@FWExhcgTdnkIQcZdVCu+prTTolk2KOABId3- zN_10RE5l&Y+TCdj5p!G55z+k;H0Na^dPG+@S1CaoJXa!_euM?SG5|!Z9eu1_+DR)* z#H>#z5#1|6bMk2~5v|k7Dro}|%jqDXZI+-p#dHb*zAm{ZE!-Iko)0Pl5V3Y1WbIa7 z%0rY$rq>bC0iV0=ehBS7z}m00l!l1?0J|k#HAca%0LtmfVh+bNePG|1`wArAW08VL;>Pb0wk#+ia0=A(t{)| zL@_`nNez;e5XAu5N?MSlgD3{5priyzDu`l$N|JOSNdr*~kRwS2k`xfd0J)MhAcYQ5 z3{Y8;0;EtOiUIOOp@S3}L@_{~DpZg{fhY#Z7lj5=;1Ig%hiZNXHU+tOe>KiPYM4*mI~(A(vq)@Qm>oqpcH zSBPW>X!XiwTEDi1CQq(59UmIHO3&{)PH*i$6I$CmmaicB29fLleeb*TXw{0@1<&bx zrI&WU(i>Qte3ow@`4SV!4p8fYsW||_jeYpxCDXBWYg>$SHIZ*IlIIYq5JazDX$I&g zo4e`T54=tHtvN(LedgVQ=PE8=K=KqKReE8I@0_0f|2J=*HU-j%gZ8Db$3kuTSRyXZ zLGlbDRlD(aJ+Z^WF>BDRi97|#6NpsK1GO!hp^P8@ z@HV<9HLKt`2(X|2*}DbLu?iXRWlL|O#fz@Pc=qfiBVh0DIp;;w{gP{tTtTGESXiNi zBYJJfT00S3;r6YqG-Jj@+jqHvGGMs^$uUH_4W`bVIgws}wLSYB@zSQv-G=pWdYzYk z@ui}@IUPZA6jGGJz!a{v?$nkV=9m2B@&+woEa-{`?E(SZZ+as;MFXu1^60 zq~)bFvuHY&tyKS<3ZL4Es-{)YgwIt`?ffcw{69zO)X0$W?&(bv=!Qq?X!zJQy8O;H zy7ph^9S<=N#WgrM67VPVM4ec$z1YhC1uYTVBkZ7p3ytR$;Az@WOVf8uq$z7^X~G>< zS%9FAsxKSI@EXp+xs{VD3SRS;xecc0R(Cbt?U&w#*{PAO{6DAANyRMD9-RQ1*j`PI zYig*X2o$FGEUq@7>i^}iVVOk1Eg|33db@e(1gV4i`Whoic}q)!QBopy`}ghtz`GCS zzZw|_t@-Yhw~L=hrs2Xis`P0K2>>;Hr?#wX0HjNYt{RqQ{o1)ji`wjjUfZ`Gc-x4R z6w}U3SITy)EnA4##w7<-`;_@q2%yVVNS{PT&ln=yxMjGrN)+ zH`E$`MfH7Qh{&dMg(M=n^Qb?9`w|Cr#n%F47xw8AOv4JHhb0OY=zrTU zJG#!arzYfBq|H^IrPp@-GYTX8R$;g8IpWTdR>!|ir{374_FQib7v@w0HdgD2*CSCP zVy8yNNmf>fwA$zv0kSB#F*nJ>k<+6_04{3mW{(@ImQ0*vAz~?RRkpt@Nj0<0`JgMu zMqOXa2)G5oRYq9N;*f}FiIm?)(kg3G(Tx@2;wbLxk?UsJi*?U63_MFUK`%qzFJ{35Jn0bYqQ-vXMK? z5LvGsQJElGpyPL79d(DMe8c%5Y}1CioMVrF?Y5kujR?x%rs}}qJD2F#GlND4#;9(7 zmC5>4f1;AAZ>+Ed%uX2guv#Gud#sv0o9_MkC#j*nhTc2YPs78}jFCED>CGUe+ay6- zeACCT4jaQ3qTtrh{YNHx^rC%i1MpzAtN_)HR?@15>m?v42SLFZ>Z#xO?I~l-Z1sv} zYF~6?wuT7fY8ZgU>l&)5;;ygk@4!%yj-QTe^3rOfQqfMxVj~I317*O20Ngt0%C-1| z8|k5ipSFDswL&OH%U2Epm^MCkMD>w;tF}}%-~7!bx_9wMdPfZxW|ttuG1OXPoDC2B zpD&S!qO_iu&Ks+SG&k30N9nl$P;G7g9^lleb@auB)9Ckq__sG7Ob%rt0THnvd+g#E z)!klI!r5lweFL2%MpYwp?))(A+kb|7doR#uZf!K+u?lnhU;NbxdhhrEHP4=$JqIAc zVkumhW|aXE2Gi!r)h>Soi*)6kYg9d}vgEEla!u!+xssD}f=>Tyh~9YfG*wuZqrrql z%yPx+?;RVUx6)@QdH2jLNc9ah285dEl$I+v6%sPds3(HULfLFhbET;iwr;G7F1$Zt zgu@cZP~b=oZaV1AwSIisNR0Y2>x>I-yKgDtjE2iW|2d zDeKzxHi7lvkXFI8sJ_S#MSCG@`Rn@oTXL={E;VyPpLobnA`bE0Li-Q8nIlFW=Y3xxU>EePSjFZ zukqKf-DUb{7!Uj7-Y+|z_6#^MC1|KX?1OV8Uz^B{`ijJLTJ!p`pIoG-n=Na&+IF%p1c3S+F)w`}qOn z5xB_))(4{mk=?coeEN@dWm%l7+2lhnWlX8&UHqK+)jBKU+cJ2m>kwtSQhRjyR8D0# z0a0AlOw(-{JQ3$cOg6r(?#FR2yKNcT7v*-%W92BziwIFU!^X${76;b3I+f{4WtZTyj-7Rc+_*qw4W21ah8gF?0NKjKi4`K4C@l+ttwJsb zJ+pk`H9@g*bgJO`L=?d_tC3+wAkD|jP_ls@o10bjBcj5KTyZ6m>Fy{cA7hoQo=jIN zXSuz6^+a0ELyJ|mY`L(7h^?T$CH~H13EGlxW&MI%RmE;C7L%tYR*XIU4wU3EV1e$@*5d)XDXNmA_Q89?MEL?j7FovgP5i?nTPTlP5r@etfv zUDvXuH@UhOED$k^B*t4=xK^6yJV>%XzNY|@*AS5eAYtx22MNHeXW3o{SbTQ>*WO`&jBL87P$&L*hVaZ7zjTi zUz7nqEP6;dh9AhWvB8l7NyCcY|2zIBR1kS_p{AC`zKY>R~8nY$HO9$1}C zPad@$zCah;?UKL<%%5P1OhAL)A&%MYe~Q&8Oo%83$t#5l5QPm9 z#UPcd&;cSDAfgx~w~_)Nk_94)L2@c-03w+nq8Ox7B^5v<8$=X?R7}zVL^47|F-Z9& zB|s!AL==N$m9zkn%n(rw5|`8fk?asr43hK!kqQt|bU{)AAW{V)iXKSH07NQ5M9~3B zDS${dh)92slmm!VgoyM7NlAc6RftGGkdy_8RECJmAgQ{}Hrjo+$^cPN^UnMhTW1?P zBR4A4Y`)NV(RHF_m(rGqi~SHw_-6kKs7DuoNEe964ANc+no~%7bpnWVac5Q~lIi7G zsz@^T2KTj&?~Ifk+gKnU;G96bEOIt}d&PA_1GdDnu9v^v>c0w{tqR$2sThNeFy*m002ovPDHLkV1g+IV59&5 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer.png new file mode 100644 index 0000000000000000000000000000000000000000..459143c4d1d1faca84610b7bf2ecf79f1c432244 GIT binary patch literal 5123 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer_group.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_consumer_group.png new file mode 100644 index 0000000000000000000000000000000000000000..157dcb422fe65e7762a0dc52c3894fb48c80f05c GIT binary patch literal 5631 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_producer_lineage.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_producer_lineage.png new file mode 100644 index 0000000000000000000000000000000000000000..15a960e19c78d5f6dfeb43de4d1ad2545f22ca52 GIT binary patch literal 6682 zcmV+#8s+7QP)>GE{hR;m`#*e zPzez&Bceq_G}y$CYA2%CiD+%QNGQ*fh?8dp5iPXg<2T^5y-p_2lBlLKl+Vet)B&fn zj+3d)0q0^kJV_#M^So}d+DaBsbBnxaGkJ7lFNp)!jRNOKzNhQyah`Z{qCveZ5 z0)z?XdBs-p1c^9-wmVFHB?8pj?COodI%l6|V)&hYf{EZ#0uevo?fm>*4Of%M#RL-Y z1d&`zA`cKq!1Y9OC5b#lAOTks$#sUc2MHvF)YwL(y{x6BbGFa#o96dXen&^oKjt8C*jmFB7O_f{&)$9->Lp zvT55NPSEa8PSLJUP9^moAXE8G!|6wJM)h1is(+}xz5CY%1vx8t+KQ=g1&O>$AV{8D z?hn!E2|;@2y+(R>a}%9A7fShk%SwmR;)P>q;`qT`ot-`ZIA~D6)rOpK95|jtUM0}v z84;?e4A9Qq&Gf664;expIY6f6PfZHv<^;aU%jg`RSSJ zI;yL0Ro!>sz#xqsGl5d;?-kqK8zZZ#fMt>j2lE{k$%IQyZ z=h6sKP8ThC;rPfnr%1A^>1?4{Me_)^zr|FB{tEq!!CPe(^+$je9rA785#88!`c({=(5iOxw*lYT3fpwG4i`P zjznHnVYl2Drmk=oE&aQ_ng|4Y1_U~PK19o__tWcdG_dVOg}J)V0qRf?iRYLb0!NX^ zs{|^aPjtojux1HF?1rCZe?g?h500g~?~K+HAZC;bK%{m5dN9z{6@HrsG*d>5^j^1K!!1mDjT8 zW!DU$->kopx&1NwaYGyA*}duD2P#gb*MeNrKNL)u9M`jO`Un2K&9n=nm)Ii z?zw+w(#JxQy!66#F)B(5#Eag2uZbS}>3BviIpERZbG3Sbzg#_~D=W*Nlk|yl*kV|F zoj}0E85ilbH;yEI9Bdpxppz$IBp+rH1`-Dz8e&D_L7Xr!l*?}_pu)mjCXo=3)M~^- z8hv~GLU8m|0~hIC{kL2ar2~Pmu)5^M0R4F0M@g@VVTl6X7zp$?RiE}be({52n8$YU zVwkpm@GT>1s_Skb=Uwx!L>kErdXBf$CQ1ha0mT!1wEMqL>AJaPrBU?+V_fNYY=`ve z*U!(=MT}Uu#rqT$s*M92gH^do6dFf zE-6XF5)!2ofrtkfl`;{vK&;fOd08V0b=$ykap>^btg~k?-l*qT(@B(W1Ol!o$xfK! z5f6eycipMnHVH0%A$RL@a|4E*Go(@LnXajNjy07;=|~`~)~5myn1t)TvZjp1iv(Z* zBX$IYLJ?Z?^J{6{3)e9f2!kB|!|)!MM65_)fBhL6lAk?R Z{ojI96$Y~xt%t!eJ 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_topic.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/kafka_topic.png new file mode 100644 index 0000000000000000000000000000000000000000..2556f3a68c8c9cf36c8be911a85d4cd1e719472b GIT binary patch literal 3730 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/ozone.png new file mode 100644 index 0000000000000000000000000000000000000000..6004dc6b743928b7bce6d1069181420cb51a0c7b GIT binary patch literal 3512 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 mh~*XQztL-FrnES+0QeU=b(S% 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3cb4fd12490cb2daedd0f2700310a7b7783f94 GIT binary patch literal 3173 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 LNkvXXu0mjffpFBl literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_column.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_column.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3c598caae0e7a1b32f768ca536e5f407a8a63d GIT binary patch literal 3909 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 literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_db.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_db.png new file mode 100644 index 0000000000000000000000000000000000000000..ff40a4d2902f5d530f42952a199a921524d016e1 GIT binary patch literal 5153 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 P00000NkvXXu0mjf3?ruR literal 0 HcmV?d00001 diff --git a/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_table.png b/web/packages/dataAssetManage/view/assetsInfo/components/lineage/icon/rdbms_table.png new file mode 100644 index 0000000000000000000000000000000000000000..174221fef108f7041ea8217e4988fe6041cfef12 GIT binary patch literal 3992 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 y8#xsHt2Vycty@A(6iG54KAXO%WM*%X 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