node.d.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /// <reference types="node" />
  2. /// <reference types="node" />
  3. import { Volume } from './volume';
  4. import { EventEmitter } from 'events';
  5. import Stats from './Stats';
  6. export declare const SEP = "/";
  7. /**
  8. * Node in a file system (like i-node, v-node).
  9. */
  10. export declare class Node extends EventEmitter {
  11. ino: number;
  12. uid: number;
  13. gid: number;
  14. atime: Date;
  15. mtime: Date;
  16. ctime: Date;
  17. buf: Buffer;
  18. perm: number;
  19. mode: number;
  20. nlink: number;
  21. symlink: string[];
  22. constructor(ino: number, perm?: number);
  23. getString(encoding?: string): string;
  24. setString(str: string): void;
  25. getBuffer(): Buffer;
  26. setBuffer(buf: Buffer): void;
  27. getSize(): number;
  28. setModeProperty(property: number): void;
  29. setIsFile(): void;
  30. setIsDirectory(): void;
  31. setIsSymlink(): void;
  32. isFile(): boolean;
  33. isDirectory(): boolean;
  34. isSymlink(): boolean;
  35. makeSymlink(steps: string[]): void;
  36. write(buf: Buffer, off?: number, len?: number, pos?: number): number;
  37. read(buf: Buffer | Uint8Array, off?: number, len?: number, pos?: number): number;
  38. truncate(len?: number): void;
  39. chmod(perm: number): void;
  40. chown(uid: number, gid: number): void;
  41. touch(): void;
  42. canRead(uid?: number, gid?: number): boolean;
  43. canWrite(uid?: number, gid?: number): boolean;
  44. del(): void;
  45. toJSON(): {
  46. ino: number;
  47. uid: number;
  48. gid: number;
  49. atime: number;
  50. mtime: number;
  51. ctime: number;
  52. perm: number;
  53. mode: number;
  54. nlink: number;
  55. symlink: string[];
  56. data: string;
  57. };
  58. }
  59. /**
  60. * Represents a hard link that points to an i-node `node`.
  61. */
  62. export declare class Link extends EventEmitter {
  63. vol: Volume;
  64. parent: Link;
  65. children: {
  66. [child: string]: Link | undefined;
  67. };
  68. private _steps;
  69. node: Node;
  70. ino: number;
  71. length: number;
  72. name: string;
  73. get steps(): string[];
  74. set steps(val: string[]);
  75. constructor(vol: Volume, parent: Link, name: string);
  76. setNode(node: Node): void;
  77. getNode(): Node;
  78. createChild(name: string, node?: Node): Link;
  79. setChild(name: string, link?: Link): Link;
  80. deleteChild(link: Link): void;
  81. getChild(name: string): Link | undefined;
  82. getPath(): string;
  83. getName(): string;
  84. /**
  85. * Walk the tree path and return the `Link` at that location, if any.
  86. * @param steps {string[]} Desired location.
  87. * @param stop {number} Max steps to go into.
  88. * @param i {number} Current step in the `steps` array.
  89. *
  90. * @return {Link|null}
  91. */
  92. walk(steps: string[], stop?: number, i?: number): Link | null;
  93. toJSON(): {
  94. steps: string[];
  95. ino: number;
  96. children: string[];
  97. };
  98. syncSteps(): void;
  99. }
  100. /**
  101. * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.
  102. */
  103. export declare class File {
  104. fd: number;
  105. /**
  106. * Hard link that this file opened.
  107. * @type {any}
  108. */
  109. link: Link;
  110. /**
  111. * Reference to a `Node`.
  112. * @type {Node}
  113. */
  114. node: Node;
  115. /**
  116. * A cursor/offset position in a file, where data will be written on write.
  117. * User can "seek" this position.
  118. */
  119. position: number;
  120. flags: number;
  121. /**
  122. * Open a Link-Node pair. `node` is provided separately as that might be a different node
  123. * rather the one `link` points to, because it might be a symlink.
  124. * @param link
  125. * @param node
  126. * @param flags
  127. * @param fd
  128. */
  129. constructor(link: Link, node: Node, flags: number, fd: number);
  130. getString(encoding?: string): string;
  131. setString(str: string): void;
  132. getBuffer(): Buffer;
  133. setBuffer(buf: Buffer): void;
  134. getSize(): number;
  135. truncate(len?: number): void;
  136. seekTo(position: number): void;
  137. stats(): Stats<number>;
  138. write(buf: Buffer, offset?: number, length?: number, position?: number): number;
  139. read(buf: Buffer | Uint8Array, offset?: number, length?: number, position?: number): number;
  140. chmod(perm: number): void;
  141. chown(uid: number, gid: number): void;
  142. }