@homaiohq/napi-quickfix 0.0.0-stage → 0.1.0
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.
- package/CMakeLists.txt +131 -0
- package/LICENSE +21 -0
- package/README.md +421 -2
- package/THIRD_PARTY_LICENSES +48 -0
- package/cpp/acceptor_wrap.cpp +234 -0
- package/cpp/acceptor_wrap.h +57 -0
- package/cpp/addon.cpp +83 -0
- package/cpp/application_bridge.cpp +382 -0
- package/cpp/application_bridge.h +151 -0
- package/cpp/data_dictionary_wrap.cpp +79 -0
- package/cpp/data_dictionary_wrap.h +37 -0
- package/cpp/engine_common.cpp +5 -0
- package/cpp/engine_common.h +19 -0
- package/cpp/engine_workers.h +86 -0
- package/cpp/enums.cpp +66 -0
- package/cpp/errors.h +142 -0
- package/cpp/initiator_wrap.cpp +255 -0
- package/cpp/initiator_wrap.h +69 -0
- package/cpp/message_wrap.cpp +195 -0
- package/cpp/message_wrap.h +53 -0
- package/cpp/session_id_wrap.cpp +91 -0
- package/cpp/session_id_wrap.h +46 -0
- package/cpp/session_settings_wrap.cpp +98 -0
- package/cpp/session_settings_wrap.h +40 -0
- package/cpp/session_static.cpp +93 -0
- package/dist/cjs/acceptor.d.ts +30 -0
- package/dist/cjs/acceptor.d.ts.map +1 -0
- package/dist/cjs/acceptor.js +39 -0
- package/dist/cjs/acceptor.js.map +1 -0
- package/dist/cjs/application.d.ts +116 -0
- package/dist/cjs/application.d.ts.map +1 -0
- package/dist/cjs/application.js +63 -0
- package/dist/cjs/application.js.map +1 -0
- package/dist/cjs/data-dictionary.d.ts +49 -0
- package/dist/cjs/data-dictionary.d.ts.map +1 -0
- package/dist/cjs/data-dictionary.js +77 -0
- package/dist/cjs/data-dictionary.js.map +1 -0
- package/dist/cjs/engine.d.ts +114 -0
- package/dist/cjs/engine.d.ts.map +1 -0
- package/dist/cjs/engine.js +138 -0
- package/dist/cjs/engine.js.map +1 -0
- package/dist/cjs/enums.d.ts +22 -0
- package/dist/cjs/enums.d.ts.map +1 -0
- package/dist/cjs/enums.js +49 -0
- package/dist/cjs/enums.js.map +1 -0
- package/dist/cjs/generated/fields.d.ts +6123 -0
- package/dist/cjs/generated/fields.d.ts.map +1 -0
- package/dist/cjs/generated/fields.js +6128 -0
- package/dist/cjs/generated/fields.js.map +1 -0
- package/dist/cjs/index.d.ts +47 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +73 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/initiator.d.ts +30 -0
- package/dist/cjs/initiator.d.ts.map +1 -0
- package/dist/cjs/initiator.js +39 -0
- package/dist/cjs/initiator.js.map +1 -0
- package/dist/cjs/load-native.cjs +5 -0
- package/dist/cjs/message.d.ts +114 -0
- package/dist/cjs/message.d.ts.map +1 -0
- package/dist/cjs/message.js +162 -0
- package/dist/cjs/message.js.map +1 -0
- package/dist/cjs/native.d.ts +163 -0
- package/dist/cjs/native.d.ts.map +1 -0
- package/dist/cjs/native.js +23 -0
- package/dist/cjs/native.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/session-id.d.ts +40 -0
- package/dist/cjs/session-id.d.ts.map +1 -0
- package/dist/cjs/session-id.js +67 -0
- package/dist/cjs/session-id.js.map +1 -0
- package/dist/cjs/session-settings.d.ts +47 -0
- package/dist/cjs/session-settings.d.ts.map +1 -0
- package/dist/cjs/session-settings.js +76 -0
- package/dist/cjs/session-settings.js.map +1 -0
- package/dist/esm/acceptor.d.ts +30 -0
- package/dist/esm/acceptor.d.ts.map +1 -0
- package/dist/esm/acceptor.js +35 -0
- package/dist/esm/acceptor.js.map +1 -0
- package/dist/esm/application.d.ts +116 -0
- package/dist/esm/application.d.ts.map +1 -0
- package/dist/esm/application.js +58 -0
- package/dist/esm/application.js.map +1 -0
- package/dist/esm/data-dictionary.d.ts +49 -0
- package/dist/esm/data-dictionary.d.ts.map +1 -0
- package/dist/esm/data-dictionary.js +73 -0
- package/dist/esm/data-dictionary.js.map +1 -0
- package/dist/esm/engine.d.ts +114 -0
- package/dist/esm/engine.d.ts.map +1 -0
- package/dist/esm/engine.js +134 -0
- package/dist/esm/engine.js.map +1 -0
- package/dist/esm/enums.d.ts +22 -0
- package/dist/esm/enums.d.ts.map +1 -0
- package/dist/esm/enums.js +45 -0
- package/dist/esm/enums.js.map +1 -0
- package/dist/esm/generated/fields.d.ts +6123 -0
- package/dist/esm/generated/fields.d.ts.map +1 -0
- package/dist/esm/generated/fields.js +6125 -0
- package/dist/esm/generated/fields.js.map +1 -0
- package/dist/esm/index.d.ts +47 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +52 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/initiator.d.ts +30 -0
- package/dist/esm/initiator.d.ts.map +1 -0
- package/dist/esm/initiator.js +35 -0
- package/dist/esm/initiator.js.map +1 -0
- package/dist/esm/load-native.cjs +5 -0
- package/dist/esm/message.d.ts +114 -0
- package/dist/esm/message.d.ts.map +1 -0
- package/dist/esm/message.js +156 -0
- package/dist/esm/message.js.map +1 -0
- package/dist/esm/native.d.ts +163 -0
- package/dist/esm/native.d.ts.map +1 -0
- package/dist/esm/native.js +17 -0
- package/dist/esm/native.js.map +1 -0
- package/dist/esm/session-id.d.ts +40 -0
- package/dist/esm/session-id.d.ts.map +1 -0
- package/dist/esm/session-id.js +63 -0
- package/dist/esm/session-id.js.map +1 -0
- package/dist/esm/session-settings.d.ts +47 -0
- package/dist/esm/session-settings.d.ts.map +1 -0
- package/dist/esm/session-settings.js +72 -0
- package/dist/esm/session-settings.js.map +1 -0
- package/package.json +83 -4
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
- package/prebuilds/linux-x64/node.napi.musl.node +0 -0
- package/prebuilds/win32-x64/node.napi.node +0 -0
- package/src/load-native.cjs +5 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared implementation for {@link Initiator} and {@link Acceptor}.
|
|
3
|
+
*
|
|
4
|
+
* Both are thin subclasses of {@link Engine} that differ only in which native
|
|
5
|
+
* constructor they instantiate.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'node:events';
|
|
8
|
+
import { Message } from './message.js';
|
|
9
|
+
import { SessionID } from './session-id.js';
|
|
10
|
+
/**
|
|
11
|
+
* Base class for the FIX session engines.
|
|
12
|
+
*
|
|
13
|
+
* Extends Node's {@link EventEmitter}: in addition to invoking your `handlers`,
|
|
14
|
+
* the engine emits an observe-only event for each callback
|
|
15
|
+
* (`'create' | 'logon' | 'logout' | 'toAdmin' | 'fromAdmin' | 'toApp' | 'fromApp'`).
|
|
16
|
+
*
|
|
17
|
+
* **Important:** mutation of outbound messages and rejection of inbound ones
|
|
18
|
+
* MUST be done in `handlers` (which run synchronously and can throw); event
|
|
19
|
+
* listeners run after and cannot affect the message or reject it.
|
|
20
|
+
*/
|
|
21
|
+
export class Engine extends EventEmitter {
|
|
22
|
+
/** @internal Underlying native engine handle. */
|
|
23
|
+
#native;
|
|
24
|
+
/**
|
|
25
|
+
* @param Native The native engine constructor (`InitiatorWrap`/`AcceptorWrap`).
|
|
26
|
+
* @param options Engine options.
|
|
27
|
+
*/
|
|
28
|
+
constructor(Native, options) {
|
|
29
|
+
super();
|
|
30
|
+
const userHandlers = options.handlers ?? {};
|
|
31
|
+
// Bridge native handlers: wrap native handles into TS classes, invoke the
|
|
32
|
+
// user's handler (preserving mutate/throw semantics — exceptions propagate
|
|
33
|
+
// to the native bridge, which maps them to FIX exceptions), then emit the
|
|
34
|
+
// observe-only event.
|
|
35
|
+
const nativeHandlers = {
|
|
36
|
+
onCreate: (id) => {
|
|
37
|
+
const sid = SessionID.fromNative(id);
|
|
38
|
+
userHandlers.onCreate?.(sid);
|
|
39
|
+
this.emit('create', sid);
|
|
40
|
+
},
|
|
41
|
+
onLogon: (id) => {
|
|
42
|
+
const sid = SessionID.fromNative(id);
|
|
43
|
+
userHandlers.onLogon?.(sid);
|
|
44
|
+
this.emit('logon', sid);
|
|
45
|
+
},
|
|
46
|
+
onLogout: (id) => {
|
|
47
|
+
const sid = SessionID.fromNative(id);
|
|
48
|
+
userHandlers.onLogout?.(sid);
|
|
49
|
+
this.emit('logout', sid);
|
|
50
|
+
},
|
|
51
|
+
toAdmin: (m, id) => {
|
|
52
|
+
const msg = Message.fromNative(m);
|
|
53
|
+
const sid = SessionID.fromNative(id);
|
|
54
|
+
// Handler may mutate `msg` (writes go straight to the native handle).
|
|
55
|
+
userHandlers.toAdmin?.(msg, sid);
|
|
56
|
+
this.emit('toAdmin', msg, sid);
|
|
57
|
+
},
|
|
58
|
+
toApp: (m, id) => {
|
|
59
|
+
const msg = Message.fromNative(m);
|
|
60
|
+
const sid = SessionID.fromNative(id);
|
|
61
|
+
// May mutate or throw FixReject('DoNotSend') — do NOT swallow.
|
|
62
|
+
userHandlers.toApp?.(msg, sid);
|
|
63
|
+
this.emit('toApp', msg, sid);
|
|
64
|
+
},
|
|
65
|
+
fromAdmin: (m, id) => {
|
|
66
|
+
const msg = Message.fromNative(m);
|
|
67
|
+
const sid = SessionID.fromNative(id);
|
|
68
|
+
// May throw FixReject('RejectLogon', ...) — do NOT swallow.
|
|
69
|
+
userHandlers.fromAdmin?.(msg, sid);
|
|
70
|
+
this.emit('fromAdmin', msg, sid);
|
|
71
|
+
},
|
|
72
|
+
fromApp: (m, id) => {
|
|
73
|
+
const msg = Message.fromNative(m);
|
|
74
|
+
const sid = SessionID.fromNative(id);
|
|
75
|
+
// May throw FixReject('UnsupportedMessageType', ...) — do NOT swallow.
|
|
76
|
+
userHandlers.fromApp?.(msg, sid);
|
|
77
|
+
this.emit('fromApp', msg, sid);
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
this.#native = new Native({
|
|
81
|
+
settings: options.settings.nativeHandle,
|
|
82
|
+
handlers: nativeHandlers,
|
|
83
|
+
store: options.store,
|
|
84
|
+
log: options.log,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Start the engine (begins connecting / listening).
|
|
89
|
+
*
|
|
90
|
+
* Runs off the main thread, so the Node.js event loop stays free to service
|
|
91
|
+
* the application callbacks/events the engine fires. The returned Promise
|
|
92
|
+
* resolves once startup completes.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* await initiator.start();
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
start() {
|
|
100
|
+
return this.#native.start();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Stop the engine.
|
|
104
|
+
*
|
|
105
|
+
* Runs off the main thread and resolves once shutdown completes, keeping the
|
|
106
|
+
* event loop free for any in-flight callbacks.
|
|
107
|
+
*
|
|
108
|
+
* @param force When `true`, aborts immediately instead of draining gracefully.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* await initiator.stop();
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
stop(force) {
|
|
116
|
+
return this.#native.stop(force);
|
|
117
|
+
}
|
|
118
|
+
/** Whether any session is currently logged on. */
|
|
119
|
+
isLoggedOn() {
|
|
120
|
+
return this.#native.isLoggedOn();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Keep the Node.js event loop alive while the engine is running (default once
|
|
124
|
+
* started). Pair with {@link Engine.unref} to let a short script exit.
|
|
125
|
+
*/
|
|
126
|
+
ref() {
|
|
127
|
+
this.#native.ref();
|
|
128
|
+
}
|
|
129
|
+
/** Allow the process to exit even while the engine is running. */
|
|
130
|
+
unref() {
|
|
131
|
+
this.#native.unref();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { FIELD, type FieldName } from './generated/fields.js';
|
|
2
|
+
/** A single group of FIX constants (name → value). */
|
|
3
|
+
export type EnumGroup = Readonly<Record<string, number | string>>;
|
|
4
|
+
/** The full, frozen tree of FIX constants. */
|
|
5
|
+
export type Enums = Readonly<Record<string, EnumGroup>>;
|
|
6
|
+
/**
|
|
7
|
+
* The complete tree of FIX constants (frozen), e.g. `enums.FIELD.MsgType`,
|
|
8
|
+
* `enums.MsgType.Logon`, `enums.Side.Buy`.
|
|
9
|
+
*
|
|
10
|
+
* `enums.FIELD` is the same table as {@link FIELD}; the value groups come from
|
|
11
|
+
* the native engine.
|
|
12
|
+
*/
|
|
13
|
+
export declare const enums: Enums;
|
|
14
|
+
/** A group of numeric FIX constants (name → number). */
|
|
15
|
+
export type NumericEnumGroup = Readonly<Record<string, number>>;
|
|
16
|
+
/** A group of string-valued FIX constants (name → string), e.g. {@link MsgType}. */
|
|
17
|
+
export type StringEnumGroup = Readonly<Record<string, string>>;
|
|
18
|
+
/** MsgType values (strings), e.g. `MsgType.Logon === 'A'`. */
|
|
19
|
+
export declare const MsgType: StringEnumGroup;
|
|
20
|
+
/** Side values (strings), e.g. `Side.Buy === '1'`. */
|
|
21
|
+
export declare const Side: StringEnumGroup;
|
|
22
|
+
//# sourceMappingURL=enums.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9D,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAElE,8CAA8C;AAC9C,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAYxD;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhE,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,eAAyE,CAAC;AAEhG,sDAAsD;AACtD,eAAO,MAAM,IAAI,EAAE,eAAsE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FIX constants.
|
|
3
|
+
*
|
|
4
|
+
* - {@link FIELD} — field-name → tag-number (e.g. `FIELD.MsgType === 35`).
|
|
5
|
+
* Generated from QuickFIX's `FixFieldNumbers.h` (see `src/generated/fields.ts`),
|
|
6
|
+
* so it carries every `FIX::FIELD::*` name the bundled engine knows, with
|
|
7
|
+
* literal types.
|
|
8
|
+
* - value groups exported by the native engine such as {@link MsgType} and
|
|
9
|
+
* {@link Side} (e.g. `MsgType.Logon === 'A'`, `Side.Buy === '1'`).
|
|
10
|
+
*
|
|
11
|
+
* Everything is frozen at the TS layer so consumers cannot mutate the shared
|
|
12
|
+
* constant tables.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { FIELD, MsgType, enums } from '@homaiohq/napi-quickfix';
|
|
17
|
+
* msg.setField(FIELD.MsgType, MsgType.Logon);
|
|
18
|
+
* const side = enums.Side.Buy;
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { FIELD } from './generated/fields.js';
|
|
22
|
+
import { native } from './native.js';
|
|
23
|
+
export { FIELD } from './generated/fields.js';
|
|
24
|
+
function deepFreeze(source) {
|
|
25
|
+
const out = {};
|
|
26
|
+
for (const key of Object.keys(source)) {
|
|
27
|
+
out[key] = Object.freeze({ ...source[key] });
|
|
28
|
+
}
|
|
29
|
+
// FIELD is already frozen (generated); reuse it rather than copying 6000+ keys.
|
|
30
|
+
out.FIELD = FIELD;
|
|
31
|
+
return Object.freeze(out);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The complete tree of FIX constants (frozen), e.g. `enums.FIELD.MsgType`,
|
|
35
|
+
* `enums.MsgType.Logon`, `enums.Side.Buy`.
|
|
36
|
+
*
|
|
37
|
+
* `enums.FIELD` is the same table as {@link FIELD}; the value groups come from
|
|
38
|
+
* the native engine.
|
|
39
|
+
*/
|
|
40
|
+
export const enums = deepFreeze((native.enums ?? {}));
|
|
41
|
+
/** MsgType values (strings), e.g. `MsgType.Logon === 'A'`. */
|
|
42
|
+
export const MsgType = (enums.MsgType ?? Object.freeze({}));
|
|
43
|
+
/** Side values (strings), e.g. `Side.Buy === '1'`. */
|
|
44
|
+
export const Side = (enums.Side ?? Object.freeze({}));
|
|
45
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,EAAkB,MAAM,uBAAuB,CAAC;AAQ9D,SAAS,UAAU,CAAC,MAAuD;IACzE,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,gFAAgF;IAChF,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAU,UAAU,CACpC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA+D,CACnF,CAAC;AAQF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,OAAO,GAAoB,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAoB,CAAC;AAEhG,sDAAsD;AACtD,MAAM,CAAC,MAAM,IAAI,GAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAoB,CAAC"}
|