react-native-nitro-buffer 0.0.1

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 (31) hide show
  1. package/README.md +129 -0
  2. package/cpp/HybridNitroBuffer.cpp +497 -0
  3. package/cpp/HybridNitroBuffer.hpp +44 -0
  4. package/lib/Buffer.d.ts +79 -0
  5. package/lib/Buffer.js +642 -0
  6. package/lib/NitroBuffer.nitro.d.ts +18 -0
  7. package/lib/NitroBuffer.nitro.js +2 -0
  8. package/lib/index.d.ts +12 -0
  9. package/lib/index.js +34 -0
  10. package/lib/utils.d.ts +7 -0
  11. package/lib/utils.js +90 -0
  12. package/nitrogen/generated/.gitattributes +1 -0
  13. package/nitrogen/generated/android/NitroBuffer+autolinking.cmake +81 -0
  14. package/nitrogen/generated/android/NitroBuffer+autolinking.gradle +27 -0
  15. package/nitrogen/generated/android/NitroBufferOnLoad.cpp +44 -0
  16. package/nitrogen/generated/android/NitroBufferOnLoad.hpp +25 -0
  17. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitro_buffer/NitroBufferOnLoad.kt +35 -0
  18. package/nitrogen/generated/ios/NitroBuffer+autolinking.rb +60 -0
  19. package/nitrogen/generated/ios/NitroBuffer-Swift-Cxx-Bridge.cpp +17 -0
  20. package/nitrogen/generated/ios/NitroBuffer-Swift-Cxx-Bridge.hpp +27 -0
  21. package/nitrogen/generated/ios/NitroBuffer-Swift-Cxx-Umbrella.hpp +38 -0
  22. package/nitrogen/generated/ios/NitroBufferAutolinking.mm +35 -0
  23. package/nitrogen/generated/ios/NitroBufferAutolinking.swift +12 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +32 -0
  25. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +74 -0
  26. package/package.json +55 -0
  27. package/react-native-nitro-buffer.podspec +40 -0
  28. package/src/Buffer.ts +675 -0
  29. package/src/NitroBuffer.nitro.ts +19 -0
  30. package/src/index.ts +18 -0
  31. package/src/utils.ts +76 -0
package/src/index.ts ADDED
@@ -0,0 +1,18 @@
1
+ export { Buffer } from './Buffer'
2
+ export * from './utils'
3
+
4
+ export const INSPECT_MAX_BYTES = 50
5
+ export const kMaxLength = 2147483647
6
+ export const kStringMaxLength = 536870888
7
+
8
+ export const constants = {
9
+ MAX_LENGTH: kMaxLength,
10
+ MAX_STRING_LENGTH: kStringMaxLength
11
+ }
12
+
13
+ export class SlowBuffer extends Uint8Array {
14
+ constructor(size: number) {
15
+ super(size)
16
+ Object.setPrototypeOf(this, require('./Buffer').Buffer.prototype)
17
+ }
18
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,76 @@
1
+
2
+ import { Buffer } from './Buffer'
3
+
4
+ export function atob(data: string): string {
5
+ return Buffer.from(data, 'base64').toString('binary')
6
+ }
7
+
8
+ export function btoa(data: string): string {
9
+ return Buffer.from(data, 'binary').toString('base64')
10
+ }
11
+
12
+ export function isAscii(input: Buffer | Uint8Array | ArrayBuffer): boolean {
13
+ const arr = input instanceof Uint8Array ? input : new Uint8Array(input as ArrayBuffer)
14
+ for (let i = 0; i < arr.length; i++) {
15
+ if (arr[i] > 127) return false
16
+ }
17
+ return true
18
+ }
19
+
20
+ export function isUtf8(input: Buffer | Uint8Array | ArrayBuffer): boolean {
21
+ const arr = input instanceof Uint8Array ? input : new Uint8Array(input as ArrayBuffer)
22
+ try {
23
+ // Fast path: TextDecoder if available
24
+ if (typeof TextDecoder !== 'undefined') {
25
+ new TextDecoder('utf-8', { fatal: true }).decode(arr)
26
+ return true
27
+ }
28
+ } catch (e) {
29
+ return false
30
+ }
31
+
32
+ // Fallback: JS implementation of UTF-8 validation
33
+ let i = 0
34
+ const len = arr.length
35
+ while (i < len) {
36
+ let descriptor = arr[i]
37
+ if (descriptor <= 127) {
38
+ i++
39
+ continue
40
+ } else if ((descriptor & 0xE0) === 0xC0) {
41
+ // 2 bytes
42
+ if (i + 1 >= len || (arr[i + 1] & 0xC0) !== 0x80) return false
43
+ if ((descriptor & 0xFE) === 0xC0) return false // Overlong
44
+ i += 2
45
+ } else if ((descriptor & 0xF0) === 0xE0) {
46
+ // 3 bytes
47
+ if (i + 2 >= len || (arr[i + 1] & 0xC0) !== 0x80 || (arr[i + 2] & 0xC0) !== 0x80) return false
48
+ if (descriptor === 0xE0 && (arr[i + 1] < 0xA0)) return false // Overlong
49
+ if (descriptor === 0xED && (arr[i + 1] >= 0xA0)) return false // Surrogate
50
+ i += 3
51
+ } else if ((descriptor & 0xF8) === 0xF0) {
52
+ // 4 bytes
53
+ if (i + 3 >= len || (arr[i + 1] & 0xC0) !== 0x80 || (arr[i + 2] & 0xC0) !== 0x80 || (arr[i + 3] & 0xC0) !== 0x80) return false
54
+ if (descriptor === 0xF0 && (arr[i + 1] < 0x90)) return false // Overlong
55
+ if (descriptor === 0xF4 && (arr[i + 1] >= 0x90)) return false // Out of range
56
+ i += 4
57
+ } else {
58
+ return false
59
+ }
60
+ }
61
+ return true
62
+ }
63
+
64
+ export function transcode(source: Uint8Array, fromEnc: string, toEnc: string): Buffer {
65
+ if (!Buffer.isEncoding(fromEnc) || !Buffer.isEncoding(toEnc)) {
66
+ throw new TypeError('Invalid encoding')
67
+ }
68
+ const buf = source instanceof Buffer ? source : Buffer.from(source)
69
+ const str = buf.toString(fromEnc)
70
+ return Buffer.from(str, toEnc)
71
+ }
72
+
73
+ export function resolveObjectURL(id: string): string | undefined {
74
+ // Not implemented in RN context usually, stub or return undefined
75
+ return undefined
76
+ }