stub-azure-function-context
Version:
Provides an object similar to Function Runtime's context for use in unit testing
60 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueueBinding = void 0;
const crypto_1 = require("crypto");
const MESSAGE_MAP = {
messageId: 'id',
messageText: 'queueTrigger',
dequeueCount: 'dequeueCount',
expiresOn: 'expirationTime',
insertedOn: 'insertionTime',
nextVisibleOn: 'nextVisibleTime',
popReceipt: 'popReceipt',
};
class QueueBinding {
static createFromMessageText(queueTrigger) {
const now = Date.now();
return new QueueBinding({
id: (0, crypto_1.randomUUID)(),
queueTrigger,
dequeueCount: 1,
insertionTime: new Date(now).toJSON(),
expirationTime: new Date(now + (7 * 24 * 60 * 60 * 1000)).toJSON(),
nextVisibleTime: new Date(now + (5 * 60 * 1000)).toJSON(),
popReceipt: (0, crypto_1.randomUUID)(),
});
}
static createFromDequeuedMessageItem(messageItem) {
const keys = Object.keys(MESSAGE_MAP);
const bindingData = keys.reduce((bindingData, messageKey) => {
const key = MESSAGE_MAP[messageKey];
return {
...bindingData,
[key]: messageItem[messageKey],
};
}, {});
return new QueueBinding(bindingData);
}
data;
constructor(bindingData) {
this.data = bindingData;
}
toContextBinding() {
return this.data;
}
toTrigger() {
if (typeof this.data.queueTrigger === 'string') {
try {
return JSON.parse(this.data.queueTrigger);
}
catch (e) {
}
}
return this.data.queueTrigger;
}
toBindingData() {
return this.data;
}
}
exports.QueueBinding = QueueBinding;
//# sourceMappingURL=queue-binding.js.map