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

ec-print

v1.0.6

Published

print toolkit for e-commerce ,integrated cainiao,pinduouo,jingdong,kuaishou,douyin ...

Downloads

80

Readme

ec-print

All in one print toolkit for e-commerce ,integrated cainiao,pinduouo,jingdong,kuaishou,douyin ...

Commitizen friendly Continuous Deployment FOSSA Status GitHub license


Platform supports & Docs

dependences

Quickstart

install

yarn add ec-print

use in your project

import Printer,{Providers} from 'ec-print';

const cainiao = new Providers.Cainiao(undefined, {
  WebSocket,
  // maxRetries: 2,
  debug: true,
});
const doudian = new Providers.Doudian(undefined, {
  WebSocket,
  debug: true,
});
const printer = new Printer();
printer.register([
  { key: cainiao.providerKey, provider: cainiao },
  { key: doudian.providerKey, provider: doudian },
]);
async run(){
  const connected = await printer.connect();
  console.log('connected', connected);
  const version = await printer.getAgentInfo('cainiao');
  console.log('version', version);
  const res1 = await printer.print<Response>(cainiao_print_task);
  console.log('cainiao print response', res1);
  const res2 = await printer.print(douyin_print_task, 'doudian');
  console.log('douyin print response', res2);
}

features

Auto reconnect

see reconnecting-websocket

options

type SocketOptions = {
    WebSocket?: any; // WebSocket constructor, if none provided, defaults to global WebSocket
    maxReconnectionDelay?: number; // max delay in ms between reconnections
    minReconnectionDelay?: number; // min delay in ms between reconnections
    reconnectionDelayGrowFactor?: number; // how fast the reconnection delay grows
    minUptime?: number; // min time in ms to consider connection as stable
    connectionTimeout?: number; // retry connect if not connected after this time, in ms
    maxRetries?: number; // maximum number of retries
    maxEnqueuedMessages?: number; // maximum number of messages to buffer until reconnection
    startClosed?: boolean; // start websocket in CLOSED state, call `.reconnect()` to connect
    debug?: boolean; // enables debug output
    autoReconnect?: boolean; //if true attempt to reconnect when send message to ws
};

custom printer provider

import { PrinterProvider, PrinterProps} from 'ec-printer';
class CustomPrinter extends PrinterProvider {
  readonly providerKey: string = 'yourKey';
  private version: string;
  constructor(props: PrinterProps = { url: 'ws://localhost:1111' }) {
    const url = props.url;
    super({ url, options: props.options });
    this.version = props.version || '1.0';
  }
  // implement abstract methods handleResponseMessage and handleRequestMessage
  handleResponseMessage<T extends Response>(event: MessageEvent<any>): T {
    const res = JSON.parse(event.data);
    let success = true;
    if (res.status) {
      success = res.status === 'success';
    }
    return { ...res, success } as unknown as T;
  }
  handleRequestMessage<T extends JsonObject>(jsonData: Request): T {
    return jsonData as unknown as T;
  }
  protected getRequestHeader(cmd: CMD): { cmd: CMD; version: string } {
    return {
      cmd,
      version: this.version || '1.0',
    };
  }
}

then

const printer = new Printer();
printer.register([
  { key: cainiao.providerKey, provider: cainiao },
  { key: 'providerKey', provider: new CustomPrinter() },
]);

printer.connect().then(res=>{
  printer.getPrinter('providerKey')
})

Demos

nodejs-example vue3-example

License

FOSSA Status

Analytics

Alt