npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@czwcode/graph-core

v0.0.15

Published

### 优化运行逻辑 > 当前已经有了运行状态,并且指定了作用域,当该次任务运行到一个阶段后,触发了另外一个任务 ** 4种触发任务类型 ** - 运行任务的点 - 完全重复 - 运行任务的上游点 - 将要运行的点与触发点要触发任务重复 - 运行任务的下游点 - 运行点全部重复 - 运行任务的无关点 - 两个图之间没有关系,各自运行

Readme

运行点作为触发点的时候,怎么保证过去作用域的内容还能执行到

优化运行逻辑

当前已经有了运行状态,并且指定了作用域,当该次任务运行到一个阶段后,触发了另外一个任务 ** 4种触发任务类型 **

  • 运行任务的点
  • 完全重复
  • 运行任务的上游点
    • 将要运行的点与触发点要触发任务重复
  • 运行任务的下游点
    • 运行点全部重复
  • 运行任务的无关点
    • 两个图之间没有关系,各自运行

多图获取

  • 入参
    • 运行的点,以及运行的作用域
    • 当前触发的点,以及当前触发的作用域
  • 出参
    • 获取多图

多图合并,生成最小图

  • 清理重复节点
  • 构成一个新图
  • 获取图的运行路径

用图的方式,来维护任务之间关系

用 DAG(有向无环图) 来描述任务之间的依赖关系,是一个比较常见的调度依赖实现方式。 For example, suppose you have a list of tasks where some tasks have to wait on others before they can begin. You can model this using an acyclic directed graph:

  • 环检测
  • 状态管理(任务失败 && 任务Pending)
    • 获取从起点 到 终点间经历的所有点
  • 任务依赖管理
    • 所有的任务都应该在依赖的任务完成之后才执行
  • 任务流合并
    • 运行时的图 是 全局图的子图,临时任务图将会和运行图进行合并,合并完,将以最新的子图,完成所有任务
    • 任务触发,通过作用域全选子图,并通过触发点,在子图寻找将要运行的路径上所有的点
  • 任务取消(性能优化)
    • 当任务流还在进行时,新的任务流触发了,将会取消所有在新的任务流中将被触发的任务,从而避免任务的重复执行
  • 任务中断
    • 当任务正在执行时,有新的任务节点触发了,将会中断所有在新的任务流中将被触发的任务
  • 任务失败 & 任务重试
    • 当任务失败后,将会终止所有后续的任务,并提供从当前任务节点的信息,当前错误的任务链,用户可以进行重试
  • 多任务链,并行执行
    • 多个任务链,当没有任务依赖的时候,将会并发执行

报表中,我最关注什么

作为一个常年奋斗在撸报表一线的开发人员,业务同学最关注的是啥?页面好看?动画酷炫?不,是数据,数据,数据的准确性(重要的事情说三遍)

就我的经验而言,业务同学对数据容忍度为 错误提示 > 空数据 > 错误数据。

总结下来就是,你要么给出正确的数据,要么干脆就别给我,不然我那种错误数据分析了一轮又一轮,还得到一个错误的结论,最后告诉我数据是错的?

作为前端,分析可能让页面数据错误的原因

  • 后端数据错误 请清空数据, 并给出错误提醒, 不然我会以为这是我这次查询到的
  • 竞态问题
    • 连续请求,返回数据的时序问题
    • 筛选错误,没有阻断,没有提醒,导致拿着不符合预期的筛选条件去请求

另外一个比较验证的问题就是页面的性能问题了,通常数据报表的数据量都会比较大

  • 如何保证最小的渲染次数
  • 如何渲染最少的数据量(虚拟滚动)

糟糕的页面表现?

大多数的页面糟糕都是由于 竞态问题导致的

  • 比如筛选切换的时候,第一次请求比第二次请求回来的更晚?
    • 大多数情况不会出现?简单的场景,当后端做了请求缓存,我第二次请求命中的是缓存,就很可能发生这样的问题
  • 当你再一小段时间内进行多次筛选的操作,你的数据请求还可控吗?
  • 请求失败之后,用户没有体感?我用了错误的数据分析了半天?
  • 请求失败之后,怎样重试?