node.d.ts 4.0 KB

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