fixparser-common 9.3.4 → 9.3.5-b69bb514
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
MessageBuffer: () => MessageBuffer,
|
|
24
|
+
uuidv4: () => uuidv4
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
|
+
|
|
1
28
|
// src/MessageBuffer.ts
|
|
2
29
|
var MessageBuffer = class {
|
|
3
30
|
/**
|
|
@@ -168,8 +195,9 @@ var uuidv4 = () => {
|
|
|
168
195
|
return v.toString(16);
|
|
169
196
|
});
|
|
170
197
|
};
|
|
171
|
-
export
|
|
198
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
199
|
+
0 && (module.exports = {
|
|
172
200
|
MessageBuffer,
|
|
173
201
|
uuidv4
|
|
174
|
-
};
|
|
175
|
-
//# sourceMappingURL=index.
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts", "../../src/MessageBuffer.ts", "../../src/uuidv4.ts"],
|
|
4
|
+
"sourcesContent": ["export { ILogTransporter } from './ILogTransporter';\nexport type { IMessage } from './IMessage';\nexport type { IMessageStore } from './IMessageStore';\nexport type { IPlugin } from './IPlugin';\nexport { Level } from './Level';\nexport { LogMessage } from './LogMessage';\nexport { MessageBuffer } from './MessageBuffer';\nexport { uuidv4 } from './uuidv4';\n", "import type { IMessageStore } from './IMessageStore';\n\n/**\n * A buffer that stores items of type `T` up to a specified maximum size.\n * Implements the IMessageStore interface for generic types.\n */\nexport class MessageBuffer<T> implements IMessageStore<T> {\n /**\n * A number representing the next expected message sequence number.\n * @private\n */\n private nextMsgSeqNum = 1;\n\n /**\n * An array holding the items in the buffer.\n * @private\n */\n private buffer: T[] = [];\n\n /**\n * The maximum capacity of the buffer.\n * @private\n */\n private maxBufferSize: number;\n\n constructor(maxBufferSize = 2500) {\n this.maxBufferSize = maxBufferSize;\n }\n\n /**\n * Adds a new item to the buffer.\n * If the buffer is full, the oldest item is removed to make space for the new one.\n *\n * @param {T} item - The item to add to the buffer.\n * @returns {void}\n */\n public add(item: T): void {\n if (this.buffer.length === this.maxBufferSize) {\n this.buffer.pop();\n }\n this.buffer.unshift(item);\n }\n\n /**\n * Retrieves an item from the buffer by its sequence number (or any other identifier).\n *\n * @param {number} msgSequence - The sequence number of the item to retrieve.\n * @returns {T | undefined} The item if found, or `undefined` if not found.\n */\n public getByMsgSequence(msgSequence: number): T | undefined {\n const index: number = this.buffer.findIndex((item: any) => item.messageSequence === msgSequence);\n if (index > -1) {\n return this.buffer[index];\n }\n return undefined;\n }\n\n /**\n * Removes an item from the buffer by its sequence number.\n *\n * @param {number} msgSequence - The sequence number of the item to remove.\n * @returns {void}\n */\n public remove(msgSequence: number): void {\n const index: number = this.buffer.findIndex((item: any) => item.messageSequence === msgSequence);\n if (index > -1) {\n this.buffer.splice(index, 1);\n }\n }\n\n /**\n * Updates an item in the buffer.\n *\n * @param {number} msgSequence - The sequence number of the item to update.\n * @param {T} item - The updated item.\n * @returns {boolean} - Returns `true` if the item was updated successfully, `false` otherwise.\n */\n public update(msgSequence: number, item: T): boolean {\n const index: number = this.buffer.findIndex(\n (existingItem: any) => existingItem.messageSequence === msgSequence,\n );\n if (index > -1) {\n this.buffer[index] = item;\n return true;\n }\n return false;\n }\n\n /**\n * Retrieves all items from the buffer.\n *\n * @returns {T[]} - An array of all items in the buffer.\n */\n public getAll(): T[] {\n return this.buffer;\n }\n\n /**\n * Checks if an item with a given sequence number exists in the buffer.\n *\n * @param {number} msgSequence - The sequence number of the item to check.\n * @returns {boolean} - `true` if the item exists, `false` otherwise.\n */\n public exists(msgSequence: number): boolean {\n return this.buffer.some((item: any) => item.messageSequence === msgSequence);\n }\n\n /**\n * Gets the current size of the buffer (the number of items it contains).\n *\n * @returns {number} The number of items currently in the buffer.\n */\n public size(): number {\n return this.buffer.length;\n }\n\n /**\n * Resizes the buffer's capacity.\n *\n * @param {number} newCapacity - The new maximum capacity for the buffer.\n * @returns {void}\n */\n public resize(newCapacity: number): void {\n this.maxBufferSize = newCapacity;\n // If the buffer is larger than the new capacity, trim it.\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer = this.buffer.slice(0, this.maxBufferSize);\n }\n }\n\n /**\n * Clears all items from the buffer.\n *\n * @returns {void}\n */\n public clear(): void {\n this.buffer = [];\n }\n\n /**\n * Gets the maximum capacity of the buffer.\n *\n * @returns {number} The maximum number of items the buffer can hold.\n */\n public getCapacity(): number {\n return this.maxBufferSize;\n }\n\n /**\n * Set the next message sequence number.\n *\n * @param nextMsgSeqNum - The next message sequence number.\n * @returns {number} - The next message sequence number.\n */\n public setNextMsgSeqNum(nextMsgSeqNum: number): number {\n if (nextMsgSeqNum <= 0) {\n throw new Error('Message sequence number must be positive.');\n }\n this.nextMsgSeqNum = nextMsgSeqNum;\n return this.nextMsgSeqNum;\n }\n\n /**\n * Get the next message sequence number.\n *\n * @returns {number} - The next message sequence number.\n */\n public getNextMsgSeqNum(): number {\n return this.nextMsgSeqNum;\n }\n}\n", "let randomIterator = 0;\nconst timeBasedRandom = (min: number, max: number): number => {\n const timeNow = Date.now() % 1000;\n randomIterator++;\n let x = timeNow ^ randomIterator;\n x ^= x << 21;\n x ^= x >>> 35;\n x ^= x << 4;\n const timeBasedRandom = Math.abs(x % (max - min + 1));\n return min + timeBasedRandom;\n};\n\nexport const uuidv4 = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = timeBasedRandom(0, 15);\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["timeBasedRandom"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fixparser-common",
|
|
3
|
-
"version": "9.3.
|
|
3
|
+
"version": "9.3.5-b69bb514",
|
|
4
4
|
"description": "FIXParser shared codebase",
|
|
5
5
|
"files": [
|
|
6
6
|
"./build/",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"./LICENSE.md",
|
|
9
9
|
"./README.md"
|
|
10
10
|
],
|
|
11
|
-
"main": "./build/cjs/index.
|
|
11
|
+
"main": "./build/cjs/index.cjs",
|
|
12
12
|
"type": "module",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
".": {
|
|
31
31
|
"types": "./types/index.d.ts",
|
|
32
32
|
"import": "./build/esm/index.mjs",
|
|
33
|
-
"require": "./build/cjs/index.
|
|
33
|
+
"require": "./build/cjs/index.cjs"
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {}
|
package/build/cjs/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/MessageBuffer.ts", "../../src/uuidv4.ts"],
|
|
4
|
-
"sourcesContent": ["import type { IMessageStore } from './IMessageStore';\n\n/**\n * A buffer that stores items of type `T` up to a specified maximum size.\n * Implements the IMessageStore interface for generic types.\n */\nexport class MessageBuffer<T> implements IMessageStore<T> {\n /**\n * A number representing the next expected message sequence number.\n * @private\n */\n private nextMsgSeqNum = 1;\n\n /**\n * An array holding the items in the buffer.\n * @private\n */\n private buffer: T[] = [];\n\n /**\n * The maximum capacity of the buffer.\n * @private\n */\n private maxBufferSize: number;\n\n constructor(maxBufferSize = 2500) {\n this.maxBufferSize = maxBufferSize;\n }\n\n /**\n * Adds a new item to the buffer.\n * If the buffer is full, the oldest item is removed to make space for the new one.\n *\n * @param {T} item - The item to add to the buffer.\n * @returns {void}\n */\n public add(item: T): void {\n if (this.buffer.length === this.maxBufferSize) {\n this.buffer.pop();\n }\n this.buffer.unshift(item);\n }\n\n /**\n * Retrieves an item from the buffer by its sequence number (or any other identifier).\n *\n * @param {number} msgSequence - The sequence number of the item to retrieve.\n * @returns {T | undefined} The item if found, or `undefined` if not found.\n */\n public getByMsgSequence(msgSequence: number): T | undefined {\n const index: number = this.buffer.findIndex((item: any) => item.messageSequence === msgSequence);\n if (index > -1) {\n return this.buffer[index];\n }\n return undefined;\n }\n\n /**\n * Removes an item from the buffer by its sequence number.\n *\n * @param {number} msgSequence - The sequence number of the item to remove.\n * @returns {void}\n */\n public remove(msgSequence: number): void {\n const index: number = this.buffer.findIndex((item: any) => item.messageSequence === msgSequence);\n if (index > -1) {\n this.buffer.splice(index, 1);\n }\n }\n\n /**\n * Updates an item in the buffer.\n *\n * @param {number} msgSequence - The sequence number of the item to update.\n * @param {T} item - The updated item.\n * @returns {boolean} - Returns `true` if the item was updated successfully, `false` otherwise.\n */\n public update(msgSequence: number, item: T): boolean {\n const index: number = this.buffer.findIndex(\n (existingItem: any) => existingItem.messageSequence === msgSequence,\n );\n if (index > -1) {\n this.buffer[index] = item;\n return true;\n }\n return false;\n }\n\n /**\n * Retrieves all items from the buffer.\n *\n * @returns {T[]} - An array of all items in the buffer.\n */\n public getAll(): T[] {\n return this.buffer;\n }\n\n /**\n * Checks if an item with a given sequence number exists in the buffer.\n *\n * @param {number} msgSequence - The sequence number of the item to check.\n * @returns {boolean} - `true` if the item exists, `false` otherwise.\n */\n public exists(msgSequence: number): boolean {\n return this.buffer.some((item: any) => item.messageSequence === msgSequence);\n }\n\n /**\n * Gets the current size of the buffer (the number of items it contains).\n *\n * @returns {number} The number of items currently in the buffer.\n */\n public size(): number {\n return this.buffer.length;\n }\n\n /**\n * Resizes the buffer's capacity.\n *\n * @param {number} newCapacity - The new maximum capacity for the buffer.\n * @returns {void}\n */\n public resize(newCapacity: number): void {\n this.maxBufferSize = newCapacity;\n // If the buffer is larger than the new capacity, trim it.\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer = this.buffer.slice(0, this.maxBufferSize);\n }\n }\n\n /**\n * Clears all items from the buffer.\n *\n * @returns {void}\n */\n public clear(): void {\n this.buffer = [];\n }\n\n /**\n * Gets the maximum capacity of the buffer.\n *\n * @returns {number} The maximum number of items the buffer can hold.\n */\n public getCapacity(): number {\n return this.maxBufferSize;\n }\n\n /**\n * Set the next message sequence number.\n *\n * @param nextMsgSeqNum - The next message sequence number.\n * @returns {number} - The next message sequence number.\n */\n public setNextMsgSeqNum(nextMsgSeqNum: number): number {\n if (nextMsgSeqNum <= 0) {\n throw new Error('Message sequence number must be positive.');\n }\n this.nextMsgSeqNum = nextMsgSeqNum;\n return this.nextMsgSeqNum;\n }\n\n /**\n * Get the next message sequence number.\n *\n * @returns {number} - The next message sequence number.\n */\n public getNextMsgSeqNum(): number {\n return this.nextMsgSeqNum;\n }\n}\n", "let randomIterator = 0;\nconst timeBasedRandom = (min: number, max: number): number => {\n const timeNow = Date.now() % 1000;\n randomIterator++;\n let x = timeNow ^ randomIterator;\n x ^= x << 21;\n x ^= x >>> 35;\n x ^= x << 4;\n const timeBasedRandom = Math.abs(x % (max - min + 1));\n return min + timeBasedRandom;\n};\n\nexport const uuidv4 = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = timeBasedRandom(0, 15);\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["timeBasedRandom"]
|
|
7
|
-
}
|