1.0.7 • Published 1 month ago

sip2-async v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

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
1.0.7

1 month ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago