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,419 +1,419 @@
1
- // Copyright 2020 the V8 project authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- /**
6
- * This file provides additional API on top of the default one for making
7
- * API calls, which come from embedder C++ functions. The functions are being
8
- * called directly from optimized code, doing all the necessary typechecks
9
- * in the compiler itself, instead of on the embedder side. Hence the "fast"
10
- * in the name. Example usage might look like:
11
- *
12
- * \code
13
- * void FastMethod(int param, bool another_param);
14
- *
15
- * v8::FunctionTemplate::New(isolate, SlowCallback, data,
16
- * signature, length, constructor_behavior
17
- * side_effect_type,
18
- * &v8::CFunction::Make(FastMethod));
19
- * \endcode
20
- *
21
- * By design, fast calls are limited by the following requirements, which
22
- * the embedder should enforce themselves:
23
- * - they should not allocate on the JS heap;
24
- * - they should not trigger JS execution.
25
- * To enforce them, the embedder could use the existing
26
- * v8::Isolate::DisallowJavascriptExecutionScope and a utility similar to
27
- * Blink's NoAllocationScope:
28
- * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/platform/heap/thread_state_scopes.h;l=16
29
- *
30
- * Due to these limitations, it's not directly possible to report errors by
31
- * throwing a JS exception or to otherwise do an allocation. There is an
32
- * alternative way of creating fast calls that supports falling back to the
33
- * slow call and then performing the necessary allocation. When one creates
34
- * the fast method by using CFunction::MakeWithFallbackSupport instead of
35
- * CFunction::Make, the fast callback gets as last parameter an output variable,
36
- * through which it can request falling back to the slow call. So one might
37
- * declare their method like:
38
- *
39
- * \code
40
- * void FastMethodWithFallback(int param, FastApiCallbackOptions& options);
41
- * \endcode
42
- *
43
- * If the callback wants to signal an error condition or to perform an
44
- * allocation, it must set options.fallback to true and do an early return from
45
- * the fast method. Then V8 checks the value of options.fallback and if it's
46
- * true, falls back to executing the SlowCallback, which is capable of reporting
47
- * the error (either by throwing a JS exception or logging to the console) or
48
- * doing the allocation. It's the embedder's responsibility to ensure that the
49
- * fast callback is idempotent up to the point where error and fallback
50
- * conditions are checked, because otherwise executing the slow callback might
51
- * produce visible side-effects twice.
52
- *
53
- * An example for custom embedder type support might employ a way to wrap/
54
- * unwrap various C++ types in JSObject instances, e.g:
55
- *
56
- * \code
57
- *
58
- * // Helper method with a check for field count.
59
- * template <typename T, int offset>
60
- * inline T* GetInternalField(v8::Local<v8::Object> wrapper) {
61
- * assert(offset < wrapper->InternalFieldCount());
62
- * return reinterpret_cast<T*>(
63
- * wrapper->GetAlignedPointerFromInternalField(offset));
64
- * }
65
- *
66
- * class CustomEmbedderType {
67
- * public:
68
- * // Returns the raw C object from a wrapper JS object.
69
- * static CustomEmbedderType* Unwrap(v8::Local<v8::Object> wrapper) {
70
- * return GetInternalField<CustomEmbedderType,
71
- * kV8EmbedderWrapperObjectIndex>(wrapper);
72
- * }
73
- * static void FastMethod(v8::ApiObject receiver_obj, int param) {
74
- * v8::Object* v8_object = reinterpret_cast<v8::Object*>(&api_object);
75
- * CustomEmbedderType* receiver = static_cast<CustomEmbedderType*>(
76
- * receiver_obj->GetAlignedPointerFromInternalField(
77
- * kV8EmbedderWrapperObjectIndex));
78
- *
79
- * // Type checks are already done by the optimized code.
80
- * // Then call some performance-critical method like:
81
- * // receiver->Method(param);
82
- * }
83
- *
84
- * static void SlowMethod(
85
- * const v8::FunctionCallbackInfo<v8::Value>& info) {
86
- * v8::Local<v8::Object> instance =
87
- * v8::Local<v8::Object>::Cast(info.Holder());
88
- * CustomEmbedderType* receiver = Unwrap(instance);
89
- * // TODO: Do type checks and extract {param}.
90
- * receiver->Method(param);
91
- * }
92
- * };
93
- *
94
- * // TODO(mslekova): Clean-up these constants
95
- * // The constants kV8EmbedderWrapperTypeIndex and
96
- * // kV8EmbedderWrapperObjectIndex describe the offsets for the type info
97
- * // struct and the native object, when expressed as internal field indices
98
- * // within a JSObject. The existance of this helper function assumes that
99
- * // all embedder objects have their JSObject-side type info at the same
100
- * // offset, but this is not a limitation of the API itself. For a detailed
101
- * // use case, see the third example.
102
- * static constexpr int kV8EmbedderWrapperTypeIndex = 0;
103
- * static constexpr int kV8EmbedderWrapperObjectIndex = 1;
104
- *
105
- * // The following setup function can be templatized based on
106
- * // the {embedder_object} argument.
107
- * void SetupCustomEmbedderObject(v8::Isolate* isolate,
108
- * v8::Local<v8::Context> context,
109
- * CustomEmbedderType* embedder_object) {
110
- * isolate->set_embedder_wrapper_type_index(
111
- * kV8EmbedderWrapperTypeIndex);
112
- * isolate->set_embedder_wrapper_object_index(
113
- * kV8EmbedderWrapperObjectIndex);
114
- *
115
- * v8::CFunction c_func =
116
- * MakeV8CFunction(CustomEmbedderType::FastMethod);
117
- *
118
- * Local<v8::FunctionTemplate> method_template =
119
- * v8::FunctionTemplate::New(
120
- * isolate, CustomEmbedderType::SlowMethod, v8::Local<v8::Value>(),
121
- * v8::Local<v8::Signature>(), 1, v8::ConstructorBehavior::kAllow,
122
- * v8::SideEffectType::kHasSideEffect, &c_func);
123
- *
124
- * v8::Local<v8::ObjectTemplate> object_template =
125
- * v8::ObjectTemplate::New(isolate);
126
- * object_template->SetInternalFieldCount(
127
- * kV8EmbedderWrapperObjectIndex + 1);
128
- * object_template->Set(isolate, "method", method_template);
129
- *
130
- * // Instantiate the wrapper JS object.
131
- * v8::Local<v8::Object> object =
132
- * object_template->NewInstance(context).ToLocalChecked();
133
- * object->SetAlignedPointerInInternalField(
134
- * kV8EmbedderWrapperObjectIndex,
135
- * reinterpret_cast<void*>(embedder_object));
136
- *
137
- * // TODO: Expose {object} where it's necessary.
138
- * }
139
- * \endcode
140
- *
141
- * For instance if {object} is exposed via a global "obj" variable,
142
- * one could write in JS:
143
- * function hot_func() {
144
- * obj.method(42);
145
- * }
146
- * and once {hot_func} gets optimized, CustomEmbedderType::FastMethod
147
- * will be called instead of the slow version, with the following arguments:
148
- * receiver := the {embedder_object} from above
149
- * param := 42
150
- *
151
- * Currently supported return types:
152
- * - void
153
- * - bool
154
- * - int32_t
155
- * - uint32_t
156
- * - float32_t
157
- * - float64_t
158
- * Currently supported argument types:
159
- * - pointer to an embedder type
160
- * - bool
161
- * - int32_t
162
- * - uint32_t
163
- * - int64_t
164
- * - uint64_t
165
- * - float32_t
166
- * - float64_t
167
- *
168
- * The 64-bit integer types currently have the IDL (unsigned) long long
169
- * semantics: https://heycam.github.io/webidl/#abstract-opdef-converttoint
170
- * In the future we'll extend the API to also provide conversions from/to
171
- * BigInt to preserve full precision.
172
- * The floating point types currently have the IDL (unrestricted) semantics,
173
- * which is the only one used by WebGL. We plan to add support also for
174
- * restricted floats/doubles, similarly to the BigInt conversion policies.
175
- * We also differ from the specific NaN bit pattern that WebIDL prescribes
176
- * (https://heycam.github.io/webidl/#es-unrestricted-float) in that Blink
177
- * passes NaN values as-is, i.e. doesn't normalize them.
178
- *
179
- * To be supported types:
180
- * - arrays of C types
181
- * - arrays of embedder types
182
- */
183
-
184
- #ifndef INCLUDE_V8_FAST_API_CALLS_H_
185
- #define INCLUDE_V8_FAST_API_CALLS_H_
186
-
187
- #include <stddef.h>
188
- #include <stdint.h>
189
-
190
- #include "v8config.h" // NOLINT(build/include_directory)
191
-
192
- namespace v8 {
193
-
194
- class CTypeInfo {
195
- public:
196
- enum class Type : uint8_t {
197
- kVoid,
198
- kBool,
199
- kInt32,
200
- kUint32,
201
- kInt64,
202
- kUint64,
203
- kFloat32,
204
- kFloat64,
205
- kV8Value,
206
- };
207
-
208
- // kCallbackOptionsType and kInvalidType are not part of the Type enum
209
- // because they are only used internally. Use values 255 and 254 that
210
- // are larger than any valid Type enum.
211
- static constexpr Type kCallbackOptionsType = Type(255);
212
- static constexpr Type kInvalidType = Type(254);
213
-
214
- enum class ArgFlags : uint8_t {
215
- kNone = 0,
216
- };
217
-
218
- explicit constexpr CTypeInfo(Type type, ArgFlags flags = ArgFlags::kNone)
219
- : type_(type), flags_(flags) {}
220
-
221
- constexpr Type GetType() const { return type_; }
222
-
223
- constexpr ArgFlags GetFlags() const { return flags_; }
224
-
225
- static const CTypeInfo& Invalid() {
226
- static CTypeInfo invalid = CTypeInfo(kInvalidType);
227
- return invalid;
228
- }
229
-
230
- private:
231
- Type type_;
232
- ArgFlags flags_;
233
- };
234
-
235
- class CFunctionInfo {
236
- public:
237
- virtual const CTypeInfo& ReturnInfo() const = 0;
238
- virtual unsigned int ArgumentCount() const = 0;
239
- virtual const CTypeInfo& ArgumentInfo(unsigned int index) const = 0;
240
- virtual bool HasOptions() const = 0;
241
- };
242
-
243
- struct ApiObject {
244
- uintptr_t address;
245
- };
246
-
247
- /**
248
- * A struct which may be passed to a fast call callback, like so:
249
- * \code
250
- * void FastMethodWithOptions(int param, FastApiCallbackOptions& options);
251
- * \endcode
252
- */
253
- struct FastApiCallbackOptions {
254
- /**
255
- * If the callback wants to signal an error condition or to perform an
256
- * allocation, it must set options.fallback to true and do an early return
257
- * from the fast method. Then V8 checks the value of options.fallback and if
258
- * it's true, falls back to executing the SlowCallback, which is capable of
259
- * reporting the error (either by throwing a JS exception or logging to the
260
- * console) or doing the allocation. It's the embedder's responsibility to
261
- * ensure that the fast callback is idempotent up to the point where error and
262
- * fallback conditions are checked, because otherwise executing the slow
263
- * callback might produce visible side-effects twice.
264
- */
265
- bool fallback;
266
-
267
- /**
268
- * The `data` passed to the FunctionTemplate constructor, or `undefined`.
269
- */
270
- const ApiObject data;
271
- };
272
-
273
- namespace internal {
274
-
275
- template <typename T>
276
- struct GetCType;
277
-
278
- #define SPECIALIZE_GET_C_TYPE_FOR(ctype, ctypeinfo) \
279
- template <> \
280
- struct GetCType<ctype> { \
281
- static constexpr CTypeInfo Get() { \
282
- return CTypeInfo(CTypeInfo::Type::ctypeinfo); \
283
- } \
284
- };
285
-
286
- #define SUPPORTED_C_TYPES(V) \
287
- V(void, kVoid) \
288
- V(bool, kBool) \
289
- V(int32_t, kInt32) \
290
- V(uint32_t, kUint32) \
291
- V(int64_t, kInt64) \
292
- V(uint64_t, kUint64) \
293
- V(float, kFloat32) \
294
- V(double, kFloat64) \
295
- V(ApiObject, kV8Value)
296
-
297
- SUPPORTED_C_TYPES(SPECIALIZE_GET_C_TYPE_FOR)
298
-
299
- template <>
300
- struct GetCType<FastApiCallbackOptions&> {
301
- static constexpr CTypeInfo Get() {
302
- return CTypeInfo(CTypeInfo::kCallbackOptionsType);
303
- }
304
- };
305
-
306
- // Helper to count the number of occurances of `T` in `List`
307
- template <typename T, typename... List>
308
- struct count : std::integral_constant<int, 0> {};
309
- template <typename T, typename... Args>
310
- struct count<T, T, Args...>
311
- : std::integral_constant<std::size_t, 1 + count<T, Args...>::value> {};
312
- template <typename T, typename U, typename... Args>
313
- struct count<T, U, Args...> : count<T, Args...> {};
314
-
315
- template <typename R, typename... Args>
316
- class CFunctionInfoImpl : public CFunctionInfo {
317
- public:
318
- static constexpr int kOptionsArgCount =
319
- count<FastApiCallbackOptions&, Args...>();
320
- static constexpr int kReceiverCount = 1;
321
- CFunctionInfoImpl()
322
- : return_info_(internal::GetCType<R>::Get()),
323
- arg_count_(sizeof...(Args) - kOptionsArgCount),
324
- arg_info_{internal::GetCType<Args>::Get()...} {
325
- static_assert(kOptionsArgCount == 0 || kOptionsArgCount == 1,
326
- "Only one options parameter is supported.");
327
- static_assert(sizeof...(Args) >= kOptionsArgCount + kReceiverCount,
328
- "The receiver or the fallback argument is missing.");
329
- constexpr CTypeInfo::Type type = internal::GetCType<R>::Get().GetType();
330
- static_assert(type == CTypeInfo::Type::kVoid ||
331
- type == CTypeInfo::Type::kBool ||
332
- type == CTypeInfo::Type::kInt32 ||
333
- type == CTypeInfo::Type::kUint32 ||
334
- type == CTypeInfo::Type::kFloat32 ||
335
- type == CTypeInfo::Type::kFloat64,
336
- "64-bit int and api object values are not currently "
337
- "supported return types.");
338
- }
339
-
340
- const CTypeInfo& ReturnInfo() const override { return return_info_; }
341
- unsigned int ArgumentCount() const override { return arg_count_; }
342
- const CTypeInfo& ArgumentInfo(unsigned int index) const override {
343
- if (index >= ArgumentCount()) {
344
- return CTypeInfo::Invalid();
345
- }
346
- return arg_info_[index];
347
- }
348
- bool HasOptions() const override { return kOptionsArgCount == 1; }
349
-
350
- private:
351
- const CTypeInfo return_info_;
352
- const unsigned int arg_count_;
353
- const CTypeInfo arg_info_[sizeof...(Args)];
354
- };
355
-
356
- } // namespace internal
357
-
358
- class V8_EXPORT CFunction {
359
- public:
360
- constexpr CFunction() : address_(nullptr), type_info_(nullptr) {}
361
-
362
- const CTypeInfo& ReturnInfo() const { return type_info_->ReturnInfo(); }
363
-
364
- const CTypeInfo& ArgumentInfo(unsigned int index) const {
365
- return type_info_->ArgumentInfo(index);
366
- }
367
-
368
- unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
369
-
370
- const void* GetAddress() const { return address_; }
371
- const CFunctionInfo* GetTypeInfo() const { return type_info_; }
372
-
373
- template <typename F>
374
- static CFunction Make(F* func) {
375
- return ArgUnwrap<F*>::Make(func);
376
- }
377
-
378
- template <typename F>
379
- V8_DEPRECATED("Use CFunction::Make instead.")
380
- static CFunction MakeWithFallbackSupport(F* func) {
381
- return ArgUnwrap<F*>::Make(func);
382
- }
383
-
384
- template <typename F>
385
- static CFunction Make(F* func, const CFunctionInfo* type_info) {
386
- return CFunction(reinterpret_cast<const void*>(func), type_info);
387
- }
388
-
389
- private:
390
- const void* address_;
391
- const CFunctionInfo* type_info_;
392
-
393
- CFunction(const void* address, const CFunctionInfo* type_info);
394
-
395
- template <typename R, typename... Args>
396
- static CFunctionInfo* GetCFunctionInfo() {
397
- static internal::CFunctionInfoImpl<R, Args...> instance;
398
- return &instance;
399
- }
400
-
401
- template <typename F>
402
- class ArgUnwrap {
403
- static_assert(sizeof(F) != sizeof(F),
404
- "CFunction must be created from a function pointer.");
405
- };
406
-
407
- template <typename R, typename... Args>
408
- class ArgUnwrap<R (*)(Args...)> {
409
- public:
410
- static CFunction Make(R (*func)(Args...)) {
411
- return CFunction(reinterpret_cast<const void*>(func),
412
- GetCFunctionInfo<R, Args...>());
413
- }
414
- };
415
- };
416
-
417
- } // namespace v8
418
-
419
- #endif // INCLUDE_V8_FAST_API_CALLS_H_
1
+ // Copyright 2020 the V8 project authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ /**
6
+ * This file provides additional API on top of the default one for making
7
+ * API calls, which come from embedder C++ functions. The functions are being
8
+ * called directly from optimized code, doing all the necessary typechecks
9
+ * in the compiler itself, instead of on the embedder side. Hence the "fast"
10
+ * in the name. Example usage might look like:
11
+ *
12
+ * \code
13
+ * void FastMethod(int param, bool another_param);
14
+ *
15
+ * v8::FunctionTemplate::New(isolate, SlowCallback, data,
16
+ * signature, length, constructor_behavior
17
+ * side_effect_type,
18
+ * &v8::CFunction::Make(FastMethod));
19
+ * \endcode
20
+ *
21
+ * By design, fast calls are limited by the following requirements, which
22
+ * the embedder should enforce themselves:
23
+ * - they should not allocate on the JS heap;
24
+ * - they should not trigger JS execution.
25
+ * To enforce them, the embedder could use the existing
26
+ * v8::Isolate::DisallowJavascriptExecutionScope and a utility similar to
27
+ * Blink's NoAllocationScope:
28
+ * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/platform/heap/thread_state_scopes.h;l=16
29
+ *
30
+ * Due to these limitations, it's not directly possible to report errors by
31
+ * throwing a JS exception or to otherwise do an allocation. There is an
32
+ * alternative way of creating fast calls that supports falling back to the
33
+ * slow call and then performing the necessary allocation. When one creates
34
+ * the fast method by using CFunction::MakeWithFallbackSupport instead of
35
+ * CFunction::Make, the fast callback gets as last parameter an output variable,
36
+ * through which it can request falling back to the slow call. So one might
37
+ * declare their method like:
38
+ *
39
+ * \code
40
+ * void FastMethodWithFallback(int param, FastApiCallbackOptions& options);
41
+ * \endcode
42
+ *
43
+ * If the callback wants to signal an error condition or to perform an
44
+ * allocation, it must set options.fallback to true and do an early return from
45
+ * the fast method. Then V8 checks the value of options.fallback and if it's
46
+ * true, falls back to executing the SlowCallback, which is capable of reporting
47
+ * the error (either by throwing a JS exception or logging to the console) or
48
+ * doing the allocation. It's the embedder's responsibility to ensure that the
49
+ * fast callback is idempotent up to the point where error and fallback
50
+ * conditions are checked, because otherwise executing the slow callback might
51
+ * produce visible side-effects twice.
52
+ *
53
+ * An example for custom embedder type support might employ a way to wrap/
54
+ * unwrap various C++ types in JSObject instances, e.g:
55
+ *
56
+ * \code
57
+ *
58
+ * // Helper method with a check for field count.
59
+ * template <typename T, int offset>
60
+ * inline T* GetInternalField(v8::Local<v8::Object> wrapper) {
61
+ * assert(offset < wrapper->InternalFieldCount());
62
+ * return reinterpret_cast<T*>(
63
+ * wrapper->GetAlignedPointerFromInternalField(offset));
64
+ * }
65
+ *
66
+ * class CustomEmbedderType {
67
+ * public:
68
+ * // Returns the raw C object from a wrapper JS object.
69
+ * static CustomEmbedderType* Unwrap(v8::Local<v8::Object> wrapper) {
70
+ * return GetInternalField<CustomEmbedderType,
71
+ * kV8EmbedderWrapperObjectIndex>(wrapper);
72
+ * }
73
+ * static void FastMethod(v8::ApiObject receiver_obj, int param) {
74
+ * v8::Object* v8_object = reinterpret_cast<v8::Object*>(&api_object);
75
+ * CustomEmbedderType* receiver = static_cast<CustomEmbedderType*>(
76
+ * receiver_obj->GetAlignedPointerFromInternalField(
77
+ * kV8EmbedderWrapperObjectIndex));
78
+ *
79
+ * // Type checks are already done by the optimized code.
80
+ * // Then call some performance-critical method like:
81
+ * // receiver->Method(param);
82
+ * }
83
+ *
84
+ * static void SlowMethod(
85
+ * const v8::FunctionCallbackInfo<v8::Value>& info) {
86
+ * v8::Local<v8::Object> instance =
87
+ * v8::Local<v8::Object>::Cast(info.Holder());
88
+ * CustomEmbedderType* receiver = Unwrap(instance);
89
+ * // TODO: Do type checks and extract {param}.
90
+ * receiver->Method(param);
91
+ * }
92
+ * };
93
+ *
94
+ * // TODO(mslekova): Clean-up these constants
95
+ * // The constants kV8EmbedderWrapperTypeIndex and
96
+ * // kV8EmbedderWrapperObjectIndex describe the offsets for the type info
97
+ * // struct and the native object, when expressed as internal field indices
98
+ * // within a JSObject. The existance of this helper function assumes that
99
+ * // all embedder objects have their JSObject-side type info at the same
100
+ * // offset, but this is not a limitation of the API itself. For a detailed
101
+ * // use case, see the third example.
102
+ * static constexpr int kV8EmbedderWrapperTypeIndex = 0;
103
+ * static constexpr int kV8EmbedderWrapperObjectIndex = 1;
104
+ *
105
+ * // The following setup function can be templatized based on
106
+ * // the {embedder_object} argument.
107
+ * void SetupCustomEmbedderObject(v8::Isolate* isolate,
108
+ * v8::Local<v8::Context> context,
109
+ * CustomEmbedderType* embedder_object) {
110
+ * isolate->set_embedder_wrapper_type_index(
111
+ * kV8EmbedderWrapperTypeIndex);
112
+ * isolate->set_embedder_wrapper_object_index(
113
+ * kV8EmbedderWrapperObjectIndex);
114
+ *
115
+ * v8::CFunction c_func =
116
+ * MakeV8CFunction(CustomEmbedderType::FastMethod);
117
+ *
118
+ * Local<v8::FunctionTemplate> method_template =
119
+ * v8::FunctionTemplate::New(
120
+ * isolate, CustomEmbedderType::SlowMethod, v8::Local<v8::Value>(),
121
+ * v8::Local<v8::Signature>(), 1, v8::ConstructorBehavior::kAllow,
122
+ * v8::SideEffectType::kHasSideEffect, &c_func);
123
+ *
124
+ * v8::Local<v8::ObjectTemplate> object_template =
125
+ * v8::ObjectTemplate::New(isolate);
126
+ * object_template->SetInternalFieldCount(
127
+ * kV8EmbedderWrapperObjectIndex + 1);
128
+ * object_template->Set(isolate, "method", method_template);
129
+ *
130
+ * // Instantiate the wrapper JS object.
131
+ * v8::Local<v8::Object> object =
132
+ * object_template->NewInstance(context).ToLocalChecked();
133
+ * object->SetAlignedPointerInInternalField(
134
+ * kV8EmbedderWrapperObjectIndex,
135
+ * reinterpret_cast<void*>(embedder_object));
136
+ *
137
+ * // TODO: Expose {object} where it's necessary.
138
+ * }
139
+ * \endcode
140
+ *
141
+ * For instance if {object} is exposed via a global "obj" variable,
142
+ * one could write in JS:
143
+ * function hot_func() {
144
+ * obj.method(42);
145
+ * }
146
+ * and once {hot_func} gets optimized, CustomEmbedderType::FastMethod
147
+ * will be called instead of the slow version, with the following arguments:
148
+ * receiver := the {embedder_object} from above
149
+ * param := 42
150
+ *
151
+ * Currently supported return types:
152
+ * - void
153
+ * - bool
154
+ * - int32_t
155
+ * - uint32_t
156
+ * - float32_t
157
+ * - float64_t
158
+ * Currently supported argument types:
159
+ * - pointer to an embedder type
160
+ * - bool
161
+ * - int32_t
162
+ * - uint32_t
163
+ * - int64_t
164
+ * - uint64_t
165
+ * - float32_t
166
+ * - float64_t
167
+ *
168
+ * The 64-bit integer types currently have the IDL (unsigned) long long
169
+ * semantics: https://heycam.github.io/webidl/#abstract-opdef-converttoint
170
+ * In the future we'll extend the API to also provide conversions from/to
171
+ * BigInt to preserve full precision.
172
+ * The floating point types currently have the IDL (unrestricted) semantics,
173
+ * which is the only one used by WebGL. We plan to add support also for
174
+ * restricted floats/doubles, similarly to the BigInt conversion policies.
175
+ * We also differ from the specific NaN bit pattern that WebIDL prescribes
176
+ * (https://heycam.github.io/webidl/#es-unrestricted-float) in that Blink
177
+ * passes NaN values as-is, i.e. doesn't normalize them.
178
+ *
179
+ * To be supported types:
180
+ * - arrays of C types
181
+ * - arrays of embedder types
182
+ */
183
+
184
+ #ifndef INCLUDE_V8_FAST_API_CALLS_H_
185
+ #define INCLUDE_V8_FAST_API_CALLS_H_
186
+
187
+ #include <stddef.h>
188
+ #include <stdint.h>
189
+
190
+ #include "v8config.h" // NOLINT(build/include_directory)
191
+
192
+ namespace v8 {
193
+
194
+ class CTypeInfo {
195
+ public:
196
+ enum class Type : uint8_t {
197
+ kVoid,
198
+ kBool,
199
+ kInt32,
200
+ kUint32,
201
+ kInt64,
202
+ kUint64,
203
+ kFloat32,
204
+ kFloat64,
205
+ kV8Value,
206
+ };
207
+
208
+ // kCallbackOptionsType and kInvalidType are not part of the Type enum
209
+ // because they are only used internally. Use values 255 and 254 that
210
+ // are larger than any valid Type enum.
211
+ static constexpr Type kCallbackOptionsType = Type(255);
212
+ static constexpr Type kInvalidType = Type(254);
213
+
214
+ enum class ArgFlags : uint8_t {
215
+ kNone = 0,
216
+ };
217
+
218
+ explicit constexpr CTypeInfo(Type type, ArgFlags flags = ArgFlags::kNone)
219
+ : type_(type), flags_(flags) {}
220
+
221
+ constexpr Type GetType() const { return type_; }
222
+
223
+ constexpr ArgFlags GetFlags() const { return flags_; }
224
+
225
+ static const CTypeInfo& Invalid() {
226
+ static CTypeInfo invalid = CTypeInfo(kInvalidType);
227
+ return invalid;
228
+ }
229
+
230
+ private:
231
+ Type type_;
232
+ ArgFlags flags_;
233
+ };
234
+
235
+ class CFunctionInfo {
236
+ public:
237
+ virtual const CTypeInfo& ReturnInfo() const = 0;
238
+ virtual unsigned int ArgumentCount() const = 0;
239
+ virtual const CTypeInfo& ArgumentInfo(unsigned int index) const = 0;
240
+ virtual bool HasOptions() const = 0;
241
+ };
242
+
243
+ struct ApiObject {
244
+ uintptr_t address;
245
+ };
246
+
247
+ /**
248
+ * A struct which may be passed to a fast call callback, like so:
249
+ * \code
250
+ * void FastMethodWithOptions(int param, FastApiCallbackOptions& options);
251
+ * \endcode
252
+ */
253
+ struct FastApiCallbackOptions {
254
+ /**
255
+ * If the callback wants to signal an error condition or to perform an
256
+ * allocation, it must set options.fallback to true and do an early return
257
+ * from the fast method. Then V8 checks the value of options.fallback and if
258
+ * it's true, falls back to executing the SlowCallback, which is capable of
259
+ * reporting the error (either by throwing a JS exception or logging to the
260
+ * console) or doing the allocation. It's the embedder's responsibility to
261
+ * ensure that the fast callback is idempotent up to the point where error and
262
+ * fallback conditions are checked, because otherwise executing the slow
263
+ * callback might produce visible side-effects twice.
264
+ */
265
+ bool fallback;
266
+
267
+ /**
268
+ * The `data` passed to the FunctionTemplate constructor, or `undefined`.
269
+ */
270
+ const ApiObject data;
271
+ };
272
+
273
+ namespace internal {
274
+
275
+ template <typename T>
276
+ struct GetCType;
277
+
278
+ #define SPECIALIZE_GET_C_TYPE_FOR(ctype, ctypeinfo) \
279
+ template <> \
280
+ struct GetCType<ctype> { \
281
+ static constexpr CTypeInfo Get() { \
282
+ return CTypeInfo(CTypeInfo::Type::ctypeinfo); \
283
+ } \
284
+ };
285
+
286
+ #define SUPPORTED_C_TYPES(V) \
287
+ V(void, kVoid) \
288
+ V(bool, kBool) \
289
+ V(int32_t, kInt32) \
290
+ V(uint32_t, kUint32) \
291
+ V(int64_t, kInt64) \
292
+ V(uint64_t, kUint64) \
293
+ V(float, kFloat32) \
294
+ V(double, kFloat64) \
295
+ V(ApiObject, kV8Value)
296
+
297
+ SUPPORTED_C_TYPES(SPECIALIZE_GET_C_TYPE_FOR)
298
+
299
+ template <>
300
+ struct GetCType<FastApiCallbackOptions&> {
301
+ static constexpr CTypeInfo Get() {
302
+ return CTypeInfo(CTypeInfo::kCallbackOptionsType);
303
+ }
304
+ };
305
+
306
+ // Helper to count the number of occurances of `T` in `List`
307
+ template <typename T, typename... List>
308
+ struct count : std::integral_constant<int, 0> {};
309
+ template <typename T, typename... Args>
310
+ struct count<T, T, Args...>
311
+ : std::integral_constant<std::size_t, 1 + count<T, Args...>::value> {};
312
+ template <typename T, typename U, typename... Args>
313
+ struct count<T, U, Args...> : count<T, Args...> {};
314
+
315
+ template <typename R, typename... Args>
316
+ class CFunctionInfoImpl : public CFunctionInfo {
317
+ public:
318
+ static constexpr int kOptionsArgCount =
319
+ count<FastApiCallbackOptions&, Args...>();
320
+ static constexpr int kReceiverCount = 1;
321
+ CFunctionInfoImpl()
322
+ : return_info_(internal::GetCType<R>::Get()),
323
+ arg_count_(sizeof...(Args) - kOptionsArgCount),
324
+ arg_info_{internal::GetCType<Args>::Get()...} {
325
+ static_assert(kOptionsArgCount == 0 || kOptionsArgCount == 1,
326
+ "Only one options parameter is supported.");
327
+ static_assert(sizeof...(Args) >= kOptionsArgCount + kReceiverCount,
328
+ "The receiver or the fallback argument is missing.");
329
+ constexpr CTypeInfo::Type type = internal::GetCType<R>::Get().GetType();
330
+ static_assert(type == CTypeInfo::Type::kVoid ||
331
+ type == CTypeInfo::Type::kBool ||
332
+ type == CTypeInfo::Type::kInt32 ||
333
+ type == CTypeInfo::Type::kUint32 ||
334
+ type == CTypeInfo::Type::kFloat32 ||
335
+ type == CTypeInfo::Type::kFloat64,
336
+ "64-bit int and api object values are not currently "
337
+ "supported return types.");
338
+ }
339
+
340
+ const CTypeInfo& ReturnInfo() const override { return return_info_; }
341
+ unsigned int ArgumentCount() const override { return arg_count_; }
342
+ const CTypeInfo& ArgumentInfo(unsigned int index) const override {
343
+ if (index >= ArgumentCount()) {
344
+ return CTypeInfo::Invalid();
345
+ }
346
+ return arg_info_[index];
347
+ }
348
+ bool HasOptions() const override { return kOptionsArgCount == 1; }
349
+
350
+ private:
351
+ const CTypeInfo return_info_;
352
+ const unsigned int arg_count_;
353
+ const CTypeInfo arg_info_[sizeof...(Args)];
354
+ };
355
+
356
+ } // namespace internal
357
+
358
+ class V8_EXPORT CFunction {
359
+ public:
360
+ constexpr CFunction() : address_(nullptr), type_info_(nullptr) {}
361
+
362
+ const CTypeInfo& ReturnInfo() const { return type_info_->ReturnInfo(); }
363
+
364
+ const CTypeInfo& ArgumentInfo(unsigned int index) const {
365
+ return type_info_->ArgumentInfo(index);
366
+ }
367
+
368
+ unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
369
+
370
+ const void* GetAddress() const { return address_; }
371
+ const CFunctionInfo* GetTypeInfo() const { return type_info_; }
372
+
373
+ template <typename F>
374
+ static CFunction Make(F* func) {
375
+ return ArgUnwrap<F*>::Make(func);
376
+ }
377
+
378
+ template <typename F>
379
+ V8_DEPRECATED("Use CFunction::Make instead.")
380
+ static CFunction MakeWithFallbackSupport(F* func) {
381
+ return ArgUnwrap<F*>::Make(func);
382
+ }
383
+
384
+ template <typename F>
385
+ static CFunction Make(F* func, const CFunctionInfo* type_info) {
386
+ return CFunction(reinterpret_cast<const void*>(func), type_info);
387
+ }
388
+
389
+ private:
390
+ const void* address_;
391
+ const CFunctionInfo* type_info_;
392
+
393
+ CFunction(const void* address, const CFunctionInfo* type_info);
394
+
395
+ template <typename R, typename... Args>
396
+ static CFunctionInfo* GetCFunctionInfo() {
397
+ static internal::CFunctionInfoImpl<R, Args...> instance;
398
+ return &instance;
399
+ }
400
+
401
+ template <typename F>
402
+ class ArgUnwrap {
403
+ static_assert(sizeof(F) != sizeof(F),
404
+ "CFunction must be created from a function pointer.");
405
+ };
406
+
407
+ template <typename R, typename... Args>
408
+ class ArgUnwrap<R (*)(Args...)> {
409
+ public:
410
+ static CFunction Make(R (*func)(Args...)) {
411
+ return CFunction(reinterpret_cast<const void*>(func),
412
+ GetCFunctionInfo<R, Args...>());
413
+ }
414
+ };
415
+ };
416
+
417
+ } // namespace v8
418
+
419
+ #endif // INCLUDE_V8_FAST_API_CALLS_H_