JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 13
  • Score
    100M100P100Q54248F
  • License MIT

Async 3M SIP2 protocol client

Package Exports

  • sip2-async
  • sip2-async/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sip2-async) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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