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

sip2-async

v1.0.7

Published

Async 3M SIP2 protocol client

Downloads

61

Readme

SIP2 Async

main NPM version NPM downloads

Promise-based SIP2 client for Node.

This is based on the node-sip2 package.

Installation

npm install sip2-async

or

yarn add sip2-async

Example Usage

Example usage for getting Item Information:

import SIP2 from 'sip2-async' // set "type": "module" in the package.json

const sipUser = ''
const sipPass = ''
const sipInst = ''
const itemId = ''

// Default options
const options = {
  host: 'localhost',
  port: 6001,
  timezoneOffset: '+0000', // set to server timezone, useful if logs need to be saved
  dueDateFormat: 'YYYYMMDD', // format returned by the server
  terminator: 'CR', // response is empty if set incorrectly, use 'CRLF' for Koha
  verbose: false, // set to true to get all the fields in response
  debug: false // set to true to get request and response messages in 'debugData{}'
}

const socket = new SIP2.Client(options)
await socket.connect()

// Login
const loginRequest = new SIP2.LoginRequest(sipUser, sipPass, sipInst)
loginRequest.sequence = 1 // optional, default: 1
const loginResponse = await socket.send(loginRequest.getMessage())

// Item Information
if (!loginResponse.ok) {
  console.log('SIP2 login failed')
} else {
  const itemRequest = new SIP2.ItemInformationRequest(itemId)
  itemRequest.sequence = 2 // optional, default: 2
  itemRequest.institutionId = sipInst
  const itemResponse = await socket.send(itemRequest.getMessage())
  console.log(itemResponse)
}
socket.close()

Motivation

Initial attempts to modify the node-sip2 package was just to Promisify the responses. However, there was a need to allow ESM import so that it could be easily modified within the same project. Then many other changes were necessitated by the editor/linter for syntax and code re-use.

Features

  • Promise (async/await) responses instead of callbacks.
  • Response data structure simplified (titleIdentifier -> title, patronIdentifier -> patronId, etc.).
  • Some fields are grouped such as summaryCount{} and blocks[] in PatronInformation.
  • More often than not the empty fields are ignored in response payload.
  • Choose suitable terminator (CR|CRLF) as per server implementation. Koha defaults to CRLF.
  • Parse transaction date as per the timezone offset in the Client options.
  • Use the verbose option to get all the fields in response payload. Default: false.
  • Replaced dateformat with date-and-time since it can do both parsing and formatting.
  • Convert the dueDate to Date object using the date-and-time package. Koha responds in YYYYMMDD...

Tests

yarn install
yarn test