string.ts 671 B

1234567891011121314151617181920212223242526272829
  1. import { toUtf8Bytes, toUtf8String } from "../../utils/utf8.js";
  2. import { Typed } from "../typed.js";
  3. import { DynamicBytesCoder } from "./bytes.js";
  4. import type { Reader, Writer } from "./abstract-coder.js";
  5. /**
  6. * @_ignore
  7. */
  8. export class StringCoder extends DynamicBytesCoder {
  9. constructor(localName: string) {
  10. super("string", localName);
  11. }
  12. defaultValue(): string {
  13. return "";
  14. }
  15. encode(writer: Writer, _value: string | Typed): number {
  16. return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, "string")));
  17. }
  18. decode(reader: Reader): any {
  19. return toUtf8String(super.decode(reader));
  20. }
  21. }