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

@juzi/wechaty-puppet

v1.0.99

Published

Abstract Puppet for Wechaty

Downloads

1,697

Readme

wechaty-puppet

Powered by Wechaty NPM Version npm (tag) TypeScript Linux/Mac Build Status ES Modules

chatie puppet

Picture Credit: https://www.shareicon.net

Abstract(Base) Class of Puppet Providers for Wechaty Framework.

This module is part of the Wechaty Framework SDK.

Learn more at:

  1. Wiki: https://github.com/wechaty/wechaty/wiki/Puppet
  2. Issue: https://github.com/wechaty/wechaty/issues/1167

Documentation

Wechaty Puppet Provider Interface Documentation can be found at https://wechaty.github.io/wechaty-puppet/typedoc/classes/puppet.html

Automatica Generated by TypeDoc

Example

PuppetMock: https://github.com/wechaty/wechaty-puppet-mock

The above puppet provider is just for mocking and easy to understand. It will be a good starter when you want to develope a new puppet by yourself for fullfil your need, for example, connect Wechaty with Wechat Official Account.

Providers

Dependencies

  1. FileBox (npm module file-box) MUST be imported from wechaty-puppet because all the Wechaty Framework needs to check instanceof FileBox, we must be sure all FileBox is the same version.
  2. MemoryCard (npm module memory-card) MUST be imported from wechaty-puppet because all the Wechaty Framework needs to check instanceof MemoryCard, we must be sure all MemoryCard is the same version.

Peer Dependence

Puppet(npm module wechaty-puppet) itself must be a peer Dependencies for all the Puppet Providers, and should only be installed via Wechaty because all Puppet Providers should share the same Puppet Base Class with Wechaty, we must be sure all Puppet is the same version.

Wechaty Puppet Toolsets

1. Using SwitchState

You can get to know the puppet start/stop state from the state property:

  1. puppet.state.on() === 'pending' will be true when the puppet is starting
  2. puppet.state.on() === true will be true when the puppet is started
  3. puppet.state.off() === 'pending' will be true when the puppet is stoping
  4. `puppet.state.off() === true' will be true when the puppet is stopped

Learn more about the puppet.state at https://github.com/huan/state-switch

2. Using Brolog

Using Brolog to output necessary log messages.

2.1 Get log from Brolog

import { log } from 'brolog'

2.2 Log Format

log.verbose('ModuleName', 'methodName() Your Verbose Message Here')
log.silly('ModuleName', 'methodName() Your Silly Message Here')

2.3 Log Level

Brolog has five log levels, it should be used and follow the following rules:

| Log Level | What does it means | Usage in Puppet | | :--- | :--- | :--- | | log.silly() | There's some detail debug information | Can be used in everywhere as you like | | log.verbose() | There's some debug information | Should be used at the beginning of every method() | | ~~log.info()~~ | ~~There's something we need to let user know~~ | ~~Should NEVER to be used because Puppet is Library~~ | | log.warn() | There's a Coverable Error | Should not be used unless we have to | | log.error() | There's a Un-covered Error | Should not be used unless we have to |

3. Using LRU Cache

Set the max size for wechaty entities in LRU Cache.

| Env Name | What does it means | | :--- | :--- | | WECHATY_PUPPET_LRU_CACHE_SIZE_CONTACT | The max cache size for contact, default value 3000 | | WECHATY_PUPPET_LRU_CACHE_SIZE_FRIENDSHIP | The max cache size for friendship, default value 100 | | WECHATY_PUPPET_LRU_CACHE_SIZE_MESSAGE | The max cache size for message, default value 500 | | WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM | The max cache size for room, default value 500 | | WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM_INVITATION | The max cache size for room invitation, default value 100 | | WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM_MEMBER | The max cache size for room member, default value 30000 |

Resources

Pure Function

Mixin

History

master v1.0 - Initial Release

v0.49 (Oct 2021)

  1. ~~Add Error interface to EventErrorPayload, and make .data optional~~
  2. Using Mixin to extend Puppet

v0.43 (Aug 28, 2021)

  1. Support ES Modules

v0.16 (Sep 2019)

Works with the following Puppet Providers:

  1. wechaty-puppet-puppeteer
  2. wechaty-puppet-padchat
  3. wechaty-puppet-mock
  4. wechaty-puppet-wechat4u

v0.0.1 (Jun 2018)

  1. Define the Abstract Puppet Layer for Wechaty
  2. Seperate code from Wechaty

Author

Huan LI (李卓桓) [email protected]

Profile of Huan LI (李卓桓) on StackOverflow

Copyright & License

  • Code & Docs © 2018-now Huan LI <[email protected]>
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons