harperdb 3.2.0 → 3.3.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 (578) hide show
  1. package/README.md +20 -11
  2. package/bin/BinObjects.jsc +0 -0
  3. package/bin/harperdb.jsc +0 -0
  4. package/bin/install.jsc +0 -0
  5. package/bin/register.jsc +0 -0
  6. package/bin/run.jsc +0 -0
  7. package/bin/stop.jsc +0 -0
  8. package/bin/upgrade.jsc +0 -0
  9. package/bin/utility.jsc +0 -0
  10. package/bin/version.jsc +0 -0
  11. package/coverage/lcov.info +6624 -6141
  12. package/data_layer/CreateAttributeObject.jsc +0 -0
  13. package/data_layer/CreateTableObject.jsc +0 -0
  14. package/data_layer/DataLayerObjects.jsc +0 -0
  15. package/data_layer/DeleteBeforeObject.jsc +0 -0
  16. package/data_layer/DeleteObject.jsc +0 -0
  17. package/data_layer/DropAttributeObject.jsc +0 -0
  18. package/data_layer/InsertObject.jsc +0 -0
  19. package/data_layer/ReadTransactionLogObject.jsc +0 -0
  20. package/data_layer/SQLSearch.jsc +0 -0
  21. package/data_layer/SearchByConditionsObject.jsc +0 -0
  22. package/data_layer/SearchByHashObject.jsc +0 -0
  23. package/data_layer/SearchObject.jsc +0 -0
  24. package/data_layer/SqlSearchObject.jsc +0 -0
  25. package/data_layer/UpdateObject.jsc +0 -0
  26. package/data_layer/UpsertObject.jsc +0 -0
  27. package/data_layer/bulkLoad.jsc +0 -0
  28. package/data_layer/data_objects/BulkLoadObjects.jsc +0 -0
  29. package/data_layer/data_objects/UpsertObject.jsc +0 -0
  30. package/data_layer/delete.jsc +0 -0
  31. package/data_layer/export.jsc +0 -0
  32. package/data_layer/harperBridge/BridgeMethods.jsc +0 -0
  33. package/data_layer/harperBridge/bridgeUtility/checkForNewAttr.jsc +0 -0
  34. package/data_layer/harperBridge/bridgeUtility/convertOperationToTransaction.jsc +0 -0
  35. package/data_layer/harperBridge/bridgeUtility/evaluateTableGetAttributes.jsc +0 -0
  36. package/data_layer/harperBridge/bridgeUtility/insertUpdateReturnObj.jsc +0 -0
  37. package/data_layer/harperBridge/bridgeUtility/insertUpdateValidate.jsc +0 -0
  38. package/data_layer/harperBridge/harperBridge.jsc +0 -0
  39. package/data_layer/harperBridge/lmdbBridge/LMDBBridge.jsc +0 -0
  40. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/DeleteTransactionsBeforeResults.jsc +0 -0
  41. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.jsc +0 -0
  42. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.jsc +0 -0
  43. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.jsc +0 -0
  44. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.jsc +0 -0
  45. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.jsc +0 -0
  46. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecordsBefore.jsc +0 -0
  47. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteTransactionLogsBefore.jsc +0 -0
  48. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.jsc +0 -0
  49. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.jsc +0 -0
  50. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.jsc +0 -0
  51. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.jsc +0 -0
  52. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.jsc +0 -0
  53. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadTransactionLog.jsc +0 -0
  54. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.jsc +0 -0
  55. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.jsc +0 -0
  56. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.jsc +0 -0
  57. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.jsc +0 -0
  58. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.jsc +0 -0
  59. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.jsc +0 -0
  60. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.jsc +0 -0
  61. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.jsc +0 -0
  62. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.jsc +0 -0
  63. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.jsc +0 -0
  64. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.jsc +0 -0
  65. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.jsc +0 -0
  66. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/ThreadSearchObject.jsc +0 -0
  67. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.jsc +0 -0
  68. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.jsc +0 -0
  69. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.jsc +0 -0
  70. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsEnvironment.jsc +0 -0
  71. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbDropAllAttributes.jsc +0 -0
  72. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.jsc +0 -0
  73. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.jsc +0 -0
  74. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.jsc +0 -0
  75. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbThreadSearch.jsc +0 -0
  76. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.jsc +0 -0
  77. package/data_layer/hdbInfoController.jsc +0 -0
  78. package/data_layer/insert.jsc +0 -0
  79. package/data_layer/readTransactionLog.jsc +0 -0
  80. package/data_layer/schema.jsc +0 -0
  81. package/data_layer/schemaDescribe.jsc +0 -0
  82. package/data_layer/search.jsc +0 -0
  83. package/data_layer/update.jsc +0 -0
  84. package/events/ClusterStatusEmitter.jsc +0 -0
  85. package/events/SioServerStoppedEvent.jsc +0 -0
  86. package/events/SocketClusterStatusEmitter.jsc +0 -0
  87. package/license/LICENSE +91 -1
  88. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/README.md +1 -0
  89. package/node_modules/{node-addon-api/src/nothing.c → @msgpackr-extract/msgpackr-extract-linux-x64/index.js} +0 -0
  90. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.abi93.glibc.node +0 -0
  91. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.abi93.musl.node +0 -0
  92. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.napi.glibc.node +0 -0
  93. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.napi.musl.node +0 -0
  94. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/package.json +53 -0
  95. package/node_modules/{msgpackr-extract → lmdb-store}/.github/workflows/prebuild.yml +9 -10
  96. package/node_modules/lmdb-store/.idea/lmdb-store.iml +12 -0
  97. package/node_modules/lmdb-store/.idea/misc.xml +6 -0
  98. package/node_modules/lmdb-store/.idea/modules.xml +8 -0
  99. package/node_modules/lmdb-store/.idea/workspace.xml +4 -0
  100. package/node_modules/lmdb-store/README.md +393 -388
  101. package/node_modules/lmdb-store/benchmark/index.js +162 -162
  102. package/node_modules/lmdb-store/binding.gyp +79 -88
  103. package/node_modules/lmdb-store/caching.js +113 -113
  104. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/COPYRIGHT +20 -20
  105. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/Doxyfile +1631 -1631
  106. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/LICENSE +47 -47
  107. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.c +183 -183
  108. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.h +14 -14
  109. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/crypto.c +121 -121
  110. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/intro.doc +192 -192
  111. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.c +12125 -12125
  112. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_copy.1 +74 -74
  113. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_copy.c +106 -106
  114. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_drop.1 +53 -53
  115. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_drop.c +154 -154
  116. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_dump.1 +94 -94
  117. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_dump.c +333 -333
  118. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_load.1 +97 -97
  119. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_load.c +530 -530
  120. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_stat.1 +83 -83
  121. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_stat.c +276 -276
  122. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.c +452 -452
  123. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.h +208 -208
  124. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/module.c +101 -101
  125. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/module.h +16 -16
  126. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest.c +178 -178
  127. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest2.c +124 -124
  128. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest3.c +133 -133
  129. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest4.c +168 -168
  130. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest5.c +135 -135
  131. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest6.c +141 -141
  132. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_enc.c +190 -190
  133. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_enc2.c +189 -189
  134. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_remap.c +177 -177
  135. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/sample-bdb.txt +73 -73
  136. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/sample-mdb.txt +62 -62
  137. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/tooltag +27 -27
  138. package/node_modules/lmdb-store/dependencies/lz4/LICENSE +11 -11
  139. package/node_modules/lmdb-store/dependencies/lz4/lib/README.md +137 -137
  140. package/node_modules/lmdb-store/dependencies/lz4/lib/dll/example/README.md +69 -69
  141. package/node_modules/lmdb-store/dependencies/lz4/lib/lz4frame.c +1899 -1899
  142. package/node_modules/lmdb-store/dependencies/lz4/lib/xxhash.c +1030 -1030
  143. package/node_modules/lmdb-store/dependencies/lz4/lib/xxhash.h +328 -328
  144. package/node_modules/lmdb-store/dist/index.cjs +2591 -0
  145. package/node_modules/lmdb-store/dist/index.cjs.map +1 -0
  146. package/node_modules/lmdb-store/index.d.ts +323 -323
  147. package/node_modules/lmdb-store/index.js +1274 -1274
  148. package/node_modules/lmdb-store/index.mjs +3 -3
  149. package/node_modules/lmdb-store/package.json +16 -11
  150. package/node_modules/lmdb-store/prebuilds/darwin-arm64/electron.abi98.node +0 -0
  151. package/node_modules/lmdb-store/prebuilds/darwin-arm64/node.abi83.node +0 -0
  152. package/node_modules/lmdb-store/prebuilds/darwin-arm64/node.abi93.node +0 -0
  153. package/node_modules/lmdb-store/prebuilds/darwin-x64/electron.abi98.node +0 -0
  154. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi83.node +0 -0
  155. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi93.node +0 -0
  156. package/node_modules/lmdb-store/prebuilds/linux-arm64/electron.abi98.node +0 -0
  157. package/node_modules/lmdb-store/prebuilds/linux-arm64/node.abi83.node +0 -0
  158. package/node_modules/lmdb-store/prebuilds/linux-arm64/node.abi93.node +0 -0
  159. package/node_modules/lmdb-store/prebuilds/linux-x64/electron.abi98.node +0 -0
  160. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi83.musl.node +0 -0
  161. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi83.node +0 -0
  162. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi93.musl.node +0 -0
  163. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi93.node +0 -0
  164. package/node_modules/lmdb-store/prebuilds/win32-x64/electron.abi98.node +0 -0
  165. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi83.node +0 -0
  166. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi93.node +0 -0
  167. package/node_modules/lmdb-store/src/compression.cpp +181 -181
  168. package/node_modules/lmdb-store/src/cursor.cpp +407 -407
  169. package/node_modules/lmdb-store/src/dbi.cpp +354 -354
  170. package/node_modules/lmdb-store/src/env.cpp +1134 -1134
  171. package/node_modules/lmdb-store/src/misc.cpp +528 -528
  172. package/node_modules/lmdb-store/src/node-lmdb.cpp +44 -44
  173. package/node_modules/lmdb-store/src/node-lmdb.h +965 -965
  174. package/node_modules/lmdb-store/src/ordered-binary.cpp +337 -337
  175. package/node_modules/lmdb-store/src/txn.cpp +513 -513
  176. package/node_modules/lmdb-store/src/v8-fast-api-calls.h +419 -419
  177. package/node_modules/lmdb-store/src/windows.c +30 -30
  178. package/node_modules/lmdb-store/test/index.test.js +584 -584
  179. package/node_modules/lmdb-store/test/node-lmdb.test.js +1525 -1525
  180. package/node_modules/lmdb-store/test/threads.js +100 -100
  181. package/node_modules/lmdb-store/util/ArrayLikeIterable.js +136 -136
  182. package/node_modules/lmdb-store/util/WeakValueMap.js +40 -40
  183. package/node_modules/lmdb-store/util/upgrade-lmdb.js +46 -46
  184. package/node_modules/lmdb-store/util/when.js +8 -8
  185. package/node_modules/microtime/.github/workflows/release.yml +76 -0
  186. package/node_modules/microtime/.github/workflows/test.yml +46 -0
  187. package/node_modules/microtime/README.md +0 -2
  188. package/node_modules/microtime/binding.gyp +28 -10
  189. package/node_modules/microtime/package.json +25 -20
  190. package/node_modules/microtime/prebuilds/darwin-x64+arm64/electron.napi.node +0 -0
  191. package/node_modules/microtime/prebuilds/darwin-x64+arm64/node.napi.node +0 -0
  192. package/node_modules/microtime/prebuilds/linux-arm/node.napi.armv7.node +0 -0
  193. package/node_modules/microtime/prebuilds/linux-arm64/node.napi.armv8.node +0 -0
  194. package/node_modules/microtime/prebuilds/linux-x64/electron.napi.node +0 -0
  195. package/node_modules/microtime/prebuilds/linux-x64/node.napi.node +0 -0
  196. package/node_modules/microtime/prebuilds/win32-ia32/electron.napi.node +0 -0
  197. package/node_modules/microtime/prebuilds/win32-ia32/node.napi.node +0 -0
  198. package/node_modules/microtime/prebuilds/win32-x64/electron.napi.node +0 -0
  199. package/node_modules/microtime/prebuilds/win32-x64/node.napi.node +0 -0
  200. package/node_modules/msgpackr/dist/index.js +1929 -1917
  201. package/node_modules/msgpackr/dist/index.min.js +67 -68
  202. package/node_modules/msgpackr/dist/node.cjs +1994 -1980
  203. package/node_modules/msgpackr/dist/test.js +683 -1235
  204. package/node_modules/msgpackr/index.d.ts +23 -12
  205. package/node_modules/msgpackr/node-index.js +23 -21
  206. package/node_modules/msgpackr/pack.js +935 -931
  207. package/node_modules/msgpackr/package.json +24 -12
  208. package/node_modules/msgpackr/unpack.d.ts +52 -50
  209. package/node_modules/msgpackr/unpack.js +1061 -1053
  210. package/node_modules/msgpackr-extract/bin/download-prebuilds.js +11 -0
  211. package/node_modules/msgpackr-extract/binding.gyp +22 -5
  212. package/node_modules/msgpackr-extract/index.js +1 -1
  213. package/node_modules/msgpackr-extract/package.json +46 -21
  214. package/node_modules/msgpackr-extract/src/.vs/ProjectSettings.json +3 -0
  215. package/node_modules/msgpackr-extract/src/.vs/VSWorkspaceState.json +7 -0
  216. package/node_modules/msgpackr-extract/src/.vs/slnx.sqlite +0 -0
  217. package/node_modules/msgpackr-extract/src/.vs/src/v16/.suo +0 -0
  218. package/node_modules/msgpackr-extract/src/.vs/src/v16/Browse.VC.db +0 -0
  219. package/node_modules/msgpackr-extract/{prebuilds/darwin-x64/node.abi72.node → src/.vs/src/v16/Browse.VC.db-shm} +0 -0
  220. package/node_modules/msgpackr-extract/src/.vs/src/v16/Browse.VC.db-wal +0 -0
  221. package/node_modules/msgpackr-extract/src/extract.cpp +272 -269
  222. package/node_modules/nan/package.json +0 -1
  223. package/node_modules/node-addon-api/README.md +146 -53
  224. package/node_modules/node-addon-api/common.gypi +21 -0
  225. package/node_modules/node-addon-api/except.gypi +25 -0
  226. package/node_modules/node-addon-api/index.js +7 -41
  227. package/node_modules/node-addon-api/napi-inl.deprecated.h +8 -8
  228. package/node_modules/node-addon-api/napi-inl.h +2795 -633
  229. package/node_modules/node-addon-api/napi.h +1547 -597
  230. package/node_modules/node-addon-api/node_api.gyp +9 -0
  231. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  232. package/node_modules/node-addon-api/nothing.c +0 -0
  233. package/node_modules/node-addon-api/package-support.json +21 -0
  234. package/node_modules/node-addon-api/package.json +203 -13
  235. package/node_modules/node-addon-api/tools/README.md +12 -6
  236. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  237. package/node_modules/node-addon-api/tools/conversion.js +4 -8
  238. package/node_modules/node-addon-api/tools/eslint-format.js +71 -0
  239. package/node_modules/node-gyp-build/README.md +17 -14
  240. package/node_modules/node-gyp-build/bin.js +28 -15
  241. package/node_modules/node-gyp-build/index.js +145 -34
  242. package/node_modules/node-gyp-build/package.json +18 -15
  243. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/LICENSE +0 -0
  244. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/README.md +0 -0
  245. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/bin.js +1 -1
  246. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/build-test.js +0 -0
  247. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/index.js +17 -11
  248. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/optional.js +0 -0
  249. package/node_modules/{msgpackr-extract/node_modules/node-gyp-build → node-gyp-build-optional-packages}/package.json +17 -17
  250. package/package.json +12 -11
  251. package/security/JWTObjects.jsc +0 -0
  252. package/security/auth.jsc +0 -0
  253. package/security/cryptoHash.jsc +0 -0
  254. package/security/data_objects/PermissionAttributeResponseObject.jsc +0 -0
  255. package/security/data_objects/PermissionResponseObject.jsc +0 -0
  256. package/security/data_objects/PermissionTableResponseObject.jsc +0 -0
  257. package/security/permissionsTranslator.jsc +0 -0
  258. package/security/role.jsc +0 -0
  259. package/security/tokenAuthentication.jsc +0 -0
  260. package/security/user.jsc +0 -0
  261. package/server/ClusteringOriginObject.jsc +0 -0
  262. package/server/JobObject.jsc +0 -0
  263. package/server/clustering/ClusterStatusObject.jsc +0 -0
  264. package/server/clustering/NodeObject.jsc +0 -0
  265. package/server/clustering/clusterUtilities.jsc +0 -0
  266. package/server/configuration.jsc +0 -0
  267. package/server/customFunctions/customFunctionsServer.jsc +0 -0
  268. package/server/customFunctions/helpers/getCORSOptions.jsc +0 -0
  269. package/server/customFunctions/helpers/getHeaderTimeoutConfig.jsc +0 -0
  270. package/server/customFunctions/helpers/getServerOptions.jsc +0 -0
  271. package/server/customFunctions/operations.jsc +0 -0
  272. package/server/customFunctions/operationsValidation.jsc +0 -0
  273. package/server/harperdb/hdbServer.jsc +0 -0
  274. package/server/ipc/IPCClient.jsc +0 -0
  275. package/server/ipc/hdbIpcServer.jsc +0 -0
  276. package/server/ipc/serverHandlers.jsc +0 -0
  277. package/server/ipc/utility/IPCEventObject.jsc +0 -0
  278. package/server/ipc/utility/ipcUtils.jsc +0 -0
  279. package/server/jobRunner.jsc +0 -0
  280. package/server/jobThread.jsc +0 -0
  281. package/server/jobs.jsc +0 -0
  282. package/server/serverHelpers/OperationFunctionObject.jsc +0 -0
  283. package/server/serverHelpers/requestTimePlugin.jsc +0 -0
  284. package/server/serverHelpers/serverHandlers.jsc +0 -0
  285. package/server/serverHelpers/serverUtilities.jsc +0 -0
  286. package/server/socketcluster/Server.jsc +0 -0
  287. package/server/socketcluster/broker.jsc +0 -0
  288. package/server/socketcluster/connector/HDBSocketConnector.jsc +0 -0
  289. package/server/socketcluster/connector/InterNodeSocketConnector.jsc +0 -0
  290. package/server/socketcluster/connector/SocketConnector.jsc +0 -0
  291. package/server/socketcluster/connector/spawnSCConnection.jsc +0 -0
  292. package/server/socketcluster/decisionMatrix/CoreDecisionMatrix.jsc +0 -0
  293. package/server/socketcluster/decisionMatrix/DecisionMatrixIF.jsc +0 -0
  294. package/server/socketcluster/decisionMatrix/rules/AssignToHdbChildWorkerRule.jsc +0 -0
  295. package/server/socketcluster/decisionMatrix/rules/CallRoomMsgHandlerRule.jsc +0 -0
  296. package/server/socketcluster/decisionMatrix/rules/CleanDataObjectRule.jsc +0 -0
  297. package/server/socketcluster/decisionMatrix/rules/CommandCollection.jsc +0 -0
  298. package/server/socketcluster/decisionMatrix/rules/DummyRule.jsc +0 -0
  299. package/server/socketcluster/decisionMatrix/rules/RulesIF.jsc +0 -0
  300. package/server/socketcluster/decisionMatrix/rules/StripHdbHeaderRule.jsc +0 -0
  301. package/server/socketcluster/decisionMatrix/rules/TestRule.jsc +0 -0
  302. package/server/socketcluster/handlers/NodeConnectionsHandler.jsc +0 -0
  303. package/server/socketcluster/handlers/SCServer.jsc +0 -0
  304. package/server/socketcluster/handlers/ServerSocket.jsc +0 -0
  305. package/server/socketcluster/interNodeConnectionLauncher.jsc +0 -0
  306. package/server/socketcluster/messageQueue/MessageQueueIF.jsc +0 -0
  307. package/server/socketcluster/middleware/AuthMiddleware.jsc +0 -0
  308. package/server/socketcluster/middleware/ConnectionNameCheckMiddleware.jsc +0 -0
  309. package/server/socketcluster/middleware/GenericMiddleware.jsc +0 -0
  310. package/server/socketcluster/middleware/MessagePrepMiddleware.jsc +0 -0
  311. package/server/socketcluster/middleware/MiddlewareFactory.jsc +0 -0
  312. package/server/socketcluster/middleware/MiddlewareIF.jsc +0 -0
  313. package/server/socketcluster/middleware/OriginatorCheckMiddleware.jsc +0 -0
  314. package/server/socketcluster/middleware/RequestDataValidMiddleware.jsc +0 -0
  315. package/server/socketcluster/middleware/StampOriginatorMiddleware.jsc +0 -0
  316. package/server/socketcluster/middleware/StampRequestMiddleware.jsc +0 -0
  317. package/server/socketcluster/observer/EventableIF.jsc +0 -0
  318. package/server/socketcluster/room/AddUserRoom.jsc +0 -0
  319. package/server/socketcluster/room/AlterUserRoom.jsc +0 -0
  320. package/server/socketcluster/room/CoreRoom.jsc +0 -0
  321. package/server/socketcluster/room/CreateAttributeRoom.jsc +0 -0
  322. package/server/socketcluster/room/CreateSchemaRoom.jsc +0 -0
  323. package/server/socketcluster/room/CreateTableRoom.jsc +0 -0
  324. package/server/socketcluster/room/DropUserRoom.jsc +0 -0
  325. package/server/socketcluster/room/HDBNodeRoom.jsc +0 -0
  326. package/server/socketcluster/room/RoomIF.jsc +0 -0
  327. package/server/socketcluster/room/RoomMessageObjects.jsc +0 -0
  328. package/server/socketcluster/room/UsersRoom.jsc +0 -0
  329. package/server/socketcluster/room/WatchHDBWorkersRoom.jsc +0 -0
  330. package/server/socketcluster/room/WorkerRoom.jsc +0 -0
  331. package/server/socketcluster/room/roomFactory.jsc +0 -0
  332. package/server/socketcluster/socketClusterObjects.jsc +0 -0
  333. package/server/socketcluster/types.jsc +0 -0
  334. package/server/socketcluster/util/clusterData.jsc +0 -0
  335. package/server/socketcluster/util/socketClusterUtils.jsc +0 -0
  336. package/server/socketcluster/worker/ClusterWorker.jsc +0 -0
  337. package/server/socketcluster/worker/WorkerIF.jsc +0 -0
  338. package/server/socketcluster/worker/WorkerObjects.jsc +0 -0
  339. package/server/transactToClusteringUtilities.jsc +0 -0
  340. package/sqlTranslator/SelectValidator.jsc +0 -0
  341. package/sqlTranslator/alasqlFunctionImporter.jsc +0 -0
  342. package/sqlTranslator/conditionPatterns.jsc +0 -0
  343. package/sqlTranslator/deleteTranslator.jsc +0 -0
  344. package/sqlTranslator/index.jsc +0 -0
  345. package/sqlTranslator/sql_statement_bucket.jsc +0 -0
  346. package/upgrade/EnvironmentVariable.jsc +0 -0
  347. package/upgrade/UpgradeDirective.jsc +0 -0
  348. package/upgrade/UpgradeObjects.jsc +0 -0
  349. package/upgrade/directives/3-0-0.jsc +0 -0
  350. package/upgrade/directives/3-1-0.jsc +0 -0
  351. package/upgrade/directives/directivesController.jsc +0 -0
  352. package/upgrade/directives/upgrade_scripts/3_0_0_reindex_script.jsc +0 -0
  353. package/upgrade/directivesManager.jsc +0 -0
  354. package/upgrade/lmdb/nodeLMDB/DBIDefinition.jsc +0 -0
  355. package/upgrade/lmdb/nodeLMDB/OpenDBIObject.jsc +0 -0
  356. package/upgrade/lmdb/nodeLMDB/OpenEnvironmentObject.jsc +0 -0
  357. package/upgrade/lmdb/nodeLMDB/commonErrors.jsc +0 -0
  358. package/upgrade/lmdb/nodeLMDB/commonUtility.jsc +0 -0
  359. package/upgrade/lmdb/nodeLMDB/environmentUtility.jsc +0 -0
  360. package/upgrade/lmdb/nodeLMDB/terms.jsc +0 -0
  361. package/upgrade/upgradePrompt.jsc +0 -0
  362. package/upgrade/upgradeUtilities.jsc +0 -0
  363. package/utility/AWS/AWSConnector.jsc +0 -0
  364. package/utility/OperationFunctionCaller.jsc +0 -0
  365. package/utility/common_utils.jsc +0 -0
  366. package/utility/environment/SystemInformationObject.jsc +0 -0
  367. package/utility/environment/SystemInformationOperation.jsc +0 -0
  368. package/utility/environment/environmentManager.jsc +0 -0
  369. package/utility/environment/systemInformation.jsc +0 -0
  370. package/utility/errors/commonErrors.jsc +0 -0
  371. package/utility/errors/hdbError.jsc +0 -0
  372. package/utility/functions/date/dateFunctions.jsc +0 -0
  373. package/utility/functions/geo.jsc +0 -0
  374. package/utility/functions/math/avg.jsc +0 -0
  375. package/utility/functions/math/count.jsc +0 -0
  376. package/utility/functions/sql/alaSQLExtension.jsc +0 -0
  377. package/utility/functions/string/compare.jsc +0 -0
  378. package/utility/globalSchema.jsc +0 -0
  379. package/utility/hdbTerms.jsc +0 -0
  380. package/utility/install/checkJWTTokensExist.jsc +0 -0
  381. package/utility/install/installer.jsc +0 -0
  382. package/utility/install_user_permission.jsc +0 -0
  383. package/utility/lmdb/DBIDefinition.jsc +0 -0
  384. package/utility/lmdb/DeleteRecordsResponseObject.jsc +0 -0
  385. package/utility/lmdb/InsertRecordsResponseObject.jsc +0 -0
  386. package/utility/lmdb/OpenDBIObject.jsc +0 -0
  387. package/utility/lmdb/OpenEnvironmentObject.jsc +0 -0
  388. package/utility/lmdb/UpdateRecordsResponseObject.jsc +0 -0
  389. package/utility/lmdb/UpsertRecordsResponseObject.jsc +0 -0
  390. package/utility/lmdb/cleanLMDBMap.jsc +0 -0
  391. package/utility/lmdb/commonUtility.jsc +0 -0
  392. package/utility/lmdb/deleteUtility.jsc +0 -0
  393. package/utility/lmdb/environmentUtility.jsc +0 -0
  394. package/utility/lmdb/searchCursorFunctions.jsc +0 -0
  395. package/utility/lmdb/searchUtility.jsc +0 -0
  396. package/utility/lmdb/terms.jsc +0 -0
  397. package/utility/lmdb/writeUtility.jsc +0 -0
  398. package/utility/logging/harper_logger.jsc +0 -0
  399. package/utility/mount_hdb.jsc +0 -0
  400. package/utility/npmUtilities.jsc +0 -0
  401. package/utility/operation_authorization.jsc +0 -0
  402. package/utility/password.jsc +0 -0
  403. package/utility/pm2/servicesConfig.jsc +0 -0
  404. package/utility/pm2/utilityFunctions.jsc +0 -0
  405. package/utility/psList.jsc +0 -0
  406. package/utility/registration/hdb_license.jsc +0 -0
  407. package/utility/registration/licenseObjects.jsc +0 -0
  408. package/utility/registration/registrationHandler.jsc +0 -0
  409. package/utility/scripts/restartHdb.jsc +0 -0
  410. package/utility/signalling.jsc +0 -0
  411. package/utility/system_info.jsc +0 -0
  412. package/validation/bulkDeleteValidator.jsc +0 -0
  413. package/validation/check_permissions.jsc +0 -0
  414. package/validation/clustering/configureValidator.jsc +0 -0
  415. package/validation/common_validators.jsc +0 -0
  416. package/validation/conditionalDeleteValidator.jsc +0 -0
  417. package/validation/deleteValidator.jsc +0 -0
  418. package/validation/fileLoadValidator.jsc +0 -0
  419. package/validation/insertValidator.jsc +0 -0
  420. package/validation/nodeSubscriptionValidator.jsc +0 -0
  421. package/validation/nodeValidator.jsc +0 -0
  422. package/validation/readLogValidator.jsc +0 -0
  423. package/validation/registration/license_key_object.jsc +0 -0
  424. package/validation/role_validation.jsc +0 -0
  425. package/validation/schemaMetadataValidator.jsc +0 -0
  426. package/validation/schema_validator.jsc +0 -0
  427. package/validation/searchValidator.jsc +0 -0
  428. package/validation/user_validation.jsc +0 -0
  429. package/validation/validationWrapper.jsc +0 -0
  430. package/node_modules/lmdb-store/build/Makefile +0 -324
  431. package/node_modules/lmdb-store/build/Release/.deps/Release/lmdb-store.node.d +0 -1
  432. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.o.d +0 -6
  433. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.o.d +0 -8
  434. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.o.d +0 -8
  435. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lz4/lib/lz4.o.d +0 -5
  436. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/compression.o.d +0 -72
  437. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/cursor.o.d +0 -73
  438. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/dbi.o.d +0 -73
  439. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/env.o.d +0 -73
  440. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/misc.o.d +0 -73
  441. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/node-lmdb.o.d +0 -73
  442. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/ordered-binary.o.d +0 -73
  443. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/txn.o.d +0 -73
  444. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/windows.o.d +0 -3
  445. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store.node.d +0 -1
  446. package/node_modules/lmdb-store/build/Release/lmdb-store.node +0 -0
  447. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.o +0 -0
  448. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.o +0 -0
  449. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.o +0 -0
  450. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lz4/lib/lz4.o +0 -0
  451. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/compression.o +0 -0
  452. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/cursor.o +0 -0
  453. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/dbi.o +0 -0
  454. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/env.o +0 -0
  455. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/misc.o +0 -0
  456. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/node-lmdb.o +0 -0
  457. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/ordered-binary.o +0 -0
  458. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/txn.o +0 -0
  459. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/windows.o +0 -0
  460. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store.node +0 -0
  461. package/node_modules/lmdb-store/build/binding.Makefile +0 -6
  462. package/node_modules/lmdb-store/build/config.gypi +0 -426
  463. package/node_modules/lmdb-store/build/lmdb-store.target.mk +0 -206
  464. package/node_modules/lmdb-store/node_modules/node-gyp-build/package.json +0 -60
  465. package/node_modules/lmdb-store/prebuilds/darwin-x64/electron.abi87.node +0 -0
  466. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi72.node +0 -0
  467. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi88.node +0 -0
  468. package/node_modules/lmdb-store/prebuilds/win32-x64/electron.abi87.node +0 -0
  469. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi72.node +0 -0
  470. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi88.node +0 -0
  471. package/node_modules/microtime/prebuilds/darwin-x64/electron-napi.node +0 -0
  472. package/node_modules/microtime/prebuilds/darwin-x64/node-napi.node +0 -0
  473. package/node_modules/microtime/prebuilds/linux-arm/electron-napi.node +0 -0
  474. package/node_modules/microtime/prebuilds/linux-arm/node-napi.node +0 -0
  475. package/node_modules/microtime/prebuilds/linux-x64/electron-napi.node +0 -0
  476. package/node_modules/microtime/prebuilds/linux-x64/node-napi.node +0 -0
  477. package/node_modules/microtime/prebuilds/win32-x64/electron-napi.node +0 -0
  478. package/node_modules/microtime/prebuilds/win32-x64/node-napi.node +0 -0
  479. package/node_modules/msgpackr-extract/.circleci/config.yml +0 -19
  480. package/node_modules/msgpackr-extract/.travis.yml +0 -30
  481. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/LICENSE +0 -21
  482. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/README.md +0 -58
  483. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/bin.js +0 -77
  484. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/build-test.js +0 -19
  485. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/index.js +0 -202
  486. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/optional.js +0 -7
  487. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/electron.abi98.node +0 -0
  488. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi102.node +0 -0
  489. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi83.node +0 -0
  490. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi93.node +0 -0
  491. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/electron.abi98.node +0 -0
  492. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi102.node +0 -0
  493. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi83.node +0 -0
  494. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi88.node +0 -0
  495. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi93.node +0 -0
  496. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/electron.abi98.node +0 -0
  497. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi102.node +0 -0
  498. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi83.node +0 -0
  499. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi93.node +0 -0
  500. package/node_modules/msgpackr-extract/prebuilds/linux-x64/electron.abi98.node +0 -0
  501. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi102.musl.node +0 -0
  502. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi102.node +0 -0
  503. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi72.musl.node +0 -0
  504. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi72.node +0 -0
  505. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi83.musl.node +0 -0
  506. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi83.node +0 -0
  507. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi88.node +0 -0
  508. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi93.musl.node +0 -0
  509. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi93.node +0 -0
  510. package/node_modules/msgpackr-extract/prebuilds/win32-x64/electron.abi98.node +0 -0
  511. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi102.node +0 -0
  512. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi72.node +0 -0
  513. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi83.node +0 -0
  514. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi88.node +0 -0
  515. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi93.node +0 -0
  516. package/node_modules/node-addon-api/.editorconfig +0 -8
  517. package/node_modules/node-addon-api/.travis.yml +0 -65
  518. package/node_modules/node-addon-api/CHANGELOG.md +0 -325
  519. package/node_modules/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  520. package/node_modules/node-addon-api/CONTRIBUTING.md +0 -66
  521. package/node_modules/node-addon-api/appveyor.yml +0 -48
  522. package/node_modules/node-addon-api/doc/Doxyfile +0 -2450
  523. package/node_modules/node-addon-api/doc/array_buffer.md +0 -129
  524. package/node_modules/node-addon-api/doc/async_context.md +0 -76
  525. package/node_modules/node-addon-api/doc/async_operations.md +0 -31
  526. package/node_modules/node-addon-api/doc/async_worker.md +0 -397
  527. package/node_modules/node-addon-api/doc/basic_types.md +0 -415
  528. package/node_modules/node-addon-api/doc/bigint.md +0 -92
  529. package/node_modules/node-addon-api/doc/boolean.md +0 -64
  530. package/node_modules/node-addon-api/doc/buffer.md +0 -140
  531. package/node_modules/node-addon-api/doc/callback_scope.md +0 -54
  532. package/node_modules/node-addon-api/doc/callbackinfo.md +0 -97
  533. package/node_modules/node-addon-api/doc/checker-tool.md +0 -32
  534. package/node_modules/node-addon-api/doc/class_property_descriptor.md +0 -118
  535. package/node_modules/node-addon-api/doc/cmake-js.md +0 -19
  536. package/node_modules/node-addon-api/doc/conversion-tool.md +0 -28
  537. package/node_modules/node-addon-api/doc/creating_a_release.md +0 -62
  538. package/node_modules/node-addon-api/doc/dataview.md +0 -244
  539. package/node_modules/node-addon-api/doc/env.md +0 -63
  540. package/node_modules/node-addon-api/doc/error.md +0 -115
  541. package/node_modules/node-addon-api/doc/error_handling.md +0 -186
  542. package/node_modules/node-addon-api/doc/escapable_handle_scope.md +0 -82
  543. package/node_modules/node-addon-api/doc/external.md +0 -59
  544. package/node_modules/node-addon-api/doc/function.md +0 -294
  545. package/node_modules/node-addon-api/doc/function_reference.md +0 -238
  546. package/node_modules/node-addon-api/doc/generator.md +0 -13
  547. package/node_modules/node-addon-api/doc/handle_scope.md +0 -65
  548. package/node_modules/node-addon-api/doc/memory_management.md +0 -27
  549. package/node_modules/node-addon-api/doc/node-gyp.md +0 -82
  550. package/node_modules/node-addon-api/doc/number.md +0 -163
  551. package/node_modules/node-addon-api/doc/object.md +0 -202
  552. package/node_modules/node-addon-api/doc/object_lifetime_management.md +0 -83
  553. package/node_modules/node-addon-api/doc/object_reference.md +0 -117
  554. package/node_modules/node-addon-api/doc/object_wrap.md +0 -546
  555. package/node_modules/node-addon-api/doc/prebuild_tools.md +0 -16
  556. package/node_modules/node-addon-api/doc/promises.md +0 -74
  557. package/node_modules/node-addon-api/doc/property_descriptor.md +0 -231
  558. package/node_modules/node-addon-api/doc/range_error.md +0 -59
  559. package/node_modules/node-addon-api/doc/reference.md +0 -111
  560. package/node_modules/node-addon-api/doc/setup.md +0 -82
  561. package/node_modules/node-addon-api/doc/string.md +0 -89
  562. package/node_modules/node-addon-api/doc/symbol.md +0 -44
  563. package/node_modules/node-addon-api/doc/threadsafe_function.md +0 -303
  564. package/node_modules/node-addon-api/doc/type_error.md +0 -59
  565. package/node_modules/node-addon-api/doc/typed_array.md +0 -74
  566. package/node_modules/node-addon-api/doc/typed_array_of.md +0 -133
  567. package/node_modules/node-addon-api/doc/value.md +0 -269
  568. package/node_modules/node-addon-api/doc/version_management.md +0 -43
  569. package/node_modules/node-addon-api/doc/working_with_javascript_values.md +0 -14
  570. package/node_modules/node-addon-api/external-napi/node_api.h +0 -7
  571. package/node_modules/node-addon-api/src/node_api.cc +0 -3655
  572. package/node_modules/node-addon-api/src/node_api.gyp +0 -21
  573. package/node_modules/node-addon-api/src/node_api.h +0 -588
  574. package/node_modules/node-addon-api/src/node_api_types.h +0 -115
  575. package/node_modules/node-addon-api/src/node_internals.cc +0 -142
  576. package/node_modules/node-addon-api/src/node_internals.h +0 -157
  577. package/node_modules/node-addon-api/src/util-inl.h +0 -38
  578. package/node_modules/node-addon-api/src/util.h +0 -7
@@ -1,513 +1,513 @@
1
-
2
- // This file is part of node-lmdb, the Node.js binding for lmdb
3
- // Copyright (c) 2013-2017 Timur Kristóf
4
- // Copyright (c) 2021 Kristopher Tate
5
- // Licensed to you under the terms of the MIT license
6
- //
7
- // Permission is hereby granted, free of charge, to any person obtaining a copy
8
- // of this software and associated documentation files (the "Software"), to deal
9
- // in the Software without restriction, including without limitation the rights
10
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- // copies of the Software, and to permit persons to whom the Software is
12
- // furnished to do so, subject to the following conditions:
13
-
14
- // The above copyright notice and this permission notice shall be included in
15
- // all copies or substantial portions of the Software.
16
-
17
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- // THE SOFTWARE.
24
-
25
- #include "node-lmdb.h"
26
-
27
- using namespace v8;
28
- using namespace node;
29
-
30
- TxnWrap::TxnWrap(MDB_env *env, MDB_txn *txn) {
31
- this->env = env;
32
- this->txn = txn;
33
- this->flags = 0;
34
- this->ew = nullptr;
35
- }
36
-
37
- TxnWrap::~TxnWrap() {
38
- // Close if not closed already
39
- if (this->txn) {
40
- mdb_txn_abort(txn);
41
- this->removeFromEnvWrap();
42
- }
43
- }
44
-
45
- void TxnWrap::removeFromEnvWrap() {
46
- if (this->ew) {
47
- if (this->ew->currentWriteTxn == this) {
48
- this->ew->currentWriteTxn = this->parentTw;
49
- }
50
- else {
51
- auto it = std::find(ew->readTxns.begin(), ew->readTxns.end(), this);
52
- if (it != ew->readTxns.end()) {
53
- ew->readTxns.erase(it);
54
- }
55
- }
56
-
57
- this->ew->Unref();
58
- this->ew = nullptr;
59
- }
60
- this->txn = nullptr;
61
- }
62
-
63
- NAN_METHOD(TxnWrap::ctor) {
64
- Nan::HandleScope scope;
65
-
66
- EnvWrap *ew = Nan::ObjectWrap::Unwrap<EnvWrap>(Local<Object>::Cast(info[0]));
67
- int flags = 0;
68
- MDB_txn *txn;
69
- TxnWrap *parentTw;
70
- if (info[1]->IsTrue()) {
71
- txn = ew->currentBatchTxn;
72
- parentTw = nullptr;
73
- } else {
74
- if (info[1]->IsObject()) {
75
- Local<Object> options = Local<Object>::Cast(info[1]);
76
-
77
- // Get flags from options
78
-
79
- setFlagFromValue(&flags, MDB_RDONLY, "readOnly", false, options);
80
- }
81
- MDB_txn *parentTxn;
82
- if (info[2]->IsObject()) {
83
- parentTw = Nan::ObjectWrap::Unwrap<TxnWrap>(Local<Object>::Cast(info[2]));
84
- parentTxn = parentTw->txn;
85
- } else {
86
- parentTxn = nullptr;
87
- parentTw = nullptr;
88
- // Check existence of current write transaction
89
- if (0 == (flags & MDB_RDONLY)) {
90
- if (ew->currentWriteTxn != nullptr)
91
- return Nan::ThrowError("You have already opened a write transaction in the current process, can't open a second one.");
92
- if (ew->currentBatchTxn != nullptr) {
93
- //fprintf(stderr, "begin sync txn");
94
- auto batchWorker = ew->batchWorker;
95
- if (batchWorker) // notify the batch worker that we need to jump ahead of any queued transaction callbacks
96
- batchWorker->ContinueBatch(INTERRUPT_BATCH, false);
97
- }
98
- }
99
- }
100
- int rc = mdb_txn_begin(ew->env, parentTxn, flags, &txn);
101
- if (rc != 0) {
102
- if (rc == EINVAL) {
103
- return Nan::ThrowError("Invalid parameter, which on MacOS is often due to more transactions than available robust locked semaphors (see docs for more info)");
104
- }
105
- return throwLmdbError(rc);
106
- }
107
- }
108
- TxnWrap* tw = new TxnWrap(ew->env, txn);
109
-
110
- // Set the current write transaction
111
- if (0 == (flags & MDB_RDONLY)) {
112
- ew->currentWriteTxn = tw;
113
- }
114
- else {
115
- ew->readTxns.push_back(tw);
116
- }
117
- tw->parentTw = parentTw;
118
- tw->flags = flags;
119
- tw->ew = ew;
120
- tw->ew->Ref();
121
- tw->Wrap(info.This());
122
-
123
- return info.GetReturnValue().Set(info.This());
124
- }
125
-
126
- NAN_METHOD(TxnWrap::commit) {
127
- Nan::HandleScope scope;
128
-
129
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
130
-
131
- if (!tw->txn) {
132
- return Nan::ThrowError("The transaction is already closed.");
133
- }
134
-
135
- int rc = mdb_txn_commit(tw->txn);
136
- if (tw->parentTw == nullptr && tw->ew->currentBatchTxn != nullptr) {
137
- //fprintf(stderr, "committed sync txn");
138
-
139
- auto batchWorker = tw->ew->batchWorker;
140
- if (batchWorker) // notify the batch worker that we are done, and it can proceed
141
- batchWorker->ContinueBatch(RESUME_BATCH, false);
142
- }
143
- tw->removeFromEnvWrap();
144
-
145
- if (rc != 0) {
146
- return throwLmdbError(rc);
147
- }
148
- }
149
-
150
- NAN_METHOD(TxnWrap::abort) {
151
- Nan::HandleScope scope;
152
-
153
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
154
-
155
- if (!tw->txn) {
156
- return Nan::ThrowError("The transaction is already closed.");
157
- }
158
-
159
- mdb_txn_abort(tw->txn);
160
- tw->removeFromEnvWrap();
161
- }
162
-
163
- NAN_METHOD(TxnWrap::reset) {
164
- Nan::HandleScope scope;
165
-
166
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
167
-
168
- if (!tw->txn) {
169
- return Nan::ThrowError("The transaction is already closed.");
170
- }
171
-
172
- mdb_txn_reset(tw->txn);
173
- }
174
-
175
- NAN_METHOD(TxnWrap::renew) {
176
- Nan::HandleScope scope;
177
-
178
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
179
-
180
- if (!tw->txn) {
181
- return Nan::ThrowError("The transaction is already closed.");
182
- }
183
-
184
- int rc = mdb_txn_renew(tw->txn);
185
- if (rc != 0) {
186
- return throwLmdbError(rc);
187
- }
188
- }
189
-
190
- Nan::NAN_METHOD_RETURN_TYPE TxnWrap::getCommon(Nan::NAN_METHOD_ARGS_TYPE info, Local<Value> (*successFunc)(MDB_val&)) {
191
- Nan::HandleScope scope;
192
-
193
- if (info.Length() != 2 && info.Length() != 3) {
194
- return Nan::ThrowError("Invalid number of arguments to cursor.get");
195
- }
196
-
197
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
198
- DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
199
-
200
- if (!tw->txn) {
201
- return Nan::ThrowError("The transaction is already closed.");
202
- }
203
-
204
- MDB_val key, oldkey, data;
205
- auto keyType = keyTypeFromOptions(info[2], dw->keyType);
206
- bool keyIsValid;
207
- auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
208
- if (!keyIsValid) {
209
- // argToKey already threw an error
210
- return;
211
- }
212
-
213
- // Bookkeeping for old key so that we can free it even if key will point inside LMDB
214
- oldkey.mv_data = key.mv_data;
215
- oldkey.mv_size = key.mv_size;
216
- int rc = mdb_get(tw->txn, dw->dbi, &key, &data);
217
-
218
-
219
- if (freeKey) {
220
- freeKey(oldkey);
221
- }
222
- if (rc == MDB_NOTFOUND) {
223
- setLastVersion(NO_EXIST_VERSION);
224
- info.GetReturnValue().Set(Nan::Undefined());
225
- }
226
- else if (rc != 0) {
227
- throwLmdbError(rc);
228
- }
229
- else {
230
- info.GetReturnValue().Set(getVersionAndUncompress(data, dw, successFunc));
231
- }
232
- }
233
-
234
- NAN_METHOD(TxnWrap::getString) {
235
- return getCommon(info, valToString);
236
- }
237
-
238
- NAN_METHOD(TxnWrap::getUtf8) {
239
- return getCommon(info, valToUtf8);
240
- }
241
-
242
- NAN_METHOD(TxnWrap::getStringUnsafe) {
243
- return getCommon(info, valToStringUnsafe);
244
- }
245
-
246
- NAN_METHOD(TxnWrap::getBinary) {
247
- return getCommon(info, valToBinary);
248
- }
249
-
250
- NAN_METHOD(TxnWrap::getBinaryUnsafe) {
251
- return getCommon(info, valToBinaryUnsafe);
252
- }
253
-
254
- NAN_METHOD(TxnWrap::getNumber) {
255
- return getCommon(info, valToNumber);
256
- }
257
-
258
- NAN_METHOD(TxnWrap::getBoolean) {
259
- return getCommon(info, valToBoolean);
260
- }
261
-
262
- Nan::NAN_METHOD_RETURN_TYPE TxnWrap::putCommon(Nan::NAN_METHOD_ARGS_TYPE info, void (*fillFunc)(Nan::NAN_METHOD_ARGS_TYPE info, MDB_val&), void (*freeData)(MDB_val&)) {
263
- Nan::HandleScope scope;
264
-
265
- if (info.Length() != 3 && info.Length() != 4) {
266
- return Nan::ThrowError("Invalid number of arguments to txn.put");
267
- }
268
-
269
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
270
- DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
271
-
272
- if (!tw->txn) {
273
- return Nan::ThrowError("The transaction is already closed.");
274
- }
275
-
276
- int flags = 0;
277
- MDB_val key, data;
278
- auto keyType = keyTypeFromOptions(info[3], dw->keyType);
279
- bool keyIsValid;
280
- auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
281
- if (!keyIsValid) {
282
- // argToKey already threw an error
283
- return;
284
- }
285
-
286
- if (info[3]->IsObject()) {
287
- auto options = Local<Object>::Cast(info[3]);
288
- setFlagFromValue(&flags, MDB_NODUPDATA, "noDupData", false, options);
289
- setFlagFromValue(&flags, MDB_NOOVERWRITE, "noOverwrite", false, options);
290
- setFlagFromValue(&flags, MDB_APPEND, "append", false, options);
291
- setFlagFromValue(&flags, MDB_APPENDDUP, "appendDup", false, options);
292
-
293
- // NOTE: does not make sense to support MDB_RESERVE, because it wouldn't save the memcpy from V8 to lmdb
294
- }
295
-
296
- // Fill key and data
297
- fillFunc(info, data);
298
-
299
- if (dw->compression) {
300
- freeData = dw->compression->compress(&data, freeData);
301
- }
302
-
303
- // Keep a copy of the original key and data, so we can free them
304
- MDB_val originalKey = key;
305
- MDB_val originalData = data;
306
-
307
- int rc;
308
- if (dw->hasVersions) {
309
- double version;
310
- if (info[3]->IsNumber()) {
311
- auto versionLocal = Nan::To<v8::Number>(info[3]).ToLocalChecked();
312
- version = versionLocal->Value();
313
- } else if (info[3]->IsObject()) {
314
- auto options = Local<Object>::Cast(info[3]);
315
- auto versionProp = options->Get(Nan::GetCurrentContext(), Nan::New<String>("version").ToLocalChecked()).ToLocalChecked();
316
- if (versionProp->IsNumber()) {
317
- auto versionLocal = Nan::To<v8::Number>(versionProp).ToLocalChecked();
318
- version = versionLocal->Value();
319
- } else
320
- version = 0;
321
- } else
322
- version = 0;
323
- rc = putWithVersion(tw->txn, dw->dbi, &key, &data, flags, version);
324
- }
325
- else
326
- rc = mdb_put(tw->txn, dw->dbi, &key, &data, flags);
327
-
328
- // Free original key and data (what was supplied by the user, not what points to lmdb)
329
- if (freeKey) {
330
- freeKey(originalKey);
331
- }
332
- if (freeData) {
333
- freeData(originalData);
334
- }
335
-
336
- // Check result code
337
- if (rc != 0) {
338
- return throwLmdbError(rc);
339
- }
340
- }
341
-
342
- NAN_METHOD(TxnWrap::putString) {
343
- return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
344
- CustomExternalStringResource::writeTo(Local<String>::Cast(info[2]), &data);
345
- }, [](MDB_val &data) -> void {
346
- delete[] (char*)data.mv_data;
347
- });
348
- }
349
-
350
- NAN_METHOD(TxnWrap::putBinary) {
351
- return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
352
- data.mv_size = node::Buffer::Length(info[2]);
353
- data.mv_data = node::Buffer::Data(info[2]);
354
- }, [](MDB_val &) -> void {
355
- // The data is owned by the node::Buffer so we don't need to free it.
356
- });
357
- }
358
-
359
- // This is used by putNumber for temporary storage
360
- #ifdef thread_local
361
- static thread_local double numberToPut = 0.0;
362
- #else
363
- static double numberToPut = 0.0;
364
- #endif
365
-
366
- NAN_METHOD(TxnWrap::putNumber) {
367
- return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
368
- auto numberLocal = Nan::To<v8::Number>(info[2]).ToLocalChecked();
369
- numberToPut = numberLocal->Value();
370
- data.mv_size = sizeof(double);
371
- data.mv_data = &numberToPut;
372
- }, nullptr);
373
- }
374
-
375
- // This is used by putBoolean for temporary storage
376
- #ifdef thread_local
377
- static thread_local bool booleanToPut = false;
378
- #else
379
- static bool booleanToPut = false;
380
- #endif
381
-
382
- NAN_METHOD(TxnWrap::putBoolean) {
383
- return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
384
- auto booleanLocal = Nan::To<v8::Boolean>(info[2]).ToLocalChecked();
385
- booleanToPut = booleanLocal->Value();
386
-
387
- data.mv_size = sizeof(bool);
388
- data.mv_data = &booleanToPut;
389
- }, nullptr);
390
- }
391
-
392
- NAN_METHOD(TxnWrap::putUtf8) {
393
- return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
394
- writeValueToEntry(Local<String>::Cast(info[2]), &data);
395
- }, [](MDB_val &data) -> void {
396
- delete[] (char*)data.mv_data;
397
- });
398
- }
399
-
400
- NAN_METHOD(TxnWrap::del) {
401
- Nan::HandleScope scope;
402
-
403
- // Check argument count
404
- auto argCount = info.Length();
405
- if (argCount < 2 || argCount > 4) {
406
- return Nan::ThrowError("Invalid number of arguments to cursor.del, should be: (a) <dbi>, <key> (b) <dbi>, <key>, <options> (c) <dbi>, <key>, <data> (d) <dbi>, <key>, <data>, <options>");
407
- }
408
-
409
- // Unwrap native objects
410
- TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
411
- DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
412
-
413
- if (!tw->txn) {
414
- return Nan::ThrowError("The transaction is already closed.");
415
- }
416
-
417
- // Take care of options object and data handle
418
- Local<Value> options;
419
- Local<Value> dataHandle;
420
-
421
- if (argCount == 4) {
422
- options = info[3];
423
- dataHandle = info[2];
424
- }
425
- else if (argCount == 3) {
426
- if (info[2]->IsObject() && !node::Buffer::HasInstance(info[2])) {
427
- options = info[2];
428
- dataHandle = Nan::Undefined();
429
- }
430
- else {
431
- options = Nan::Undefined();
432
- dataHandle = info[2];
433
- }
434
- }
435
- else if (argCount == 2) {
436
- options = Nan::Undefined();
437
- dataHandle = Nan::Undefined();
438
- }
439
- else {
440
- return Nan::ThrowError("Unknown arguments to cursor.del, this could be a node-lmdb bug!");
441
- }
442
-
443
- MDB_val key;
444
- auto keyType = keyTypeFromOptions(options, dw->keyType);
445
- bool keyIsValid;
446
- auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
447
- if (!keyIsValid) {
448
- // argToKey already threw an error
449
- return;
450
- }
451
-
452
- // Set data if dupSort true and data given
453
- MDB_val data;
454
- bool freeData = false;
455
-
456
- if ((dw->flags & MDB_DUPSORT) && !(dataHandle->IsUndefined())) {
457
- if (dataHandle->IsString()) {
458
- writeValueToEntry(dataHandle, &data);
459
- freeData = true;
460
- }
461
- else if (node::Buffer::HasInstance(dataHandle)) {
462
- data.mv_size = node::Buffer::Length(dataHandle);
463
- data.mv_data = node::Buffer::Data(dataHandle);
464
- freeData = true;
465
- }
466
- else if (dataHandle->IsNumber()) {
467
- auto numberLocal = Nan::To<v8::Number>(dataHandle).ToLocalChecked();
468
- data.mv_size = sizeof(double);
469
- data.mv_data = new double;
470
- *reinterpret_cast<double*>(data.mv_data) = numberLocal->Value();
471
- freeData = true;
472
- }
473
- else if (dataHandle->IsBoolean()) {
474
- auto booleanLocal = Nan::To<v8::Boolean>(dataHandle).ToLocalChecked();
475
- data.mv_size = sizeof(double);
476
- data.mv_data = new bool;
477
- *reinterpret_cast<bool*>(data.mv_data) = booleanLocal->Value();
478
- freeData = true;
479
- }
480
- else {
481
- Nan::ThrowError("Invalid data type.");
482
- }
483
- }
484
-
485
- int rc = mdb_del(tw->txn, dw->dbi, &key, freeData ? &data : nullptr);
486
-
487
- if (freeKey) {
488
- freeKey(key);
489
- }
490
-
491
- if (freeData) {
492
- if (dataHandle->IsString()) {
493
- delete[] (uint16_t*)data.mv_data;
494
- }
495
- else if (node::Buffer::HasInstance(dataHandle)) {
496
- // I think the data is owned by the node::Buffer so we don't need to free it - need to clarify
497
- }
498
- else if (dataHandle->IsNumber()) {
499
- delete (double*)data.mv_data;
500
- }
501
- else if (dataHandle->IsBoolean()) {
502
- delete (bool*)data.mv_data;
503
- }
504
- }
505
-
506
- if (rc != 0) {
507
- if (rc == MDB_NOTFOUND) {
508
- return info.GetReturnValue().Set(Nan::False());
509
- }
510
- return throwLmdbError(rc);
511
- }
512
- return info.GetReturnValue().Set(Nan::True());
513
- }
1
+
2
+ // This file is part of node-lmdb, the Node.js binding for lmdb
3
+ // Copyright (c) 2013-2017 Timur Kristóf
4
+ // Copyright (c) 2021 Kristopher Tate
5
+ // Licensed to you under the terms of the MIT license
6
+ //
7
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ // of this software and associated documentation files (the "Software"), to deal
9
+ // in the Software without restriction, including without limitation the rights
10
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ // copies of the Software, and to permit persons to whom the Software is
12
+ // furnished to do so, subject to the following conditions:
13
+
14
+ // The above copyright notice and this permission notice shall be included in
15
+ // all copies or substantial portions of the Software.
16
+
17
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ // THE SOFTWARE.
24
+
25
+ #include "node-lmdb.h"
26
+
27
+ using namespace v8;
28
+ using namespace node;
29
+
30
+ TxnWrap::TxnWrap(MDB_env *env, MDB_txn *txn) {
31
+ this->env = env;
32
+ this->txn = txn;
33
+ this->flags = 0;
34
+ this->ew = nullptr;
35
+ }
36
+
37
+ TxnWrap::~TxnWrap() {
38
+ // Close if not closed already
39
+ if (this->txn) {
40
+ mdb_txn_abort(txn);
41
+ this->removeFromEnvWrap();
42
+ }
43
+ }
44
+
45
+ void TxnWrap::removeFromEnvWrap() {
46
+ if (this->ew) {
47
+ if (this->ew->currentWriteTxn == this) {
48
+ this->ew->currentWriteTxn = this->parentTw;
49
+ }
50
+ else {
51
+ auto it = std::find(ew->readTxns.begin(), ew->readTxns.end(), this);
52
+ if (it != ew->readTxns.end()) {
53
+ ew->readTxns.erase(it);
54
+ }
55
+ }
56
+
57
+ this->ew->Unref();
58
+ this->ew = nullptr;
59
+ }
60
+ this->txn = nullptr;
61
+ }
62
+
63
+ NAN_METHOD(TxnWrap::ctor) {
64
+ Nan::HandleScope scope;
65
+
66
+ EnvWrap *ew = Nan::ObjectWrap::Unwrap<EnvWrap>(Local<Object>::Cast(info[0]));
67
+ int flags = 0;
68
+ MDB_txn *txn;
69
+ TxnWrap *parentTw;
70
+ if (info[1]->IsTrue()) {
71
+ txn = ew->currentBatchTxn;
72
+ parentTw = nullptr;
73
+ } else {
74
+ if (info[1]->IsObject()) {
75
+ Local<Object> options = Local<Object>::Cast(info[1]);
76
+
77
+ // Get flags from options
78
+
79
+ setFlagFromValue(&flags, MDB_RDONLY, "readOnly", false, options);
80
+ }
81
+ MDB_txn *parentTxn;
82
+ if (info[2]->IsObject()) {
83
+ parentTw = Nan::ObjectWrap::Unwrap<TxnWrap>(Local<Object>::Cast(info[2]));
84
+ parentTxn = parentTw->txn;
85
+ } else {
86
+ parentTxn = nullptr;
87
+ parentTw = nullptr;
88
+ // Check existence of current write transaction
89
+ if (0 == (flags & MDB_RDONLY)) {
90
+ if (ew->currentWriteTxn != nullptr)
91
+ return Nan::ThrowError("You have already opened a write transaction in the current process, can't open a second one.");
92
+ if (ew->currentBatchTxn != nullptr) {
93
+ //fprintf(stderr, "begin sync txn");
94
+ auto batchWorker = ew->batchWorker;
95
+ if (batchWorker) // notify the batch worker that we need to jump ahead of any queued transaction callbacks
96
+ batchWorker->ContinueBatch(INTERRUPT_BATCH, false);
97
+ }
98
+ }
99
+ }
100
+ int rc = mdb_txn_begin(ew->env, parentTxn, flags, &txn);
101
+ if (rc != 0) {
102
+ if (rc == EINVAL) {
103
+ return Nan::ThrowError("Invalid parameter, which on MacOS is often due to more transactions than available robust locked semaphors (see docs for more info)");
104
+ }
105
+ return throwLmdbError(rc);
106
+ }
107
+ }
108
+ TxnWrap* tw = new TxnWrap(ew->env, txn);
109
+
110
+ // Set the current write transaction
111
+ if (0 == (flags & MDB_RDONLY)) {
112
+ ew->currentWriteTxn = tw;
113
+ }
114
+ else {
115
+ ew->readTxns.push_back(tw);
116
+ }
117
+ tw->parentTw = parentTw;
118
+ tw->flags = flags;
119
+ tw->ew = ew;
120
+ tw->ew->Ref();
121
+ tw->Wrap(info.This());
122
+
123
+ return info.GetReturnValue().Set(info.This());
124
+ }
125
+
126
+ NAN_METHOD(TxnWrap::commit) {
127
+ Nan::HandleScope scope;
128
+
129
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
130
+
131
+ if (!tw->txn) {
132
+ return Nan::ThrowError("The transaction is already closed.");
133
+ }
134
+
135
+ int rc = mdb_txn_commit(tw->txn);
136
+ if (tw->parentTw == nullptr && tw->ew->currentBatchTxn != nullptr) {
137
+ //fprintf(stderr, "committed sync txn");
138
+
139
+ auto batchWorker = tw->ew->batchWorker;
140
+ if (batchWorker) // notify the batch worker that we are done, and it can proceed
141
+ batchWorker->ContinueBatch(RESUME_BATCH, false);
142
+ }
143
+ tw->removeFromEnvWrap();
144
+
145
+ if (rc != 0) {
146
+ return throwLmdbError(rc);
147
+ }
148
+ }
149
+
150
+ NAN_METHOD(TxnWrap::abort) {
151
+ Nan::HandleScope scope;
152
+
153
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
154
+
155
+ if (!tw->txn) {
156
+ return Nan::ThrowError("The transaction is already closed.");
157
+ }
158
+
159
+ mdb_txn_abort(tw->txn);
160
+ tw->removeFromEnvWrap();
161
+ }
162
+
163
+ NAN_METHOD(TxnWrap::reset) {
164
+ Nan::HandleScope scope;
165
+
166
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
167
+
168
+ if (!tw->txn) {
169
+ return Nan::ThrowError("The transaction is already closed.");
170
+ }
171
+
172
+ mdb_txn_reset(tw->txn);
173
+ }
174
+
175
+ NAN_METHOD(TxnWrap::renew) {
176
+ Nan::HandleScope scope;
177
+
178
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
179
+
180
+ if (!tw->txn) {
181
+ return Nan::ThrowError("The transaction is already closed.");
182
+ }
183
+
184
+ int rc = mdb_txn_renew(tw->txn);
185
+ if (rc != 0) {
186
+ return throwLmdbError(rc);
187
+ }
188
+ }
189
+
190
+ Nan::NAN_METHOD_RETURN_TYPE TxnWrap::getCommon(Nan::NAN_METHOD_ARGS_TYPE info, Local<Value> (*successFunc)(MDB_val&)) {
191
+ Nan::HandleScope scope;
192
+
193
+ if (info.Length() != 2 && info.Length() != 3) {
194
+ return Nan::ThrowError("Invalid number of arguments to cursor.get");
195
+ }
196
+
197
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
198
+ DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
199
+
200
+ if (!tw->txn) {
201
+ return Nan::ThrowError("The transaction is already closed.");
202
+ }
203
+
204
+ MDB_val key, oldkey, data;
205
+ auto keyType = keyTypeFromOptions(info[2], dw->keyType);
206
+ bool keyIsValid;
207
+ auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
208
+ if (!keyIsValid) {
209
+ // argToKey already threw an error
210
+ return;
211
+ }
212
+
213
+ // Bookkeeping for old key so that we can free it even if key will point inside LMDB
214
+ oldkey.mv_data = key.mv_data;
215
+ oldkey.mv_size = key.mv_size;
216
+ int rc = mdb_get(tw->txn, dw->dbi, &key, &data);
217
+
218
+
219
+ if (freeKey) {
220
+ freeKey(oldkey);
221
+ }
222
+ if (rc == MDB_NOTFOUND) {
223
+ setLastVersion(NO_EXIST_VERSION);
224
+ info.GetReturnValue().Set(Nan::Undefined());
225
+ }
226
+ else if (rc != 0) {
227
+ throwLmdbError(rc);
228
+ }
229
+ else {
230
+ info.GetReturnValue().Set(getVersionAndUncompress(data, dw, successFunc));
231
+ }
232
+ }
233
+
234
+ NAN_METHOD(TxnWrap::getString) {
235
+ return getCommon(info, valToString);
236
+ }
237
+
238
+ NAN_METHOD(TxnWrap::getUtf8) {
239
+ return getCommon(info, valToUtf8);
240
+ }
241
+
242
+ NAN_METHOD(TxnWrap::getStringUnsafe) {
243
+ return getCommon(info, valToStringUnsafe);
244
+ }
245
+
246
+ NAN_METHOD(TxnWrap::getBinary) {
247
+ return getCommon(info, valToBinary);
248
+ }
249
+
250
+ NAN_METHOD(TxnWrap::getBinaryUnsafe) {
251
+ return getCommon(info, valToBinaryUnsafe);
252
+ }
253
+
254
+ NAN_METHOD(TxnWrap::getNumber) {
255
+ return getCommon(info, valToNumber);
256
+ }
257
+
258
+ NAN_METHOD(TxnWrap::getBoolean) {
259
+ return getCommon(info, valToBoolean);
260
+ }
261
+
262
+ Nan::NAN_METHOD_RETURN_TYPE TxnWrap::putCommon(Nan::NAN_METHOD_ARGS_TYPE info, void (*fillFunc)(Nan::NAN_METHOD_ARGS_TYPE info, MDB_val&), void (*freeData)(MDB_val&)) {
263
+ Nan::HandleScope scope;
264
+
265
+ if (info.Length() != 3 && info.Length() != 4) {
266
+ return Nan::ThrowError("Invalid number of arguments to txn.put");
267
+ }
268
+
269
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
270
+ DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
271
+
272
+ if (!tw->txn) {
273
+ return Nan::ThrowError("The transaction is already closed.");
274
+ }
275
+
276
+ int flags = 0;
277
+ MDB_val key, data;
278
+ auto keyType = keyTypeFromOptions(info[3], dw->keyType);
279
+ bool keyIsValid;
280
+ auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
281
+ if (!keyIsValid) {
282
+ // argToKey already threw an error
283
+ return;
284
+ }
285
+
286
+ if (info[3]->IsObject()) {
287
+ auto options = Local<Object>::Cast(info[3]);
288
+ setFlagFromValue(&flags, MDB_NODUPDATA, "noDupData", false, options);
289
+ setFlagFromValue(&flags, MDB_NOOVERWRITE, "noOverwrite", false, options);
290
+ setFlagFromValue(&flags, MDB_APPEND, "append", false, options);
291
+ setFlagFromValue(&flags, MDB_APPENDDUP, "appendDup", false, options);
292
+
293
+ // NOTE: does not make sense to support MDB_RESERVE, because it wouldn't save the memcpy from V8 to lmdb
294
+ }
295
+
296
+ // Fill key and data
297
+ fillFunc(info, data);
298
+
299
+ if (dw->compression) {
300
+ freeData = dw->compression->compress(&data, freeData);
301
+ }
302
+
303
+ // Keep a copy of the original key and data, so we can free them
304
+ MDB_val originalKey = key;
305
+ MDB_val originalData = data;
306
+
307
+ int rc;
308
+ if (dw->hasVersions) {
309
+ double version;
310
+ if (info[3]->IsNumber()) {
311
+ auto versionLocal = Nan::To<v8::Number>(info[3]).ToLocalChecked();
312
+ version = versionLocal->Value();
313
+ } else if (info[3]->IsObject()) {
314
+ auto options = Local<Object>::Cast(info[3]);
315
+ auto versionProp = options->Get(Nan::GetCurrentContext(), Nan::New<String>("version").ToLocalChecked()).ToLocalChecked();
316
+ if (versionProp->IsNumber()) {
317
+ auto versionLocal = Nan::To<v8::Number>(versionProp).ToLocalChecked();
318
+ version = versionLocal->Value();
319
+ } else
320
+ version = 0;
321
+ } else
322
+ version = 0;
323
+ rc = putWithVersion(tw->txn, dw->dbi, &key, &data, flags, version);
324
+ }
325
+ else
326
+ rc = mdb_put(tw->txn, dw->dbi, &key, &data, flags);
327
+
328
+ // Free original key and data (what was supplied by the user, not what points to lmdb)
329
+ if (freeKey) {
330
+ freeKey(originalKey);
331
+ }
332
+ if (freeData) {
333
+ freeData(originalData);
334
+ }
335
+
336
+ // Check result code
337
+ if (rc != 0) {
338
+ return throwLmdbError(rc);
339
+ }
340
+ }
341
+
342
+ NAN_METHOD(TxnWrap::putString) {
343
+ return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
344
+ CustomExternalStringResource::writeTo(Local<String>::Cast(info[2]), &data);
345
+ }, [](MDB_val &data) -> void {
346
+ delete[] (char*)data.mv_data;
347
+ });
348
+ }
349
+
350
+ NAN_METHOD(TxnWrap::putBinary) {
351
+ return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
352
+ data.mv_size = node::Buffer::Length(info[2]);
353
+ data.mv_data = node::Buffer::Data(info[2]);
354
+ }, [](MDB_val &) -> void {
355
+ // The data is owned by the node::Buffer so we don't need to free it.
356
+ });
357
+ }
358
+
359
+ // This is used by putNumber for temporary storage
360
+ #ifdef thread_local
361
+ static thread_local double numberToPut = 0.0;
362
+ #else
363
+ static double numberToPut = 0.0;
364
+ #endif
365
+
366
+ NAN_METHOD(TxnWrap::putNumber) {
367
+ return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
368
+ auto numberLocal = Nan::To<v8::Number>(info[2]).ToLocalChecked();
369
+ numberToPut = numberLocal->Value();
370
+ data.mv_size = sizeof(double);
371
+ data.mv_data = &numberToPut;
372
+ }, nullptr);
373
+ }
374
+
375
+ // This is used by putBoolean for temporary storage
376
+ #ifdef thread_local
377
+ static thread_local bool booleanToPut = false;
378
+ #else
379
+ static bool booleanToPut = false;
380
+ #endif
381
+
382
+ NAN_METHOD(TxnWrap::putBoolean) {
383
+ return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
384
+ auto booleanLocal = Nan::To<v8::Boolean>(info[2]).ToLocalChecked();
385
+ booleanToPut = booleanLocal->Value();
386
+
387
+ data.mv_size = sizeof(bool);
388
+ data.mv_data = &booleanToPut;
389
+ }, nullptr);
390
+ }
391
+
392
+ NAN_METHOD(TxnWrap::putUtf8) {
393
+ return putCommon(info, [](Nan::NAN_METHOD_ARGS_TYPE info, MDB_val &data) -> void {
394
+ writeValueToEntry(Local<String>::Cast(info[2]), &data);
395
+ }, [](MDB_val &data) -> void {
396
+ delete[] (char*)data.mv_data;
397
+ });
398
+ }
399
+
400
+ NAN_METHOD(TxnWrap::del) {
401
+ Nan::HandleScope scope;
402
+
403
+ // Check argument count
404
+ auto argCount = info.Length();
405
+ if (argCount < 2 || argCount > 4) {
406
+ return Nan::ThrowError("Invalid number of arguments to cursor.del, should be: (a) <dbi>, <key> (b) <dbi>, <key>, <options> (c) <dbi>, <key>, <data> (d) <dbi>, <key>, <data>, <options>");
407
+ }
408
+
409
+ // Unwrap native objects
410
+ TxnWrap *tw = Nan::ObjectWrap::Unwrap<TxnWrap>(info.This());
411
+ DbiWrap *dw = Nan::ObjectWrap::Unwrap<DbiWrap>(Local<Object>::Cast(info[0]));
412
+
413
+ if (!tw->txn) {
414
+ return Nan::ThrowError("The transaction is already closed.");
415
+ }
416
+
417
+ // Take care of options object and data handle
418
+ Local<Value> options;
419
+ Local<Value> dataHandle;
420
+
421
+ if (argCount == 4) {
422
+ options = info[3];
423
+ dataHandle = info[2];
424
+ }
425
+ else if (argCount == 3) {
426
+ if (info[2]->IsObject() && !node::Buffer::HasInstance(info[2])) {
427
+ options = info[2];
428
+ dataHandle = Nan::Undefined();
429
+ }
430
+ else {
431
+ options = Nan::Undefined();
432
+ dataHandle = info[2];
433
+ }
434
+ }
435
+ else if (argCount == 2) {
436
+ options = Nan::Undefined();
437
+ dataHandle = Nan::Undefined();
438
+ }
439
+ else {
440
+ return Nan::ThrowError("Unknown arguments to cursor.del, this could be a node-lmdb bug!");
441
+ }
442
+
443
+ MDB_val key;
444
+ auto keyType = keyTypeFromOptions(options, dw->keyType);
445
+ bool keyIsValid;
446
+ auto freeKey = argToKey(info[1], key, keyType, keyIsValid);
447
+ if (!keyIsValid) {
448
+ // argToKey already threw an error
449
+ return;
450
+ }
451
+
452
+ // Set data if dupSort true and data given
453
+ MDB_val data;
454
+ bool freeData = false;
455
+
456
+ if ((dw->flags & MDB_DUPSORT) && !(dataHandle->IsUndefined())) {
457
+ if (dataHandle->IsString()) {
458
+ writeValueToEntry(dataHandle, &data);
459
+ freeData = true;
460
+ }
461
+ else if (node::Buffer::HasInstance(dataHandle)) {
462
+ data.mv_size = node::Buffer::Length(dataHandle);
463
+ data.mv_data = node::Buffer::Data(dataHandle);
464
+ freeData = true;
465
+ }
466
+ else if (dataHandle->IsNumber()) {
467
+ auto numberLocal = Nan::To<v8::Number>(dataHandle).ToLocalChecked();
468
+ data.mv_size = sizeof(double);
469
+ data.mv_data = new double;
470
+ *reinterpret_cast<double*>(data.mv_data) = numberLocal->Value();
471
+ freeData = true;
472
+ }
473
+ else if (dataHandle->IsBoolean()) {
474
+ auto booleanLocal = Nan::To<v8::Boolean>(dataHandle).ToLocalChecked();
475
+ data.mv_size = sizeof(double);
476
+ data.mv_data = new bool;
477
+ *reinterpret_cast<bool*>(data.mv_data) = booleanLocal->Value();
478
+ freeData = true;
479
+ }
480
+ else {
481
+ Nan::ThrowError("Invalid data type.");
482
+ }
483
+ }
484
+
485
+ int rc = mdb_del(tw->txn, dw->dbi, &key, freeData ? &data : nullptr);
486
+
487
+ if (freeKey) {
488
+ freeKey(key);
489
+ }
490
+
491
+ if (freeData) {
492
+ if (dataHandle->IsString()) {
493
+ delete[] (uint16_t*)data.mv_data;
494
+ }
495
+ else if (node::Buffer::HasInstance(dataHandle)) {
496
+ // I think the data is owned by the node::Buffer so we don't need to free it - need to clarify
497
+ }
498
+ else if (dataHandle->IsNumber()) {
499
+ delete (double*)data.mv_data;
500
+ }
501
+ else if (dataHandle->IsBoolean()) {
502
+ delete (bool*)data.mv_data;
503
+ }
504
+ }
505
+
506
+ if (rc != 0) {
507
+ if (rc == MDB_NOTFOUND) {
508
+ return info.GetReturnValue().Set(Nan::False());
509
+ }
510
+ return throwLmdbError(rc);
511
+ }
512
+ return info.GetReturnValue().Set(Nan::True());
513
+ }