@xylabs/hex 2.13.20 → 2.13.21

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 (123) hide show
  1. package/dist/browser/address.d.cts +0 -1
  2. package/dist/browser/address.d.cts.map +1 -1
  3. package/dist/browser/address.d.mts +0 -1
  4. package/dist/browser/address.d.mts.map +1 -1
  5. package/dist/browser/address.d.ts +0 -1
  6. package/dist/browser/address.d.ts.map +1 -1
  7. package/dist/browser/assert.d.cts.map +1 -1
  8. package/dist/browser/assert.d.mts.map +1 -1
  9. package/dist/browser/assert.d.ts.map +1 -1
  10. package/dist/browser/hex/{from.d.cts → from/from.d.cts} +1 -2
  11. package/dist/browser/hex/from/from.d.cts.map +1 -0
  12. package/dist/{node/hex → browser/hex/from}/from.d.mts +1 -2
  13. package/dist/browser/hex/from/from.d.mts.map +1 -0
  14. package/dist/{node/hex → browser/hex/from}/from.d.ts +1 -2
  15. package/dist/browser/hex/from/from.d.ts.map +1 -0
  16. package/dist/browser/hex/from/fromHexString.d.cts +3 -0
  17. package/dist/browser/hex/from/fromHexString.d.cts.map +1 -0
  18. package/dist/browser/hex/from/fromHexString.d.mts +3 -0
  19. package/dist/browser/hex/from/fromHexString.d.mts.map +1 -0
  20. package/dist/browser/hex/from/fromHexString.d.ts +3 -0
  21. package/dist/browser/hex/from/fromHexString.d.ts.map +1 -0
  22. package/dist/browser/hex/from/index.d.cts +3 -0
  23. package/dist/browser/hex/from/index.d.cts.map +1 -0
  24. package/dist/browser/hex/from/index.d.mts +3 -0
  25. package/dist/browser/hex/from/index.d.mts.map +1 -0
  26. package/dist/browser/hex/from/index.d.ts +3 -0
  27. package/dist/browser/hex/from/index.d.ts.map +1 -0
  28. package/dist/browser/hex/index.d.cts +1 -0
  29. package/dist/browser/hex/index.d.cts.map +1 -1
  30. package/dist/browser/hex/index.d.mts +1 -0
  31. package/dist/browser/hex/index.d.mts.map +1 -1
  32. package/dist/browser/hex/index.d.ts +1 -0
  33. package/dist/browser/hex/index.d.ts.map +1 -1
  34. package/dist/browser/hex/is.d.cts +2 -2
  35. package/dist/browser/hex/is.d.cts.map +1 -1
  36. package/dist/browser/hex/is.d.mts +2 -2
  37. package/dist/browser/hex/is.d.mts.map +1 -1
  38. package/dist/browser/hex/is.d.ts +2 -2
  39. package/dist/browser/hex/is.d.ts.map +1 -1
  40. package/dist/browser/hex/isHexZero.d.cts +2 -0
  41. package/dist/browser/hex/isHexZero.d.cts.map +1 -0
  42. package/dist/browser/hex/isHexZero.d.mts +2 -0
  43. package/dist/browser/hex/isHexZero.d.mts.map +1 -0
  44. package/dist/browser/hex/isHexZero.d.ts +2 -0
  45. package/dist/browser/hex/isHexZero.d.ts.map +1 -0
  46. package/dist/browser/hex/regex.d.cts.map +1 -1
  47. package/dist/browser/hex/regex.d.mts.map +1 -1
  48. package/dist/browser/hex/regex.d.ts.map +1 -1
  49. package/dist/browser/index.cjs +54 -47
  50. package/dist/browser/index.cjs.map +1 -1
  51. package/dist/browser/index.js +54 -47
  52. package/dist/browser/index.js.map +1 -1
  53. package/dist/node/address.d.cts +0 -1
  54. package/dist/node/address.d.cts.map +1 -1
  55. package/dist/node/address.d.mts +0 -1
  56. package/dist/node/address.d.mts.map +1 -1
  57. package/dist/node/address.d.ts +0 -1
  58. package/dist/node/address.d.ts.map +1 -1
  59. package/dist/node/assert.d.cts.map +1 -1
  60. package/dist/node/assert.d.mts.map +1 -1
  61. package/dist/node/assert.d.ts.map +1 -1
  62. package/dist/node/hex/{from.d.cts → from/from.d.cts} +1 -2
  63. package/dist/node/hex/from/from.d.cts.map +1 -0
  64. package/dist/{browser/hex → node/hex/from}/from.d.mts +1 -2
  65. package/dist/node/hex/from/from.d.mts.map +1 -0
  66. package/dist/{browser/hex → node/hex/from}/from.d.ts +1 -2
  67. package/dist/node/hex/from/from.d.ts.map +1 -0
  68. package/dist/node/hex/from/fromHexString.d.cts +3 -0
  69. package/dist/node/hex/from/fromHexString.d.cts.map +1 -0
  70. package/dist/node/hex/from/fromHexString.d.mts +3 -0
  71. package/dist/node/hex/from/fromHexString.d.mts.map +1 -0
  72. package/dist/node/hex/from/fromHexString.d.ts +3 -0
  73. package/dist/node/hex/from/fromHexString.d.ts.map +1 -0
  74. package/dist/node/hex/from/index.d.cts +3 -0
  75. package/dist/node/hex/from/index.d.cts.map +1 -0
  76. package/dist/node/hex/from/index.d.mts +3 -0
  77. package/dist/node/hex/from/index.d.mts.map +1 -0
  78. package/dist/node/hex/from/index.d.ts +3 -0
  79. package/dist/node/hex/from/index.d.ts.map +1 -0
  80. package/dist/node/hex/index.d.cts +1 -0
  81. package/dist/node/hex/index.d.cts.map +1 -1
  82. package/dist/node/hex/index.d.mts +1 -0
  83. package/dist/node/hex/index.d.mts.map +1 -1
  84. package/dist/node/hex/index.d.ts +1 -0
  85. package/dist/node/hex/index.d.ts.map +1 -1
  86. package/dist/node/hex/is.d.cts +2 -2
  87. package/dist/node/hex/is.d.cts.map +1 -1
  88. package/dist/node/hex/is.d.mts +2 -2
  89. package/dist/node/hex/is.d.mts.map +1 -1
  90. package/dist/node/hex/is.d.ts +2 -2
  91. package/dist/node/hex/is.d.ts.map +1 -1
  92. package/dist/node/hex/isHexZero.d.cts +2 -0
  93. package/dist/node/hex/isHexZero.d.cts.map +1 -0
  94. package/dist/node/hex/isHexZero.d.mts +2 -0
  95. package/dist/node/hex/isHexZero.d.mts.map +1 -0
  96. package/dist/node/hex/isHexZero.d.ts +2 -0
  97. package/dist/node/hex/isHexZero.d.ts.map +1 -0
  98. package/dist/node/hex/regex.d.cts.map +1 -1
  99. package/dist/node/hex/regex.d.mts.map +1 -1
  100. package/dist/node/hex/regex.d.ts.map +1 -1
  101. package/dist/node/index.cjs +54 -48
  102. package/dist/node/index.cjs.map +1 -1
  103. package/dist/node/index.js +54 -47
  104. package/dist/node/index.js.map +1 -1
  105. package/package.json +9 -6
  106. package/src/address.ts +6 -17
  107. package/src/assert.ts +2 -1
  108. package/src/hash.ts +5 -3
  109. package/src/hex/as.ts +4 -2
  110. package/src/hex/{from.ts → from/from.ts} +15 -22
  111. package/src/hex/from/fromHexString.ts +15 -0
  112. package/src/hex/from/index.ts +2 -0
  113. package/src/hex/index.ts +1 -0
  114. package/src/hex/is.ts +7 -10
  115. package/src/hex/isHexZero.ts +5 -0
  116. package/src/hex/nibble.ts +1 -1
  117. package/src/hex/regex.ts +2 -2
  118. package/dist/browser/hex/from.d.cts.map +0 -1
  119. package/dist/browser/hex/from.d.mts.map +0 -1
  120. package/dist/browser/hex/from.d.ts.map +0 -1
  121. package/dist/node/hex/from.d.cts.map +0 -1
  122. package/dist/node/hex/from.d.mts.map +0 -1
  123. package/dist/node/hex/from.d.ts.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { isArrayBuffer } from '@xylabs/arraybuffer'
2
2
 
3
- import { isHex } from './is'
4
- import { HexConfig } from './model'
5
- import { bitsToNibbles } from './nibble'
3
+ import { HexConfig } from '../model'
4
+ import { bitsToNibbles } from '../nibble'
5
+ import { hexFromHexString } from './fromHexString'
6
6
 
7
7
  export const hexFromArrayBuffer = (buffer: ArrayBuffer, config?: HexConfig): string => {
8
8
  const unPadded = [...new Uint8Array(buffer)].map((x) => x.toString(16).padStart(2, '0')).join('')
@@ -20,33 +20,26 @@ export const hexFromNumber = (value: number, config?: HexConfig): string => {
20
20
  return hexFromBigInt(BigInt(value), config)
21
21
  }
22
22
 
23
- export const hexFromHexString = (value: string, config: HexConfig = {}): string => {
24
- const { prefix = false, byteSize = 8 } = config
25
- const nibbleBoundary = bitsToNibbles(byteSize)
26
- const unPadded = (value.startsWith('0x') ? value.substring(2) : value).toLowerCase()
27
- if (isHex(unPadded)) {
28
- const padded = unPadded.padStart(unPadded.length + (unPadded.length % nibbleBoundary), '0')
29
- return prefix ? `0x${padded}` : padded
30
- } else {
31
- throw Error('Received string is not a value hex')
32
- }
33
- }
34
-
35
23
  export const hexFrom = (value: unknown, config?: HexConfig): string => {
36
24
  switch (typeof value) {
37
- case 'string':
25
+ case 'string': {
38
26
  return hexFromHexString(value, config)
39
- case 'bigint':
27
+ }
28
+ case 'bigint': {
40
29
  return hexFromBigInt(value, config)
41
- case 'number':
30
+ }
31
+ case 'number': {
42
32
  return hexFromNumber(value, config)
43
- case 'object':
33
+ }
34
+ case 'object': {
44
35
  if (isArrayBuffer(value)) {
45
36
  return hexFromArrayBuffer(value, config)
46
37
  } else {
47
- throw Error('Invalid type: object !== ArrayBuffer')
38
+ throw new Error('Invalid type: object !== ArrayBuffer')
48
39
  }
49
- default:
50
- throw Error(`Invalid type: ${typeof value}`)
40
+ }
41
+ default: {
42
+ throw new Error(`Invalid type: ${typeof value}`)
43
+ }
51
44
  }
52
45
  }
@@ -0,0 +1,15 @@
1
+ import { isHex } from '../is'
2
+ import { HexConfig } from '../model'
3
+ import { bitsToNibbles } from '../nibble'
4
+
5
+ export const hexFromHexString = (value: string, config: HexConfig = {}): string => {
6
+ const { prefix = false, byteSize = 8 } = config
7
+ const nibbleBoundary = bitsToNibbles(byteSize)
8
+ const unPadded = (value.startsWith('0x') ? value.slice(2) : value).toLowerCase()
9
+ if (isHex(unPadded)) {
10
+ const padded = unPadded.padStart(unPadded.length + (unPadded.length % nibbleBoundary), '0')
11
+ return prefix ? `0x${padded}` : padded
12
+ } else {
13
+ throw new Error('Received string is not a value hex')
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ export * from './from'
2
+ export * from './fromHexString'
package/src/hex/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './as'
2
2
  export * from './from'
3
3
  export * from './is'
4
+ export * from './isHexZero'
4
5
  export * from './legacy'
5
6
  export * from './model'
6
7
  export * from './nibble'
package/src/hex/is.ts CHANGED
@@ -1,19 +1,16 @@
1
- import { hexFromHexString } from './from'
2
- import { Hex } from './model'
1
+ import { Hex, HexConfig } from './model'
3
2
  import { bitsToNibbles } from './nibble'
4
- import { hexRegex } from './regex'
3
+ import { hexRegex, hexRegexWithPrefix } from './regex'
5
4
 
6
- export const isHexZero = (value: string) => {
7
- return BigInt(hexFromHexString(value, { prefix: true })) === 0n
8
- }
9
-
10
- export const isHex = (value: unknown, bitLength?: number): value is Hex => {
5
+ export const isHex = (value: unknown, config?: HexConfig): value is Hex => {
11
6
  //Is it a string?
12
7
  if (typeof value !== 'string') return false
13
8
 
9
+ const valueCharLength = config?.prefix ? value.length - 2 : value.length
10
+
14
11
  //If a bitLength specified, does it conform?
15
- if (bitLength !== undefined && value.length !== bitsToNibbles(bitLength)) return false
12
+ if (config?.bitLength !== undefined && valueCharLength !== bitsToNibbles(config?.bitLength)) return false
16
13
 
17
14
  //Does it only has hex values?
18
- return hexRegex.test(value)
15
+ return config?.prefix ? hexRegexWithPrefix.test(value) : hexRegex.test(value)
19
16
  }
@@ -0,0 +1,5 @@
1
+ import { hexFromHexString } from './from'
2
+
3
+ export const isHexZero = (value?: string) => {
4
+ return value ? BigInt(hexFromHexString(value, { prefix: true })) === 0n : undefined
5
+ }
package/src/hex/nibble.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  //determine the number of nibbles for a given number of bits
2
2
  export const bitsToNibbles = (value: number): number => {
3
3
  const nibbles = value >> 2
4
- if (value !== nibbles << 2) throw Error('Bits for nibbles must multiple of 4')
4
+ if (value !== nibbles << 2) throw new Error('Bits for nibbles must multiple of 4')
5
5
  return nibbles
6
6
  }
7
7
 
package/src/hex/regex.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const hexRegex = /^[0-9a-f]+$/i
2
- export const hexRegexWithPrefix = /0x[0-9a-f]+$/i
1
+ export const hexRegex = /^[\da-f]+$/i
2
+ export const hexRegexWithPrefix = /0x[\da-f]+$/i
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/hex/from.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,eAAO,MAAM,kBAAkB,WAAY,WAAW,WAAW,SAAS,KAAG,MAG5E,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAU,SAAS,KAAQ,MAKrE,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,SAAS,KAAG,MAEjE,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAU,SAAS,KAAQ,MAUxE,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,OAAO,WAAW,SAAS,KAAG,MAiB5D,CAAA"}