koffi 2.10.1 → 2.12.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 (45) hide show
  1. package/CHANGELOG.md +314 -99
  2. package/README.md +1 -0
  3. package/build/koffi/darwin_arm64/koffi.node +0 -0
  4. package/build/koffi/darwin_x64/koffi.node +0 -0
  5. package/build/koffi/freebsd_arm64/koffi.node +0 -0
  6. package/build/koffi/freebsd_ia32/koffi.node +0 -0
  7. package/build/koffi/freebsd_x64/koffi.node +0 -0
  8. package/build/koffi/linux_arm64/koffi.node +0 -0
  9. package/build/koffi/linux_armhf/koffi.node +0 -0
  10. package/build/koffi/linux_ia32/koffi.node +0 -0
  11. package/build/koffi/linux_loong64/koffi.node +0 -0
  12. package/build/koffi/linux_riscv64d/koffi.node +0 -0
  13. package/build/koffi/linux_x64/koffi.node +0 -0
  14. package/build/koffi/musl_x64/koffi.node +0 -0
  15. package/build/koffi/openbsd_ia32/koffi.node +0 -0
  16. package/build/koffi/openbsd_x64/koffi.node +0 -0
  17. package/build/koffi/win32_arm64/koffi.node +0 -0
  18. package/build/koffi/win32_ia32/koffi.node +0 -0
  19. package/build/koffi/win32_x64/koffi.node +0 -0
  20. package/doc/assets.ini +1 -1
  21. package/doc/{flaat/flaat.css → flat/flat.css} +2 -0
  22. package/doc/{flaat → flat}/normal.css +125 -31
  23. package/doc/{flaat → flat}/print.css +1 -2
  24. package/doc/flat/reset.css +41 -0
  25. package/doc/{flaat → flat}/small.css +5 -2
  26. package/doc/{flaat/flaat.js → flat/static.js} +21 -10
  27. package/doc/pages/contribute.md +3 -3
  28. package/doc/pages/output.md +32 -1
  29. package/doc/pages/packaging.md +5 -5
  30. package/doc/pages/platforms.md +2 -0
  31. package/doc/pages/pointers.md +75 -0
  32. package/doc/static/koffi.css +3 -2
  33. package/index.js +35 -9
  34. package/indirect.js +25 -9
  35. package/package.json +2 -2
  36. package/src/cnoke/src/tools.js +6 -0
  37. package/src/core/libcc/libcc.hh +3 -1
  38. package/src/koffi/CMakeLists.txt +2 -0
  39. package/src/koffi/src/abi_loong64.cc +23 -0
  40. package/src/koffi/src/abi_loong64_asm.S +240 -0
  41. package/src/koffi/src/abi_riscv64.cc +2 -2
  42. package/src/koffi/src/ffi.cc +39 -0
  43. package/src/koffi/src/ffi.hh +1 -1
  44. package/src/koffi/src/util.hh +21 -5
  45. package/build/koffi/linux_riscv64/koffi.node +0 -0
@@ -123,11 +123,27 @@ static inline bool IsRawBuffer(Napi::Value value)
123
123
  static inline Span<uint8_t> GetRawBuffer(Napi::Value value)
124
124
  {
125
125
  if (value.IsTypedArray()) {
126
- Napi::TypedArray array = value.As<Napi::TypedArray>();
127
- Napi::ArrayBuffer buffer = array.ArrayBuffer();
128
- Size offset = array.ByteOffset();
129
-
130
- return MakeSpan((uint8_t *)buffer.Data() + offset, (Size)array.ByteLength());
126
+ napi_typedarray_type type = napi_int8_array;
127
+ size_t length = 0;
128
+ void *ptr = nullptr;
129
+
130
+ napi_get_typedarray_info(value.Env(), value, &type, &length, &ptr, nullptr, nullptr);
131
+
132
+ switch (type) {
133
+ case napi_int8_array: { length *= 1; } break;
134
+ case napi_uint8_array: { length *= 1; } break;
135
+ case napi_uint8_clamped_array: { length *= 1; } break;
136
+ case napi_int16_array: { length *= 2; } break;
137
+ case napi_uint16_array: { length *= 2; } break;
138
+ case napi_int32_array: { length *= 4; } break;
139
+ case napi_uint32_array: { length *= 4; } break;
140
+ case napi_float32_array: { length *= 4; } break;
141
+ case napi_float64_array: { length *= 8; } break;
142
+ case napi_bigint64_array: { length *= 8; } break;
143
+ case napi_biguint64_array: { length *= 8; } break;
144
+ }
145
+
146
+ return MakeSpan((uint8_t *)ptr, (Size)length);
131
147
  } else if (value.IsArrayBuffer()) {
132
148
  Napi::ArrayBuffer buffer = value.As<Napi::ArrayBuffer>();
133
149