Socket
Socket
Sign inDemoInstall

@vtfk/azure-servicebus-queue

Package Overview
Dependencies
114
Maintainers
3
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.5 to 1.0.6

9

package.json
{
"name": "@vtfk/azure-servicebus-queue",
"version": "1.0.5",
"version": "1.0.6",
"description": "High-level API for Azure Servicebus Queue operations",

@@ -12,3 +12,4 @@ "main": "src/index.js",

"test": "standard && npm audit && ava",
"example": "node examples/example"
"example": "node examples/example",
"example-bigfile": "node examples/example-bigfile"
},

@@ -23,3 +24,5 @@ "keywords": [

"dependencies": {
"@azure/service-bus": "1.0.0-preview.2"
"@azure/service-bus": "1.0.0-preview.2",
"@vtfk/azure-storage-blob": "1.0.3",
"uuid": "3.3.2"
},

@@ -26,0 +29,0 @@ "repository": {

@@ -27,2 +27,6 @@ # (WIP) azure-servicebus-queue

connectionString: '<Servicebus Connection String>'
/* Uncomment to send and receive messages >64kb
storageConnectionString: '<Blob Service SAS URL>'
storageContainerName: '<Container name>'
*/
})

@@ -91,3 +95,3 @@ ```

const dateToSend = new Date().toISOString()
const message = 'Message'
const message = { body: 'message' }
await topic.scheduleMessage(dateToSend, message)

@@ -100,3 +104,3 @@ ```

const dateToSend = new Date().toISOString()
const messages = [{ message: '1' }, { message: '2' }]
const messages = [{ body: '1' }, { body: '2' }]
await topic.scheduleMessages(dateToSend, messages)

@@ -103,0 +107,0 @@ ```

const { ServiceBusClient, ReceiveMode } = require('@azure/service-bus')
const storage = require('@vtfk/azure-storage-blob')
const uuid = require('uuid/v4')
function messageSizeOverLimit (s) {
return ~-encodeURI(JSON.stringify(s)).split(/%..|./).length >= 64000
}
module.exports = options => {

@@ -12,4 +18,9 @@ if (!options) {

const serviceBusClient = ServiceBusClient.createFromConnectionString(options.connectionString)
let client
let client, storageClient
if (options.storageConnectionString && options.storageContainerName) {
const storageConnection = storage({ connectionString: options.storageConnectionString })
storageClient = storageConnection.container(options.storageContainerName)
}
async function closeServiceBusClient () {

@@ -32,5 +43,18 @@ if (client) await client.close()

function send (message) {
async function send (message) {
const sender = client.createSender()
return sender.send(message)
if (messageSizeOverLimit(message)) {
if (!storageClient) {
throw Error('You need to initialize storage blob connection to send messages >64 kb')
}
const fileId = uuid() + '.json'
try {
await storageClient.writeText(fileId, JSON.stringify(message))
return sender.send({ body: { fileId } })
} catch (error) {
throw error
}
} else {
return sender.send(message)
}
}

@@ -53,2 +77,9 @@

function readBigMessage (fileId) {
if (!storageClient) {
throw Error('You need to initialize storage blob connection to receive messages >64 kb')
}
return storageClient.read(fileId)
}
async function receive (limit = 1, timeoutInSeconds = 5) {

@@ -60,3 +91,8 @@ const receiver = client.createReceiver(ReceiveMode.peekLock)

if (!message.length) return messages
messages.push(message[0].body)
if (message[0].body && message[0].body.fileId) {
const content = await readBigMessage(message[0].body.fileId)
messages.push(content)
} else {
messages.push(message[0].body)
}
await message[0].complete()

@@ -68,2 +104,14 @@ }

close: () => closeServiceBusClient(),
subscription: (topicName, subscriptionName) => {
if (!topicName) {
throw Error('Missing required input: topicName')
}
if (!subscriptionName) {
throw Error('Missing required input: subscriptionName')
}
client = serviceBusClient.createSubscriptionClient(topicName, subscriptionName)
return {
// TODO: Subscription Client operations
}
},
topic: topicName => {

@@ -70,0 +118,0 @@ if (!topicName) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc