@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.
Files changed (131) hide show
  1. package/CMakeLists.txt +131 -0
  2. package/LICENSE +21 -0
  3. package/README.md +421 -2
  4. package/THIRD_PARTY_LICENSES +48 -0
  5. package/cpp/acceptor_wrap.cpp +234 -0
  6. package/cpp/acceptor_wrap.h +57 -0
  7. package/cpp/addon.cpp +83 -0
  8. package/cpp/application_bridge.cpp +382 -0
  9. package/cpp/application_bridge.h +151 -0
  10. package/cpp/data_dictionary_wrap.cpp +79 -0
  11. package/cpp/data_dictionary_wrap.h +37 -0
  12. package/cpp/engine_common.cpp +5 -0
  13. package/cpp/engine_common.h +19 -0
  14. package/cpp/engine_workers.h +86 -0
  15. package/cpp/enums.cpp +66 -0
  16. package/cpp/errors.h +142 -0
  17. package/cpp/initiator_wrap.cpp +255 -0
  18. package/cpp/initiator_wrap.h +69 -0
  19. package/cpp/message_wrap.cpp +195 -0
  20. package/cpp/message_wrap.h +53 -0
  21. package/cpp/session_id_wrap.cpp +91 -0
  22. package/cpp/session_id_wrap.h +46 -0
  23. package/cpp/session_settings_wrap.cpp +98 -0
  24. package/cpp/session_settings_wrap.h +40 -0
  25. package/cpp/session_static.cpp +93 -0
  26. package/dist/cjs/acceptor.d.ts +30 -0
  27. package/dist/cjs/acceptor.d.ts.map +1 -0
  28. package/dist/cjs/acceptor.js +39 -0
  29. package/dist/cjs/acceptor.js.map +1 -0
  30. package/dist/cjs/application.d.ts +116 -0
  31. package/dist/cjs/application.d.ts.map +1 -0
  32. package/dist/cjs/application.js +63 -0
  33. package/dist/cjs/application.js.map +1 -0
  34. package/dist/cjs/data-dictionary.d.ts +49 -0
  35. package/dist/cjs/data-dictionary.d.ts.map +1 -0
  36. package/dist/cjs/data-dictionary.js +77 -0
  37. package/dist/cjs/data-dictionary.js.map +1 -0
  38. package/dist/cjs/engine.d.ts +114 -0
  39. package/dist/cjs/engine.d.ts.map +1 -0
  40. package/dist/cjs/engine.js +138 -0
  41. package/dist/cjs/engine.js.map +1 -0
  42. package/dist/cjs/enums.d.ts +22 -0
  43. package/dist/cjs/enums.d.ts.map +1 -0
  44. package/dist/cjs/enums.js +49 -0
  45. package/dist/cjs/enums.js.map +1 -0
  46. package/dist/cjs/generated/fields.d.ts +6123 -0
  47. package/dist/cjs/generated/fields.d.ts.map +1 -0
  48. package/dist/cjs/generated/fields.js +6128 -0
  49. package/dist/cjs/generated/fields.js.map +1 -0
  50. package/dist/cjs/index.d.ts +47 -0
  51. package/dist/cjs/index.d.ts.map +1 -0
  52. package/dist/cjs/index.js +73 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/initiator.d.ts +30 -0
  55. package/dist/cjs/initiator.d.ts.map +1 -0
  56. package/dist/cjs/initiator.js +39 -0
  57. package/dist/cjs/initiator.js.map +1 -0
  58. package/dist/cjs/load-native.cjs +5 -0
  59. package/dist/cjs/message.d.ts +114 -0
  60. package/dist/cjs/message.d.ts.map +1 -0
  61. package/dist/cjs/message.js +162 -0
  62. package/dist/cjs/message.js.map +1 -0
  63. package/dist/cjs/native.d.ts +163 -0
  64. package/dist/cjs/native.d.ts.map +1 -0
  65. package/dist/cjs/native.js +23 -0
  66. package/dist/cjs/native.js.map +1 -0
  67. package/dist/cjs/package.json +1 -0
  68. package/dist/cjs/session-id.d.ts +40 -0
  69. package/dist/cjs/session-id.d.ts.map +1 -0
  70. package/dist/cjs/session-id.js +67 -0
  71. package/dist/cjs/session-id.js.map +1 -0
  72. package/dist/cjs/session-settings.d.ts +47 -0
  73. package/dist/cjs/session-settings.d.ts.map +1 -0
  74. package/dist/cjs/session-settings.js +76 -0
  75. package/dist/cjs/session-settings.js.map +1 -0
  76. package/dist/esm/acceptor.d.ts +30 -0
  77. package/dist/esm/acceptor.d.ts.map +1 -0
  78. package/dist/esm/acceptor.js +35 -0
  79. package/dist/esm/acceptor.js.map +1 -0
  80. package/dist/esm/application.d.ts +116 -0
  81. package/dist/esm/application.d.ts.map +1 -0
  82. package/dist/esm/application.js +58 -0
  83. package/dist/esm/application.js.map +1 -0
  84. package/dist/esm/data-dictionary.d.ts +49 -0
  85. package/dist/esm/data-dictionary.d.ts.map +1 -0
  86. package/dist/esm/data-dictionary.js +73 -0
  87. package/dist/esm/data-dictionary.js.map +1 -0
  88. package/dist/esm/engine.d.ts +114 -0
  89. package/dist/esm/engine.d.ts.map +1 -0
  90. package/dist/esm/engine.js +134 -0
  91. package/dist/esm/engine.js.map +1 -0
  92. package/dist/esm/enums.d.ts +22 -0
  93. package/dist/esm/enums.d.ts.map +1 -0
  94. package/dist/esm/enums.js +45 -0
  95. package/dist/esm/enums.js.map +1 -0
  96. package/dist/esm/generated/fields.d.ts +6123 -0
  97. package/dist/esm/generated/fields.d.ts.map +1 -0
  98. package/dist/esm/generated/fields.js +6125 -0
  99. package/dist/esm/generated/fields.js.map +1 -0
  100. package/dist/esm/index.d.ts +47 -0
  101. package/dist/esm/index.d.ts.map +1 -0
  102. package/dist/esm/index.js +52 -0
  103. package/dist/esm/index.js.map +1 -0
  104. package/dist/esm/initiator.d.ts +30 -0
  105. package/dist/esm/initiator.d.ts.map +1 -0
  106. package/dist/esm/initiator.js +35 -0
  107. package/dist/esm/initiator.js.map +1 -0
  108. package/dist/esm/load-native.cjs +5 -0
  109. package/dist/esm/message.d.ts +114 -0
  110. package/dist/esm/message.d.ts.map +1 -0
  111. package/dist/esm/message.js +156 -0
  112. package/dist/esm/message.js.map +1 -0
  113. package/dist/esm/native.d.ts +163 -0
  114. package/dist/esm/native.d.ts.map +1 -0
  115. package/dist/esm/native.js +17 -0
  116. package/dist/esm/native.js.map +1 -0
  117. package/dist/esm/session-id.d.ts +40 -0
  118. package/dist/esm/session-id.d.ts.map +1 -0
  119. package/dist/esm/session-id.js +63 -0
  120. package/dist/esm/session-id.js.map +1 -0
  121. package/dist/esm/session-settings.d.ts +47 -0
  122. package/dist/esm/session-settings.d.ts.map +1 -0
  123. package/dist/esm/session-settings.js +72 -0
  124. package/dist/esm/session-settings.js.map +1 -0
  125. package/package.json +83 -4
  126. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  127. package/prebuilds/darwin-x64/node.napi.node +0 -0
  128. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  129. package/prebuilds/linux-x64/node.napi.musl.node +0 -0
  130. package/prebuilds/win32-x64/node.napi.node +0 -0
  131. 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":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkC5C;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,MAAO,SAAQ,YAAY;IAC/C,iDAAiD;IACxC,OAAO,CAAe;IAE/B;;;OAGG;IACH,YAAsB,MAA+B,EAAE,OAAsB;QAC3E,KAAK,EAAE,CAAC;QAER,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE5C,0EAA0E;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,sBAAsB;QACtB,MAAM,cAAc,GAA8B;YAChD,QAAQ,EAAE,CAAC,EAAmB,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,EAAE,CAAC,EAAmB,EAAE,EAAE;gBAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,QAAQ,EAAE,CAAC,EAAmB,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,EAAE,CAAC,CAAgB,EAAE,EAAmB,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,sEAAsE;gBACtE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,EAAE,CAAC,CAAgB,EAAE,EAAmB,EAAE,EAAE;gBAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,+DAA+D;gBAC/D,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAmB,EAAE,EAAE;gBACnD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,4DAA4D;gBAC5D,YAAY,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,CAAC,CAAgB,EAAE,EAAmB,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrC,uEAAuE;gBACvE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY;YACvC,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,KAAe;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,kDAAkD;IAClD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,kEAAkE;IAClE,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -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"}