primordials.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. 'use strict'
  2. /*
  3. This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at
  4. https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js
  5. Don't try to replace with the original file and keep it up to date with the upstream file.
  6. */
  7. // This is a simplified version of AggregateError
  8. class AggregateError extends Error {
  9. constructor(errors) {
  10. if (!Array.isArray(errors)) {
  11. throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)
  12. }
  13. let message = ''
  14. for (let i = 0; i < errors.length; i++) {
  15. message += ` ${errors[i].stack}\n`
  16. }
  17. super(message)
  18. this.name = 'AggregateError'
  19. this.errors = errors
  20. }
  21. }
  22. module.exports = {
  23. AggregateError,
  24. ArrayIsArray(self) {
  25. return Array.isArray(self)
  26. },
  27. ArrayPrototypeIncludes(self, el) {
  28. return self.includes(el)
  29. },
  30. ArrayPrototypeIndexOf(self, el) {
  31. return self.indexOf(el)
  32. },
  33. ArrayPrototypeJoin(self, sep) {
  34. return self.join(sep)
  35. },
  36. ArrayPrototypeMap(self, fn) {
  37. return self.map(fn)
  38. },
  39. ArrayPrototypePop(self, el) {
  40. return self.pop(el)
  41. },
  42. ArrayPrototypePush(self, el) {
  43. return self.push(el)
  44. },
  45. ArrayPrototypeSlice(self, start, end) {
  46. return self.slice(start, end)
  47. },
  48. Error,
  49. FunctionPrototypeCall(fn, thisArgs, ...args) {
  50. return fn.call(thisArgs, ...args)
  51. },
  52. FunctionPrototypeSymbolHasInstance(self, instance) {
  53. return Function.prototype[Symbol.hasInstance].call(self, instance)
  54. },
  55. MathFloor: Math.floor,
  56. Number,
  57. NumberIsInteger: Number.isInteger,
  58. NumberIsNaN: Number.isNaN,
  59. NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,
  60. NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,
  61. NumberParseInt: Number.parseInt,
  62. ObjectDefineProperties(self, props) {
  63. return Object.defineProperties(self, props)
  64. },
  65. ObjectDefineProperty(self, name, prop) {
  66. return Object.defineProperty(self, name, prop)
  67. },
  68. ObjectGetOwnPropertyDescriptor(self, name) {
  69. return Object.getOwnPropertyDescriptor(self, name)
  70. },
  71. ObjectKeys(obj) {
  72. return Object.keys(obj)
  73. },
  74. ObjectSetPrototypeOf(target, proto) {
  75. return Object.setPrototypeOf(target, proto)
  76. },
  77. Promise,
  78. PromisePrototypeCatch(self, fn) {
  79. return self.catch(fn)
  80. },
  81. PromisePrototypeThen(self, thenFn, catchFn) {
  82. return self.then(thenFn, catchFn)
  83. },
  84. PromiseReject(err) {
  85. return Promise.reject(err)
  86. },
  87. PromiseResolve(val) {
  88. return Promise.resolve(val)
  89. },
  90. ReflectApply: Reflect.apply,
  91. RegExpPrototypeTest(self, value) {
  92. return self.test(value)
  93. },
  94. SafeSet: Set,
  95. String,
  96. StringPrototypeSlice(self, start, end) {
  97. return self.slice(start, end)
  98. },
  99. StringPrototypeToLowerCase(self) {
  100. return self.toLowerCase()
  101. },
  102. StringPrototypeToUpperCase(self) {
  103. return self.toUpperCase()
  104. },
  105. StringPrototypeTrim(self) {
  106. return self.trim()
  107. },
  108. Symbol,
  109. SymbolFor: Symbol.for,
  110. SymbolAsyncIterator: Symbol.asyncIterator,
  111. SymbolHasInstance: Symbol.hasInstance,
  112. SymbolIterator: Symbol.iterator,
  113. SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),
  114. SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),
  115. TypedArrayPrototypeSet(self, buf, len) {
  116. return self.set(buf, len)
  117. },
  118. Boolean,
  119. Uint8Array
  120. }