Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@qn-pandora/app-sdk

Package Overview
Dependencies
Maintainers
2
Versions
132
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@qn-pandora/app-sdk

Pandora APP 核心渲染逻辑 SDK

  • 1.4.9
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
24
decreased by-73.91%
Maintainers
2
Weekly downloads
 
Created
Source

@qn-pandora/app-sdk

Manager

SearchManager

对 Pandora 平台搜索相关 API 进行封装

使用方式
  • 创建 SearchManager 传递参数
import { SearchManager } from '@qn-pandora/app-sdk'

const searchCondition = {
  queryString: 'repo="testjwzfr"',
  time: {
    start: 0,
    end: 1589770122581
  }
}
const option = {
  task: {
    event: true,
    summary: true,
    timeline: true,
    result: true
  }
}
const searchManager = new SearchManager({
  searchCondition: searchCondition,
  option: option
})
searchManager.on('done', data => {
  console.log('data', data)
})
searchManager.search()
  • 调用 search 方法时传递参数
import { SearchManager } from '@qn-pandora/app-sdk'

const searchCondition = {
  queryString: 'repo="testjwzfr"',
  time: {
    start: 0,
    end: 1589770122581
  }
}
const option = {
  task: {
    event: true,
    summary: true,
    timeline: true,
    result: true
  }
}
const searchManager = new SearchManager({
  option: option
})
searchManager.on('done', data => {
  console.log('data', data)
})
searchManager.search(searchCondition)
  • 通过 jobId 获取数据
import { SearchManager } from '@qn-pandora/app-sdk'

const searchCondition = {
  queryString: 'repo="testjwzfr"',
  time: {
    start: 0,
    end: 1589770122581
  }
}
const option = {
  task: {
    event: true,
    summary: true,
    timeline: true,
    result: true
  }
}
const searchManager = new SearchManager({
  option: option
})
const jobId = await searchManager.search(searchCondition)
searchManager.on('done', data => {
  const event = searchMangeer.getEvent(jobId)
  console.log('event', event)
})
参数介绍
  • searchCondition
  1. queryString: 搜索条件
  2. time: 搜索时间范围
    • start 搜索开始时间,时间戳
    • end 搜索结束时间,时间戳
  3. preview: 可选,是否预览数据,默认值为 true
  4. mode: 可选,搜索模式 "fast" | "smart" | "detailed", 默认值为"smart"
  • option
    • task,任务选项,根据需要开启特定任务进行计算
      1. event: 事件信息
      2. timeline: 时间柱
      3. summary: 字段汇总统计
      4. result: 聚合计算结果
方法
  • search() 开启搜索任务,参数为 searchCondition,是可选项,不填则使用创建 searchManager 时的 searchCondition。该函数是个 Promise 函数,返回创建好任务的 jobId。
  • getEvent(jobId) 获取事件信息结果
  • getTimeline(jobId) 获取时间柱结果
  • getSummary(jobId) 获取字段汇总统计结果
  • getResult(jobID) 获取聚合计算结果
  • stop() 停止当前任务
事件

可通过 on 函数注册监听事件回调函数

  • data 每一次轮训数据结束触发,当开启 preview 时,可获取到中间结果
  • done 轮训结束后触发,当搜索结果全部返回后触发回调,可直接在回调函数中获取完整搜索结果
  • error 轮训发生错误时触发,可获取到错误信息

LoginManager

对 Pandora 平台登录相关 API 进行封装

使用方式
  • pandora 登录
import { LoginManager, ELoginType } from '@qn-pandora/app-sdk'

const loginManager = new LoginManager(ELoginType.PANDORA)
loginManager.login({
  username: 'admin',
  password: 'admin'
})
  • SSO 登录
import { LoginManager, ELoginType } from '@qn-pandora/app-sdk'

const loginManager = new LoginManager(ELoginType.SSO)
loginManager.login({
  token:
    'MjNGNDEweHdnQ2pOWVpuNFpINkkzUVJQZ0I0MnBab2RNTGt6UGcya0h0aUFpVVNGOjcxNzdmNjRhN2RmZDdjN2UxMGQ1MmRiNmQxYmZkNGU0NjJlNzU3NDdhNjU1NGMyNzJlMzMwODgyNzFiY2IzODMyZGJiZTA1YTM4OWI3NDIyOTgxODkwZGYzYjMxYWI2NTk2OTY0MmI1NDZjMjMxZDRiZjNlZGE3YWMyYjc4MzFj'
})
支持方法

方法返回都为 Promise

  • login 登录
  • logout 登出
  • getUserInfo 获取用户信息

ReportManager

对 Pandora 平台报表管理相关 API 进行封装

使用方式
  • 创建 ReportManager 传递参数
import { ReportManager } from '@qn-pandora/app-sdk'

const fetchAll = true // false by default
const pageSize = 20 // 10 by default

const reportManager = new ReportManager(fetchAll, pageSize)
  • 列出所有报表
const lists = await reportManager.listReports()
  • 通过 id 查询报表信息
const reportId = '0'
const info = await reportManager.getReport(reportId)
  • 创建报表
const report = {
  name: 'testReport',
  time: {
    global: false,
    preset: 'AllTime'
  },
  spl: 'repo="tracing" | stats count() by host | where count > 10',
  description: 'description'
}

const res = await reportManager.createReport(report)
  • 更新报表
const report = {
  name: 'testReport',
  time: {
    global: false,
    preset: 'AllTime'
  },
  spl: 'repo="tracing" | stats count() by host | where count > 10',
  description: 'updated description'
}

const res = await reportManager.updateReport(report)
  • 删除报表
const reportId = '0'
const res = await reportManager.deleteReport(reportId)
参数介绍
  • 创建 reportManager 时的参数
  1. fetchAll: 是否拉取所有报表,默认值为 false,默认拉取 500 条,可通过设置 pageSize 改变拉取所有的数目
  2. pageSize: 每页拉取数目,默认为 10
  • 创建及更新 report 的参数
    1. name: 报表名称
    2. time: 报表时间范围
    3. spl: 搜索条件
    4. descrption: 描述

DatasetManager

对 Pandora 平台数据集管理相关 API 进行封装

使用方式
  • 创建 DatasetManager 传递参数
import { DatasetManager } from '@qn-pandora/app-sdk'

const fetchAll = true // false by default
const pageSize = 20 // 10 by default

const datasetManager = new DatasetManager(fetchAll, pageSize)
  • 列出所有数据集
const list = await datasetManager.listDatasets()
  • 通过 id 查询数据集信息
const datasetId = '0'
const info = await getDataset(datasetId)
  • 创建数据集
const baseDataset = {
  name: 'ds1',
  description: 'description',
  category: 'c1',
  transforms: [{ type: 'fields', fields: ['field1'] }],
  schemas: [{ name: 'name', type: 'long' }],
  dataSource: {
    query: 'query_string',
    time: {
      relative: 'relative',
      preset: 'preset',
      timeShift: 'timeShift',
      global: true
    }
  }
}

const res = await datasetManager.createDataset(baseDataset)
  • 更新数据集
const baseDataset = {
  name: 'ds1',
  description: 'description',
  category: 'c1',
  transforms: [{ type: 'fields', fields: ['field1'] }],
  schemas: [{ name: 'name', type: 'long' }],
  dataSource: {
    query: 'query_string',
    time: {
      relative: 'relative',
      preset: 'preset',
      timeShift: 'timeShift',
      global: true
    }
  }
}

const res = await datasetManager.updateDataset(baseDataset)
  • 删除数据集
const datasetId = '0'
const res = await deleteDataset(datasetId)
  • 创建分类
const categories = ['c1', 'c2']
const res = await datasetManager.setCategories(categories)
  • 展示分类
const list = await datasetManager.listCategory()
  • 获取数据集 spl
const datasetId = '0'
const datasetSpl = await datasetManager.getDatasetSpl(datasetId)
  • 获取转换 spl
const transforms = {
  type: 'fields',
  fields: ['f1', 'f2']
}

const transformSpl = await datasetManager.getTransformSpl(transforms)
参数介绍
  • 创建 datasetManager 时的参数
  1. fetchAll: 是否拉取所有报表,默认值为 false,默认拉取 500 条,可通过设置 pageSize 改变拉取所有的数目
  2. pageSize: 每页拉取数目,默认为 10
  • baseDataset

    1. name: 数据集名字
    2. description: 数据集描述
    3. category: 数据集类型
    4. transforms: 数据集中操作
    5. schemas: 数据集字段
    6. dataSource: 数据集数据源
      • query: 搜索条件
      • time: 时间

RepoManager

对 Pandora 平台仓库管理相关 API 进行封装

使用方式
  • 创建 RepoManager 传递参数
import { RepoManager } from '@qn-pandora/app-sdk'

const fetchAll = true // false by default
const pageSize = 20 // 10 by default

const repoManager = new RepoManager(fetchAll, pageSize)
  • 列出所有仓库
const list = await repoManager.listRepos()
  • 通过仓库名称查询仓库信息
const repoName = 'repo'
const info = await repoManager.getRepo(repoName)
  • 创建仓库
const repo = {
  name: 'repo',
  description: 'desciption',
  retention: -1
}

const res = await repoManager.createRepo(repo)
  • 更新仓库
const repo = {
  name: 'repo',
  description: 'updated desciption',
  retention: -1
}

const res = await reportManager.updateReport(report)
  • 删除仓库
const repoName = 'repo'
const res = await reportManager.deleteRepo(repoName)
参数介绍
  • 创建 repoManager 时的参数
  1. fetchAll: 是否拉取所有报表,默认值为 false,默认拉取 500 条,可通过设置 pageSize 改变拉取所有的数目
  2. pageSize: 每页拉取数目,默认为 10
  • repo
  1. name: 仓库名称
  2. description: 仓库描述
  3. retention: 存储时限

SourceTypeManager

对 Pandora 平台来源管理相关 API 进行封装

使用方式
  • 创建 SourceTypeManager 传递参数
import { SourceTypeManager } from '@qn-pandora/app-sdk'

const fetchAll = true // false by default
const pageSize = 20 // 10 by default

const sourceTypeManager = new SourceTypeManager(fetchAll, pageSize)
  • 列出所有来源
const list = await sourceTypeManager.listSourceType()
  • 通过来源名称查询来源信息
const sourceTypeName = 'sourceType'
const info = await sourceTypeManager.getSourceTypeByName(sourceTypeName)
  • 创建来源类型
const sourceType = {
  name: 'sourceType',
  description: 'desciption',
  category: 'c1',
  line: {
    type: 'auto'
  },
  datetime: {
    type: 'now'
  }
  advance: {
    charset: 'utf-8',
    fieldDiscovery: false
  }
}

const res = await sourceTypeManager.createSourceType(sourceType)
  • 删除来源类型
const sourceTypeName = 'sourceType'
const res = await sourceTypeManager.deleteSourceType(sourceTypeName)
参数介绍
  • 创建 sourceTypeManager 时的参数
  1. fetchAll: 是否拉取所有报表,默认值为 false,默认拉取 500 条,可通过设置 pageSize 改变拉取所有的数目
  2. pageSize: 每页拉取数目,默认为 10
  • sourceType
  1. name: 来源类型名称
  2. description: 来源类型描述
  3. category: 来源分类
  4. line: 换行规则
    • type: 换行规则(自动/单行/正则)
    • regex: 规则是正则时的正则式
  5. datetime: 时间戳
    • type: 时间戳类型(自动/当前/自定义)
    • zoneOffset: 自定义时区
    • dateTimePrefix: 自定义时间戳前缀
    • dateTimeFormat: 自定义时间戳格式
    • maxDateTimeLength: 自定义时间戳长度上限
  6. advance: 高级设置
    • charset: 编码方式
    • fieldDiscovery: 是否字段自动发现

PermissionManager

对 Pandora 平台应用权限管理相关 API 进行封装

使用方式
  • 创建 PermissionManager
import { PermissionManager } from '@qn-pandora/app-sdk'

const permissionManager = new PermissionManager()
  • 查看当前用户的功能权限

即通过权限(operation)查看当前用户有该权限的功能(function)。

const params = {
  operation: 'list'
}
const fucntions = await permissionManager.listFunctions(params)
  • 获取某个功能的权限列表
const params = {
  function: 'func1'
}
const operations = await permissionManager.listOperationsByFunction(params)
  • 查看某个资源的授权情况
const params = {
  funcName: 'func1',
  resourceID: '1',
}
const rolePerms = await permissionManager.listRolePerms(params)
  • 修改所有者
const params = {
  funcName: 'func1',
  resourceID: '1',
  owner: 'o1'
}
const res = await permissionManager.updateOwner(params)
  • 批量修改所有者
const params = {
  funcName: 'func1',
  resourceIds: ['0','1']
  owner: 'o1'
}
const res = await permissionManager.updateOwners(params)
  • 修改授权情况
const params = {
  funcName: 'func1',
  resourceID: '0',
  rolePerms: [
    {
      role: 'role0',
      operation: 'list'
    },
    {
      role: 'role1',
      operation: 'edit'
    }
  ]
}
const res = await permissionManager.updateResource(params)
  • 批量修改授权情况
const params = {
  funcName: 'func1',
  resourceIds: ['0','1'],
  rolePerms: [
    {
      role: 'role0',
      operation: 'list'
    },
    {
      role: 'role1',
      operation: 'edit'
    }
  ]
}
const res = await permissionManager.updateResources(params)
参数介绍
  1. funcName: 功能名称
  2. resourceID: 资源ID
  3. owner: 应用的所有者
  4. rolePerms: 角色权限(仅在修改角色权限时需要)
    • role: 角色名称
    • operation: 该角色有权限进行的操作
  5. resourceIds: 多个资源的ID数组(仅在批量修改角色权限或批量修改所有者时需要)

Bind

bind 装饰器用于为装饰的函数绑定 this 指针

使用方式

在类中装饰类的方法:

import bind from '@qn-pandora/app-sdk'

export class SomeClass extends UpperClass {
  @bind
  someFunction() {
    this.setData(someData) 
    // setData挂载在UpperClass上,this绑定在当前class上
  }
}
注意事项

bind装饰过的函数在被重载时,不可在重载函数中调用父集的当前函数,会导致父集的当前函数this指针异常。

FAQs

Package last updated on 22 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc