@xylabs/eth-address 6.0.10 → 6.1.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.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![logo][]](https://xylabs.com)
2
+
1
3
  # @xylabs/eth-address
2
4
 
3
5
  [![npm][npm-badge]][npm-link]
@@ -334,8 +336,12 @@ function padHex(hex, byteCount?): string;
334
336
 
335
337
  `string`
336
338
 
339
+ ## Credits
340
+
341
+ [Made with 🔥 and ❄️ by XY Labs](https://xylabs.com)
337
342
 
338
343
  [npm-badge]: https://img.shields.io/npm/v/@xylabs/eth-address.svg
339
344
  [npm-link]: https://www.npmjs.com/package/@xylabs/eth-address
340
345
  [license-badge]: https://img.shields.io/npm/l/@xylabs/eth-address.svg
341
346
  [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
347
+ [logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
@@ -1,8 +1,4 @@
1
- /**
2
- * Truncates a string to show the first and last `length` characters separated by an ellipsis.
3
- * @param value - The string to ellipsize
4
- * @param length - Number of characters to keep at each end (default 2)
5
- * @returns The ellipsized string
6
- */
7
- export declare const ellipsize: (value: string, length?: number) => string;
1
+ export {
2
+ /** @deprecated import from @xylabs/sdk-js (or @xylabs/ellipsize) instead */
3
+ ellipsize, } from '@xylabs/ellipsize';
8
4
  //# sourceMappingURL=ellipsize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ellipsize.d.ts","sourceRoot":"","sources":["../../src/ellipsize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,eAAU,WAIlD,CAAA"}
1
+ {"version":3,"file":"ellipsize.d.ts","sourceRoot":"","sources":["../../src/ellipsize.ts"],"names":[],"mappings":"AAAA,OAAO;AACL,4EAA4E;AAC5E,SAAS,GACV,MAAM,mBAAmB,CAAA"}
@@ -1,12 +1,11 @@
1
1
  // src/ellipsize.ts
2
- var ellipsize = (value, length = 2) => {
3
- const part1 = value.slice(0, length);
4
- const part2 = value.slice(value.length - length);
5
- return `${part1}...${part2}`;
6
- };
2
+ import {
3
+ ellipsize
4
+ } from "@xylabs/ellipsize";
7
5
 
8
6
  // src/EthAddress.ts
9
7
  import { assertEx } from "@xylabs/assert";
8
+ import { ellipsize as ellipsize2 } from "@xylabs/ellipsize";
10
9
  import { getAddress } from "ethers";
11
10
 
12
11
  // src/padHex.ts
@@ -62,7 +61,7 @@ var EthAddressWrapper = class _EthAddressWrapper {
62
61
  return this.toString().toLowerCase();
63
62
  }
64
63
  toShortString(length = 2) {
65
- return `0x${ellipsize(this.toHex(), length)}`;
64
+ return `0x${ellipsize2(this.toHex(), length)}`;
66
65
  }
67
66
  toString(checksum, chainId) {
68
67
  if (checksum) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ellipsize.ts", "../../src/EthAddress.ts", "../../src/padHex.ts"],
4
- "sourcesContent": ["/**\n * Truncates a string to show the first and last `length` characters separated by an ellipsis.\n * @param value - The string to ellipsize\n * @param length - Number of characters to keep at each end (default 2)\n * @returns The ellipsized string\n */\nexport const ellipsize = (value: string, length = 2) => {\n const part1 = value.slice(0, length)\n const part2 = value.slice(value.length - length)\n return `${part1}...${part2}`\n}\n", "import { assertEx } from '@xylabs/assert'\nimport { getAddress } from 'ethers'\n\nimport { ellipsize } from './ellipsize.ts'\nimport { padHex } from './padHex.ts'\n\n/** Type guard that checks if the given object is an instance of EthAddressWrapper. */\nexport const isEthAddressWrapper = (obj: { type: string }) => obj instanceof EthAddressWrapper\n\n/** Wrapper around an Ethereum address providing parsing, formatting, validation, and checksum support. */\nexport class EthAddressWrapper {\n private address: bigint\n\n protected constructor(address: bigint) {\n this.address = address\n }\n\n static fromString(value?: string, base = 16) {\n if (value !== undefined) {\n const bi = base === 16 ? BigInt(value.startsWith('0x') ? value : `0x${value}`) : BigInt(value)\n return new EthAddressWrapper(bi)\n }\n }\n\n static parse(value: unknown, base?: number) {\n if (typeof value === 'string') {\n return this.fromString(value, base)\n }\n }\n\n static validate(address: string) {\n return /^(0x)?[\\da-f]{40}$/i.test(address)\n }\n\n equals(address?: EthAddressWrapper | string | null): boolean {\n if (address !== null && address !== undefined) {\n const inAddress = typeof address === 'string' ? assertEx(EthAddressWrapper.fromString(address), () => 'Bad Address') : address\n return this.address === inAddress.address\n }\n return false\n }\n\n toBigNumber() {\n return this.address\n }\n\n toHex() {\n return padHex(this.address.toString(16), 20)\n }\n\n toJSON(): string {\n return `0x${this.toHex()}`\n }\n\n toLowerCaseString() {\n return this.toString().toLowerCase()\n }\n\n toShortString(length = 2) {\n return `0x${ellipsize(this.toHex(), length)}`\n }\n\n toString(checksum?: boolean, chainId?: string) {\n if (checksum) {\n const strippedAddress = this.toHex()\n return getAddress(chainId === undefined ? `0x${strippedAddress}` : `${chainId}0x${strippedAddress}`)\n }\n return `0x${this.toHex()}`\n }\n\n validate() {\n return EthAddressWrapper.validate(this.toString())\n }\n}\n", "const padHex = (hex: string, byteCount = 0) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n\n return result\n}\n\nexport { padHex }\n"],
5
- "mappings": ";AAMO,IAAM,YAAY,CAAC,OAAe,SAAS,MAAM;AACtD,QAAM,QAAQ,MAAM,MAAM,GAAG,MAAM;AACnC,QAAM,QAAQ,MAAM,MAAM,MAAM,SAAS,MAAM;AAC/C,SAAO,GAAG,KAAK,MAAM,KAAK;AAC5B;;;ACVA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;;;ACD3B,IAAM,SAAS,CAAC,KAAa,YAAY,MAAM;AAC7C,MAAI,SAAS;AACb,MAAI,IAAI,SAAS,MAAM,GAAG;AACxB,aAAS,IAAI,GAAG;AAAA,EAClB;AAEA,SAAO,OAAO,SAAS,IAAI,WAAW;AACpC,aAAS,KAAK,MAAM;AAAA,EACtB;AAEA,SAAO;AACT;;;ADJO,IAAM,sBAAsB,CAAC,QAA0B,eAAe;AAGtE,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EACrB;AAAA,EAEE,YAAY,SAAiB;AACrC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO,WAAW,OAAgB,OAAO,IAAI;AAC3C,QAAI,UAAU,QAAW;AACvB,YAAM,KAAK,SAAS,KAAK,OAAO,MAAM,WAAW,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK;AAC7F,aAAO,IAAI,mBAAkB,EAAE;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,OAAgB,MAAe;AAC1C,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,KAAK,WAAW,OAAO,IAAI;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,OAAO,SAAS,SAAiB;AAC/B,WAAO,sBAAsB,KAAK,OAAO;AAAA,EAC3C;AAAA,EAEA,OAAO,SAAsD;AAC3D,QAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,YAAM,YAAY,OAAO,YAAY,WAAW,SAAS,mBAAkB,WAAW,OAAO,GAAG,MAAM,aAAa,IAAI;AACvH,aAAO,KAAK,YAAY,UAAU;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ;AACN,WAAO,OAAO,KAAK,QAAQ,SAAS,EAAE,GAAG,EAAE;AAAA,EAC7C;AAAA,EAEA,SAAiB;AACf,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK,SAAS,EAAE,YAAY;AAAA,EACrC;AAAA,EAEA,cAAc,SAAS,GAAG;AACxB,WAAO,KAAK,UAAU,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,EAC7C;AAAA,EAEA,SAAS,UAAoB,SAAkB;AAC7C,QAAI,UAAU;AACZ,YAAM,kBAAkB,KAAK,MAAM;AACnC,aAAO,WAAW,YAAY,SAAY,KAAK,eAAe,KAAK,GAAG,OAAO,KAAK,eAAe,EAAE;AAAA,IACrG;AACA,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,WAAW;AACT,WAAO,mBAAkB,SAAS,KAAK,SAAS,CAAC;AAAA,EACnD;AACF;",
6
- "names": []
4
+ "sourcesContent": ["export {\n /** @deprecated import from @xylabs/sdk-js (or @xylabs/ellipsize) instead */\n ellipsize,\n} from '@xylabs/ellipsize'\n", "import { assertEx } from '@xylabs/assert'\nimport { ellipsize } from '@xylabs/ellipsize'\nimport { getAddress } from 'ethers'\n\nimport { padHex } from './padHex.ts'\n\n/** Type guard that checks if the given object is an instance of EthAddressWrapper. */\nexport const isEthAddressWrapper = (obj: { type: string }) => obj instanceof EthAddressWrapper\n\n/** Wrapper around an Ethereum address providing parsing, formatting, validation, and checksum support. */\nexport class EthAddressWrapper {\n private address: bigint\n\n protected constructor(address: bigint) {\n this.address = address\n }\n\n static fromString(value?: string, base = 16) {\n if (value !== undefined) {\n const bi = base === 16 ? BigInt(value.startsWith('0x') ? value : `0x${value}`) : BigInt(value)\n return new EthAddressWrapper(bi)\n }\n }\n\n static parse(value: unknown, base?: number) {\n if (typeof value === 'string') {\n return this.fromString(value, base)\n }\n }\n\n static validate(address: string) {\n return /^(0x)?[\\da-f]{40}$/i.test(address)\n }\n\n equals(address?: EthAddressWrapper | string | null): boolean {\n if (address !== null && address !== undefined) {\n const inAddress = typeof address === 'string' ? assertEx(EthAddressWrapper.fromString(address), () => 'Bad Address') : address\n return this.address === inAddress.address\n }\n return false\n }\n\n toBigNumber() {\n return this.address\n }\n\n toHex() {\n return padHex(this.address.toString(16), 20)\n }\n\n toJSON(): string {\n return `0x${this.toHex()}`\n }\n\n toLowerCaseString() {\n return this.toString().toLowerCase()\n }\n\n toShortString(length = 2) {\n return `0x${ellipsize(this.toHex(), length)}`\n }\n\n toString(checksum?: boolean, chainId?: string) {\n if (checksum) {\n const strippedAddress = this.toHex()\n return getAddress(chainId === undefined ? `0x${strippedAddress}` : `${chainId}0x${strippedAddress}`)\n }\n return `0x${this.toHex()}`\n }\n\n validate() {\n return EthAddressWrapper.validate(this.toString())\n }\n}\n", "const padHex = (hex: string, byteCount = 0) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n\n return result\n}\n\nexport { padHex }\n"],
5
+ "mappings": ";AAAA;AAAA,EAEE;AAAA,OACK;;;ACHP,SAAS,gBAAgB;AACzB,SAAS,aAAAA,kBAAiB;AAC1B,SAAS,kBAAkB;;;ACF3B,IAAM,SAAS,CAAC,KAAa,YAAY,MAAM;AAC7C,MAAI,SAAS;AACb,MAAI,IAAI,SAAS,MAAM,GAAG;AACxB,aAAS,IAAI,GAAG;AAAA,EAClB;AAEA,SAAO,OAAO,SAAS,IAAI,WAAW;AACpC,aAAS,KAAK,MAAM;AAAA,EACtB;AAEA,SAAO;AACT;;;ADJO,IAAM,sBAAsB,CAAC,QAA0B,eAAe;AAGtE,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EACrB;AAAA,EAEE,YAAY,SAAiB;AACrC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO,WAAW,OAAgB,OAAO,IAAI;AAC3C,QAAI,UAAU,QAAW;AACvB,YAAM,KAAK,SAAS,KAAK,OAAO,MAAM,WAAW,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK;AAC7F,aAAO,IAAI,mBAAkB,EAAE;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,OAAgB,MAAe;AAC1C,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,KAAK,WAAW,OAAO,IAAI;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,OAAO,SAAS,SAAiB;AAC/B,WAAO,sBAAsB,KAAK,OAAO;AAAA,EAC3C;AAAA,EAEA,OAAO,SAAsD;AAC3D,QAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,YAAM,YAAY,OAAO,YAAY,WAAW,SAAS,mBAAkB,WAAW,OAAO,GAAG,MAAM,aAAa,IAAI;AACvH,aAAO,KAAK,YAAY,UAAU;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQ;AACN,WAAO,OAAO,KAAK,QAAQ,SAAS,EAAE,GAAG,EAAE;AAAA,EAC7C;AAAA,EAEA,SAAiB;AACf,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK,SAAS,EAAE,YAAY;AAAA,EACrC;AAAA,EAEA,cAAc,SAAS,GAAG;AACxB,WAAO,KAAKC,WAAU,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,EAC7C;AAAA,EAEA,SAAS,UAAoB,SAAkB;AAC7C,QAAI,UAAU;AACZ,YAAM,kBAAkB,KAAK,MAAM;AACnC,aAAO,WAAW,YAAY,SAAY,KAAK,eAAe,KAAK,GAAG,OAAO,KAAK,eAAe,EAAE;AAAA,IACrG;AACA,WAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAC1B;AAAA,EAEA,WAAW;AACT,WAAO,mBAAkB,SAAS,KAAK,SAAS,CAAC;AAAA,EACnD;AACF;",
6
+ "names": ["ellipsize", "ellipsize"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/eth-address",
3
- "version": "6.0.10",
3
+ "version": "6.1.1",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "eth",
@@ -43,11 +43,12 @@
43
43
  "README.md"
44
44
  ],
45
45
  "dependencies": {
46
- "@xylabs/assert": "~6.0.10"
46
+ "@xylabs/assert": "~6.1.1",
47
+ "@xylabs/ellipsize": "~6.1.1"
47
48
  },
48
49
  "devDependencies": {
49
- "@xylabs/toolchain": "^8.1.16",
50
- "@xylabs/tsconfig": "^8.1.16",
50
+ "@xylabs/toolchain": "^8.1.20",
51
+ "@xylabs/tsconfig": "^8.1.20",
51
52
  "eslint": "^10.4.1",
52
53
  "ethers": "^6.16.0",
53
54
  "typescript": "^6.0.3",