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 🙏

© 2024 – Pkg Stats / Ryan Hefner

aocudeo

v4.1.2

Published

Process organizer of asynchronous or/and synchronous interdependent code units

Downloads

37

Readme

Aocudeo

github action github action Coverage Status

通过注册位置信息并在其上绑定工作器回调,本包可用于以正确的顺序组织异步或同步代码流程。

An Organizer of Code Units that Depend on Each Other - Aocudeo, can organize your pipelining work with the correct order through the 'Position' registered by 'Workers'.

用例 Usage

加载插件 Loading Plugins

  1. 在索引模块中弄个加载器用来加载模块。

    Get a public loader for your plugins in the index.

    import Loader from 'aocudeo/async';
    
    export const loader = new Loader({ reuseable: false });
  2. 根据插件名称和位置信息插入插件。

    Insert the plugin with its name and dependencies' name.

    loader
      .addPosition('foo', {
        after: ['bar', 'baz'],
        preOf: 'foobar',
      })
      .addWorker('foo', async () => {
        await import('./plugins/foo.ts');
      });
  3. loader.execute();

简单流程工作 Simple Pipeline Work

借以 p-graph 的示例代码为例。

Do what p-graph's sample code do.

import Organizer, { Positions } from 'aocudeo/async';

const workers = new Map([
  ["putOnShirt", { run: () => Promise.resolve("put on your shirt") }],
  ["putOnShorts", { run: () => Promise.resolve("put on your shorts") }],
  ["putOnJacket", { run: () => Promise.resolve("put on your jacket") }],
  ["putOnShoes", { run: () => Promise.resolve("put on your shoes") }],
  ["tieShoes", { run: () => Promise.resolve("tie your shoes") }],
]);

const positions: Positions = [
  // You need to put your shoes on before you tie them!
  ["putOnShoes", "tieShoes"],
  ["putOnShirt", "putOnJacket"],
  ["putOnShorts", "putOnJacket"],
  ["putOnShorts", "putOnShoes"],
];

await new Organizer({ workers, positions }).execute();

流水线处理 Pipeline Process

以下这个用例导出一个用于得到一个穿好衣服的人的函数 getPerson

The following usage exports getPerson to obtain a person dressed properly.

import Organizer from "aocudeo/async";

export interface Person {
  shorts?: 'shorts';
  shoes?: 'shoes';
  tied: boolean;
}

const organizer = new Organizer<Person>()
  .addPositions({
    putOnShoes: 'putOnShorts',
    tieShoes: { postOf: 'putOnShoes' },
  })
  .addWorkers({
    async putOnShorts({ data: person }) {
      person.shorts = await Promise.resolve('shorts');
    },
    async putOnShoes({ data: person }) {
      person.shoes = await Promise.resolve('shoes');
    },
    async tieShoes({ data: person }) {
      person.tied = await Promise.resolve(true);
    },
  });

export async function getPerson() {
  return await organizer.execute({ tied: false });
}

链接 Links

  • p-graph

    功能上与本包类似。

    Functionally similar to this package.