nodejs.pas 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. {
  2. This file is part of the Pas2JS run time library.
  3. Copyright (c) 2017 by Mattias Gaertner
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. unit NodeJS;
  11. {$mode objfpc}
  12. {$ModeSwitch externalclass}
  13. interface
  14. uses
  15. JS, Types;
  16. type
  17. TNJSBuffer = class external name 'buffer'
  18. public
  19. class function alloc(Size: NativeInt): TJSArrayBuffer;
  20. class function alloc(Size: NativeInt; Fill: JSValue): TJSArrayBuffer;
  21. class function alloc(Size: NativeInt; Fill: JSValue; Encoding: String): TJSArrayBuffer;
  22. class function allocUnsafe(Size: NativeInt): TJSArrayBuffer;
  23. class function from(const Values: TJSValueDynArray): TJSArrayBuffer;
  24. class function from(s: String): TJSArrayBuffer;
  25. class function from(s, Encoding: String): TJSArrayBuffer;
  26. class function from(Buffer: TJSArrayBuffer): TJSArrayBuffer;
  27. class function from(Buffer: TJSArrayBuffer; Offset: NativeInt): TJSArrayBuffer;
  28. class function from(Buffer: TJSArrayBuffer; Offset, Count: NativeInt): TJSArrayBuffer;
  29. end;
  30. TNJSProcessConfig = TJSObject;
  31. TNJSProcessCPUUsage = TJSObject;
  32. { TJSProcess }
  33. TNJSProcess = class external name 'process'
  34. private
  35. class var FVersions: TJSObject external name 'versions';
  36. class var FVersion: String external name 'version';
  37. class var FRelease: TJSObject external name 'release';
  38. class var FPlatform: String external name 'platform';
  39. class var FPid: NativeInt external name 'pid';
  40. class var FExecPath: String external name 'execPath';
  41. class var FExecArgv: TStringDynArray external name 'execArgv';
  42. class var FEnv: TJSObject external name 'env';
  43. class var FConfig: TNJSProcessConfig external name 'config';
  44. class var FArch: string external name 'arch';
  45. class var FArgv: TStringDynArray external name 'argv';
  46. class function Getumask: NativeInt external name 'umask';
  47. class procedure Setumask(const AValue: NativeInt) external name 'umask';
  48. public
  49. class procedure abort;
  50. class property arch: string read FArch;
  51. class property argv: TStringDynArray read FArgv;
  52. // ToDo assert
  53. // ToDo binding
  54. class procedure chdir(Directory: String);
  55. class property config: TNJSProcessConfig read FConfig;
  56. class function cpuUsage: TNJSProcessCPUUsage;
  57. class function cpuUsage(const previousValue: TNJSProcessCPUUsage): TNJSProcessCPUUsage;
  58. class function cwd: String;
  59. class procedure emitWarning(warning: String);
  60. class procedure emitWarning(warning, name: String);
  61. //class procedure emitWarning(warning, name: String; ctor: ?);
  62. class property env: TJSObject read FEnv;
  63. class property execArgv: TStringDynArray read FExecArgv;
  64. class property execPath: String read FExecPath;
  65. class procedure exit(code: NativeInt = 0);
  66. class var exitCode: NativeInt;
  67. class function getegid: NativeInt; // only POSIX platforms
  68. class function geteuid: NativeInt; // only POSIX platforms
  69. class function getgid: JSValue; // only POSIX platforms
  70. class function getgroups: TJSValueDynArray; // only POSIX platforms
  71. class function getuid: NativeInt; // only POSIX platforms
  72. // ToDo hrtime([time])
  73. // ToDo: initgroups(user, extra_group)
  74. class procedure kill(pid: NativeInt);
  75. class procedure kill(pid: NativeInt; signal: String);
  76. // ToDo: mainModule
  77. class function memoryUsage: TJSObject; // ToDo
  78. // ToDo: nextTick(callback[, ...args])
  79. // ToDo: openStdin
  80. class property pid: NativeInt read FPid;
  81. class property platform: String read FPlatform;
  82. class property release: TJSObject read FRelease;
  83. // ToDo: send(message[, sendHandle[, options]][, callback])
  84. class procedure setegid(const id: JSValue);
  85. class procedure seteuid(const id: JSValue);
  86. class procedure setgid(const id: JSValue);
  87. class procedure setgroups(const groups: TJSValueDynArray);
  88. class procedure setuid(const id: JSValue);
  89. // ToDo: stderr
  90. // ToDo: stdin
  91. // ToDo: stdout
  92. class var title: String;
  93. class property umask: NativeInt read Getumask write Setumask;
  94. class function uptime: NativeInt;
  95. class property version: String read FVersion;
  96. class property versions: TJSObject read FVersions;
  97. end;
  98. TNJSConsole = class external name 'Console'
  99. Public
  100. procedure assert(anAssertion : string; Obj1 : JSValue); varargs;
  101. procedure dir(Obj1 : JSValue);
  102. procedure dir(Obj1 : JSValue; const options: TJSObject);
  103. procedure error(Obj1 : JSValue); varargs;
  104. procedure info(Obj1 : JSValue); varargs;
  105. procedure log(Obj1 : JSValue); varargs;
  106. procedure time(aName : string);
  107. procedure timeEnd(aName : string);
  108. procedure trace;
  109. procedure warn(Obj1 : JSValue); varargs;
  110. end;
  111. function Require(ModuleName: String): JSValue; external name 'require';
  112. var
  113. Console: TNJSConsole external name 'console';
  114. implementation
  115. end.