@serveryyswys/node.operit 0.0.0-stage → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/BUILTINS.json +233 -0
  2. package/DESIGN.md +513 -0
  3. package/LICENSE +674 -0
  4. package/README.md +301 -2
  5. package/dist/assert/strict.d.ts +2 -0
  6. package/dist/assert/strict.js +7 -0
  7. package/dist/assert.d.ts +3 -0
  8. package/dist/assert.js +483 -0
  9. package/dist/buffer.d.ts +60 -0
  10. package/dist/buffer.js +524 -0
  11. package/dist/child_process.d.ts +56 -0
  12. package/dist/child_process.js +371 -0
  13. package/dist/constants.d.ts +2 -0
  14. package/dist/constants.js +19 -0
  15. package/dist/crypto.d.ts +76 -0
  16. package/dist/crypto.js +312 -0
  17. package/dist/dns/promises.d.ts +34 -0
  18. package/dist/dns/promises.js +190 -0
  19. package/dist/dns.d.ts +88 -0
  20. package/dist/dns.js +259 -0
  21. package/dist/events.d.ts +40 -0
  22. package/dist/events.js +237 -0
  23. package/dist/fs/promises.d.ts +159 -0
  24. package/dist/fs/promises.js +129 -0
  25. package/dist/fs.d.ts +221 -0
  26. package/dist/fs.js +944 -0
  27. package/dist/http.d.ts +92 -0
  28. package/dist/http.js +319 -0
  29. package/dist/https.d.ts +296 -0
  30. package/dist/https.js +50 -0
  31. package/dist/index.d.ts +2422 -0
  32. package/dist/index.js +57 -0
  33. package/dist/lib/bridge.d.ts +60 -0
  34. package/dist/lib/bridge.js +205 -0
  35. package/dist/lib/bytes.d.ts +20 -0
  36. package/dist/lib/bytes.js +239 -0
  37. package/dist/lib/child-process-types.d.ts +45 -0
  38. package/dist/lib/child-process-types.js +2 -0
  39. package/dist/lib/cwd.d.ts +2 -0
  40. package/dist/lib/cwd.js +32 -0
  41. package/dist/lib/deep-equal.d.ts +3 -0
  42. package/dist/lib/deep-equal.js +223 -0
  43. package/dist/lib/deflate.d.ts +2 -0
  44. package/dist/lib/deflate.js +234 -0
  45. package/dist/lib/dns-driver.d.ts +14 -0
  46. package/dist/lib/dns-driver.js +85 -0
  47. package/dist/lib/dns-types.d.ts +22 -0
  48. package/dist/lib/dns-types.js +2 -0
  49. package/dist/lib/errors.d.ts +48 -0
  50. package/dist/lib/errors.js +424 -0
  51. package/dist/lib/fs-driver.d.ts +70 -0
  52. package/dist/lib/fs-driver.js +364 -0
  53. package/dist/lib/fs-env.d.ts +30 -0
  54. package/dist/lib/fs-env.js +157 -0
  55. package/dist/lib/fs-types.d.ts +19 -0
  56. package/dist/lib/fs-types.js +2 -0
  57. package/dist/lib/hashes.d.ts +27 -0
  58. package/dist/lib/hashes.js +432 -0
  59. package/dist/lib/http-driver.d.ts +30 -0
  60. package/dist/lib/http-driver.js +72 -0
  61. package/dist/lib/http-types.d.ts +18 -0
  62. package/dist/lib/http-types.js +2 -0
  63. package/dist/lib/inflate.d.ts +6 -0
  64. package/dist/lib/inflate.js +284 -0
  65. package/dist/lib/path-types.d.ts +37 -0
  66. package/dist/lib/path-types.js +2 -0
  67. package/dist/lib/paths.d.ts +8 -0
  68. package/dist/lib/paths.js +106 -0
  69. package/dist/lib/perf-hooks-types.d.ts +18 -0
  70. package/dist/lib/perf-hooks-types.js +2 -0
  71. package/dist/lib/process-driver.d.ts +31 -0
  72. package/dist/lib/process-driver.js +102 -0
  73. package/dist/lib/punycode.d.ts +8 -0
  74. package/dist/lib/punycode.js +179 -0
  75. package/dist/lib/stream-types.d.ts +29 -0
  76. package/dist/lib/stream-types.js +2 -0
  77. package/dist/lib/timers-types.d.ts +18 -0
  78. package/dist/lib/timers-types.js +2 -0
  79. package/dist/lib/url-search-params.d.ts +26 -0
  80. package/dist/lib/url-search-params.js +281 -0
  81. package/dist/lib/url-types.d.ts +44 -0
  82. package/dist/lib/url-types.js +2 -0
  83. package/dist/lib/url-whatwg.d.ts +78 -0
  84. package/dist/lib/url-whatwg.js +857 -0
  85. package/dist/lib/zlib-types.d.ts +12 -0
  86. package/dist/lib/zlib-types.js +2 -0
  87. package/dist/module.d.ts +8 -0
  88. package/dist/module.js +72 -0
  89. package/dist/os.d.ts +80 -0
  90. package/dist/os.js +247 -0
  91. package/dist/path/posix.d.ts +2 -0
  92. package/dist/path/posix.js +7 -0
  93. package/dist/path/win32.d.ts +2 -0
  94. package/dist/path/win32.js +10 -0
  95. package/dist/path.d.ts +3 -0
  96. package/dist/path.js +1222 -0
  97. package/dist/perf_hooks.d.ts +36 -0
  98. package/dist/perf_hooks.js +144 -0
  99. package/dist/process.d.ts +69 -0
  100. package/dist/process.js +230 -0
  101. package/dist/querystring.d.ts +15 -0
  102. package/dist/querystring.js +209 -0
  103. package/dist/stream/promises.d.ts +5 -0
  104. package/dist/stream/promises.js +10 -0
  105. package/dist/stream.d.ts +84 -0
  106. package/dist/stream.js +875 -0
  107. package/dist/string_decoder.d.ts +15 -0
  108. package/dist/string_decoder.js +237 -0
  109. package/dist/timers/promises.d.ts +19 -0
  110. package/dist/timers/promises.js +74 -0
  111. package/dist/timers.d.ts +21 -0
  112. package/dist/timers.js +41 -0
  113. package/dist/tty.d.ts +9 -0
  114. package/dist/tty.js +25 -0
  115. package/dist/unsupported.d.ts +12 -0
  116. package/dist/unsupported.js +17 -0
  117. package/dist/url.d.ts +28 -0
  118. package/dist/url.js +486 -0
  119. package/dist/util.d.ts +74 -0
  120. package/dist/util.js +515 -0
  121. package/dist/zlib.d.ts +88 -0
  122. package/dist/zlib.js +371 -0
  123. package/package.json +29 -4
package/dist/assert.js ADDED
@@ -0,0 +1,483 @@
1
+ 'use strict';
2
+ /**
3
+ * Node assert 模块的移植(含 assert/strict)。
4
+ *
5
+ * 消息格式按 Node 实测对齐;差异输出用的是"公共前后缀 diff",
6
+ * 对"只有个别属性不同"这种最常见的情形与 Node 逐字一致;
7
+ * 多段落交错差异时 Node 用的是 Myers diff,我们的对齐方式可能不同。
8
+ *
9
+ * 已知差异(写在 BUILTINS.json 里):
10
+ * assert.ok / assert(value) 失败时 Node 会把调用处的源码表达式附在消息里
11
+ * ("The expression evaluated to a falsy value:\n\n assert.ok(false)")。
12
+ * 取源码需要读栈里指向的文件并解析那一行,QuickJS 上不可靠,
13
+ * 所以这里只给出 "The expression evaluated to a falsy value",不带源码行。
14
+ */
15
+ const deep_equal_1 = require("./lib/deep-equal");
16
+ const utilModule = require("./util");
17
+ function inspect(value) {
18
+ // Node 生成断言消息时用的是多行排版(compact: false),
19
+ // 只有多行才能和它的差异块逐字对齐。
20
+ return utilModule.inspect(value, { depth: 4, compact: false });
21
+ }
22
+ function isObjectLike(value) {
23
+ return value !== null && (typeof value === 'object' || typeof value === 'function');
24
+ }
25
+ /** 公共前后缀 diff:与 Node 在"单点差异"下的输出一致。 */
26
+ function diffBlock(actual, expected) {
27
+ const left = actual.split('\n');
28
+ const right = expected.split('\n');
29
+ let prefix = 0;
30
+ while (prefix < left.length && prefix < right.length && left[prefix] === right[prefix]) {
31
+ prefix += 1;
32
+ }
33
+ let suffix = 0;
34
+ while (suffix < left.length - prefix &&
35
+ suffix < right.length - prefix &&
36
+ left[left.length - 1 - suffix] === right[right.length - 1 - suffix]) {
37
+ suffix += 1;
38
+ }
39
+ const lines = [];
40
+ for (let i = 0; i < prefix; i += 1) {
41
+ lines.push(' ' + left[i]);
42
+ }
43
+ for (let i = prefix; i < left.length - suffix; i += 1) {
44
+ lines.push('+ ' + left[i]);
45
+ }
46
+ for (let i = prefix; i < right.length - suffix; i += 1) {
47
+ lines.push('- ' + right[i]);
48
+ }
49
+ for (let i = left.length - suffix; i < left.length; i += 1) {
50
+ lines.push(' ' + left[i]);
51
+ }
52
+ return lines.join('\n') + '\n';
53
+ }
54
+ class AssertionError extends Error {
55
+ constructor(options) {
56
+ super(options.message === undefined ? '' : String(options.message));
57
+ this.code = 'ERR_ASSERTION';
58
+ this.name = 'AssertionError';
59
+ this.actual = options.actual;
60
+ this.expected = options.expected;
61
+ this.operator = options.operator === undefined ? '' : options.operator;
62
+ this.generatedMessage = options.generatedMessage === true;
63
+ const capture = Error.captureStackTrace;
64
+ if (typeof capture === 'function') {
65
+ capture(this, options.stackStartFn === undefined ? AssertionError : options.stackStartFn);
66
+ }
67
+ }
68
+ }
69
+ function generatedMessage(operator, actual, expected) {
70
+ switch (operator) {
71
+ case 'strictEqual':
72
+ if (isObjectLike(actual) || isObjectLike(expected)) {
73
+ return 'Expected "actual" to be reference-equal to "expected":\n+ actual - expected\n\n' +
74
+ diffBlock(inspect(actual), inspect(expected));
75
+ }
76
+ return 'Expected values to be strictly equal:\n\n' + inspect(actual) + ' !== ' + inspect(expected) + '\n';
77
+ case 'notStrictEqual':
78
+ return 'Expected "actual" to be strictly unequal to: ' + inspect(expected);
79
+ case '==':
80
+ return inspect(actual) + ' == ' + inspect(expected);
81
+ case '!=':
82
+ return inspect(actual) + ' != ' + inspect(expected);
83
+ case 'deepStrictEqual':
84
+ return 'Expected values to be strictly deep-equal:\n+ actual - expected\n\n' +
85
+ diffBlock(inspect(actual), inspect(expected));
86
+ case 'notDeepStrictEqual':
87
+ return 'Expected "actual" not to be strictly deep-equal to:\n\n' + inspect(expected) + '\n';
88
+ case 'deepEqual':
89
+ return 'Expected values to be loosely deep-equal:\n\n' + inspect(actual) +
90
+ '\n\nshould loosely deep-equal\n\n' + inspect(expected);
91
+ case 'notDeepEqual':
92
+ // 注意:这一条 Node 末尾没有换行,与 notDeepStrictEqual 不一致
93
+ return 'Expected "actual" not to be loosely deep-equal to:\n\n' + inspect(expected);
94
+ case 'fail':
95
+ return 'Failed';
96
+ case 'match':
97
+ return 'The input did not match the regular expression ' + inspect(expected) +
98
+ '. Input:\n\n' + inspect(actual) + '\n';
99
+ case 'doesNotMatch':
100
+ return 'The input was expected to not match the regular expression ' + inspect(expected) +
101
+ '. Input:\n\n' + inspect(actual) + '\n';
102
+ default:
103
+ return inspect(actual) + ' ' + operator + ' ' + inspect(expected);
104
+ }
105
+ }
106
+ function createAssertionError(options) {
107
+ const hasCustomMessage = options.message !== undefined && options.message !== null;
108
+ if (!hasCustomMessage) {
109
+ options.message = generatedMessage(options.operator === undefined ? '' : options.operator, options.actual, options.expected);
110
+ options.generatedMessage = true;
111
+ }
112
+ return new AssertionError(options);
113
+ }
114
+ /**
115
+ * fail 的参数语义按 Node 的"看参数个数"规则:
116
+ * fail(message) —— 单参时第一个参数是消息
117
+ * fail(actual, expected, message, operator, stackStartFn)
118
+ */
119
+ function fail(...args) {
120
+ if (args.length <= 1) {
121
+ const only = args[0];
122
+ if (only instanceof Error) {
123
+ // Node 遇到 Error 会把原错误直接抛出去,不包成 AssertionError
124
+ throw only;
125
+ }
126
+ if (only === undefined) {
127
+ throw new AssertionError({
128
+ message: 'Failed',
129
+ operator: 'fail',
130
+ generatedMessage: true,
131
+ stackStartFn: fail
132
+ });
133
+ }
134
+ throw new AssertionError({
135
+ message: String(only),
136
+ operator: 'fail',
137
+ generatedMessage: false,
138
+ stackStartFn: fail
139
+ });
140
+ }
141
+ const actual = args[0];
142
+ const expected = args[1];
143
+ const message = args[2];
144
+ const operator = args[3] === undefined ? 'fail' : String(args[3]);
145
+ if (message instanceof Error) {
146
+ throw message;
147
+ }
148
+ throw createAssertionError({
149
+ message: message,
150
+ actual: actual,
151
+ expected: expected,
152
+ operator: operator,
153
+ stackStartFn: args[4] === undefined ? fail : args[4]
154
+ });
155
+ }
156
+ function assert(value, message) {
157
+ if (value) {
158
+ return;
159
+ }
160
+ if (message !== undefined && message !== null) {
161
+ throw new AssertionError({
162
+ message: String(message),
163
+ actual: value,
164
+ expected: true,
165
+ operator: '==',
166
+ generatedMessage: false,
167
+ stackStartFn: assert
168
+ });
169
+ }
170
+ // 缺了 Node 会附上的调用处源码行(见文件头说明)
171
+ throw new AssertionError({
172
+ message: 'The expression evaluated to a falsy value\n',
173
+ actual: value,
174
+ expected: true,
175
+ operator: '==',
176
+ generatedMessage: true,
177
+ stackStartFn: assert
178
+ });
179
+ }
180
+ function ok(value, message) {
181
+ assert(value, message);
182
+ }
183
+ function equal(actual, expected, message) {
184
+ // eslint-disable-next-line eqeqeq
185
+ if (!(actual == expected)) {
186
+ fail(actual, expected, message, '==', equal);
187
+ }
188
+ }
189
+ function notEqual(actual, expected, message) {
190
+ // 相等才失败 —— 这里曾经把条件写反过
191
+ // eslint-disable-next-line eqeqeq
192
+ if (actual == expected) {
193
+ fail(actual, expected, message, '!=', notEqual);
194
+ }
195
+ }
196
+ function strictEqual(actual, expected, message) {
197
+ if (!Object.is(actual, expected)) {
198
+ fail(actual, expected, message, 'strictEqual', strictEqual);
199
+ }
200
+ }
201
+ function notStrictEqual(actual, expected, message) {
202
+ if (Object.is(actual, expected)) {
203
+ fail(actual, expected, message, 'notStrictEqual', notStrictEqual);
204
+ }
205
+ }
206
+ function deepStrictEqual(actual, expected, message) {
207
+ if (!(0, deep_equal_1.isDeepStrictEqual)(actual, expected)) {
208
+ fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual);
209
+ }
210
+ }
211
+ function notDeepStrictEqual(actual, expected, message) {
212
+ if ((0, deep_equal_1.isDeepStrictEqual)(actual, expected)) {
213
+ fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
214
+ }
215
+ }
216
+ function deepEqual(actual, expected, message) {
217
+ if (!(0, deep_equal_1.isDeepEqual)(actual, expected)) {
218
+ fail(actual, expected, message, 'deepEqual', deepEqual);
219
+ }
220
+ }
221
+ function notDeepEqual(actual, expected, message) {
222
+ if ((0, deep_equal_1.isDeepEqual)(actual, expected)) {
223
+ fail(actual, expected, message, 'notDeepEqual', notDeepEqual);
224
+ }
225
+ }
226
+ function isConstructorLike(value) {
227
+ if (typeof value !== 'function') {
228
+ return false;
229
+ }
230
+ const text = Function.prototype.toString.call(value);
231
+ return /^class\s/.test(text) || /^function\s+[A-Z]/.test(text) || value.prototype !== undefined;
232
+ }
233
+ function matchesExpectation(error, expected) {
234
+ if (expected === undefined || expected === null) {
235
+ return { ok: true };
236
+ }
237
+ if (expected instanceof RegExp) {
238
+ const whole = String(error);
239
+ if (!expected.test(whole)) {
240
+ return {
241
+ ok: false,
242
+ message: 'The input did not match the regular expression ' + String(expected) +
243
+ '. Input:\n\n' + inspect(whole) + '\n'
244
+ };
245
+ }
246
+ return { ok: true };
247
+ }
248
+ if (typeof expected === 'function') {
249
+ if (isConstructorLike(expected)) {
250
+ if (!(error instanceof expected)) {
251
+ const actualName = error instanceof Error ? error.name : typeof error;
252
+ const expectedName = expected.name;
253
+ const detail = error instanceof Error ? '\n\nError message:\n\n' + error.message : '';
254
+ return {
255
+ ok: false,
256
+ message: 'The error is expected to be an instance of "' + String(expectedName) +
257
+ '". Received "' + String(actualName) + '"' + detail
258
+ };
259
+ }
260
+ return { ok: true };
261
+ }
262
+ const verdict = expected(error);
263
+ if (!verdict) {
264
+ return { ok: false, message: 'The error failed the validation function' };
265
+ }
266
+ return { ok: true };
267
+ }
268
+ if (isObjectLike(expected)) {
269
+ if (expected instanceof Error) {
270
+ if (!(0, deep_equal_1.isDeepStrictEqual)(error, expected)) {
271
+ return { ok: false, message: 'The error mismatched the expected error' };
272
+ }
273
+ return { ok: true };
274
+ }
275
+ const wanted = expected;
276
+ const keys = Object.keys(wanted);
277
+ for (let i = 0; i < keys.length; i += 1) {
278
+ const key = keys[i];
279
+ const actualValue = error[key];
280
+ if (wanted[key] instanceof RegExp) {
281
+ if (!wanted[key].test(String(actualValue))) {
282
+ return { ok: false, message: 'The "' + key + '" property does not match the expected pattern' };
283
+ }
284
+ }
285
+ else if (!(0, deep_equal_1.isDeepStrictEqual)(actualValue, wanted[key])) {
286
+ return { ok: false, message: 'The "' + key + '" property does not match the expected value' };
287
+ }
288
+ }
289
+ return { ok: true };
290
+ }
291
+ return { ok: true };
292
+ }
293
+ function throws(fn, expected, message) {
294
+ if (typeof fn !== 'function') {
295
+ throw new TypeError('The "fn" argument must be of type function.');
296
+ }
297
+ let caught = undefined;
298
+ let threw = false;
299
+ try {
300
+ fn();
301
+ }
302
+ catch (failure) {
303
+ caught = failure;
304
+ threw = true;
305
+ }
306
+ if (!threw) {
307
+ throw new AssertionError({
308
+ actual: undefined,
309
+ expected: undefined,
310
+ operator: 'throws',
311
+ message: message === undefined ? 'Missing expected exception.' : String(message),
312
+ generatedMessage: message === undefined ? false : false,
313
+ stackStartFn: throws
314
+ });
315
+ }
316
+ const verdict = matchesExpectation(caught, expected);
317
+ if (!verdict.ok) {
318
+ // 用匹配失败时算出的具体原因;消息是我们生成的,所以 generatedMessage 为 true
319
+ throw new AssertionError({
320
+ message: message === undefined ? verdict.message : String(message),
321
+ actual: caught,
322
+ expected: expected,
323
+ operator: 'throws',
324
+ generatedMessage: message === undefined,
325
+ stackStartFn: throws
326
+ });
327
+ }
328
+ }
329
+ function doesNotThrow(fn, expected, message) {
330
+ if (typeof fn !== 'function') {
331
+ throw new TypeError('The "fn" argument must be of type function.');
332
+ }
333
+ try {
334
+ fn();
335
+ }
336
+ catch (failure) {
337
+ const verdict = matchesExpectation(failure, expected);
338
+ if (verdict.ok) {
339
+ const detail = failure instanceof Error ? failure.message : inspect(failure);
340
+ throw new AssertionError({
341
+ actual: failure,
342
+ expected: expected,
343
+ operator: 'doesNotThrow',
344
+ message: message === undefined
345
+ ? 'Got unwanted exception.\nActual message: "' + detail + '"'
346
+ : String(message),
347
+ generatedMessage: false,
348
+ stackStartFn: doesNotThrow
349
+ });
350
+ }
351
+ }
352
+ }
353
+ async function rejects(fn, expected, message) {
354
+ let caught = undefined;
355
+ let threw = false;
356
+ try {
357
+ await (typeof fn === 'function' ? fn() : fn);
358
+ }
359
+ catch (failure) {
360
+ caught = failure;
361
+ threw = true;
362
+ }
363
+ if (!threw) {
364
+ throw new AssertionError({
365
+ actual: undefined,
366
+ expected: undefined,
367
+ operator: 'rejects',
368
+ message: message === undefined ? 'Missing expected rejection.' : String(message),
369
+ generatedMessage: false,
370
+ stackStartFn: rejects
371
+ });
372
+ }
373
+ const verdict = matchesExpectation(caught, expected);
374
+ if (!verdict.ok) {
375
+ throw new AssertionError({
376
+ message: message === undefined ? verdict.message : String(message),
377
+ actual: caught,
378
+ expected: expected,
379
+ operator: 'rejects',
380
+ generatedMessage: message === undefined,
381
+ stackStartFn: rejects
382
+ });
383
+ }
384
+ }
385
+ async function doesNotReject(fn, expected, message) {
386
+ try {
387
+ await (typeof fn === 'function' ? fn() : fn);
388
+ }
389
+ catch (failure) {
390
+ const verdict = matchesExpectation(failure, expected);
391
+ if (verdict.ok) {
392
+ const detail = failure instanceof Error ? failure.message : inspect(failure);
393
+ throw new AssertionError({
394
+ actual: failure,
395
+ expected: expected,
396
+ operator: 'doesNotReject',
397
+ message: message === undefined
398
+ ? 'Got unwanted rejection.\nActual message: "' + detail + '"'
399
+ : String(message),
400
+ generatedMessage: false,
401
+ stackStartFn: doesNotReject
402
+ });
403
+ }
404
+ }
405
+ }
406
+ function ifError(value) {
407
+ if (value !== null && value !== undefined) {
408
+ const detail = value instanceof Error
409
+ ? value.message
410
+ : inspect(value);
411
+ throw new AssertionError({
412
+ actual: value,
413
+ expected: null,
414
+ operator: 'ifError',
415
+ message: 'ifError got unwanted exception: ' + detail,
416
+ generatedMessage: false,
417
+ stackStartFn: ifError
418
+ });
419
+ }
420
+ }
421
+ function match(value, regExp, message) {
422
+ if (!(regExp instanceof RegExp)) {
423
+ throw new TypeError('The "regExp" argument must be a regular expression.');
424
+ }
425
+ regExp.lastIndex = 0;
426
+ if (!regExp.test(String(value))) {
427
+ fail(value, regExp, message, 'match', match);
428
+ }
429
+ }
430
+ function doesNotMatch(value, regExp, message) {
431
+ if (!(regExp instanceof RegExp)) {
432
+ throw new TypeError('The "regExp" argument must be a regular expression.');
433
+ }
434
+ regExp.lastIndex = 0;
435
+ if (regExp.test(String(value))) {
436
+ fail(value, regExp, message, 'doesNotMatch', doesNotMatch);
437
+ }
438
+ }
439
+ const exported = assert;
440
+ exported.ok = ok;
441
+ exported.equal = equal;
442
+ exported.notEqual = notEqual;
443
+ exported.strictEqual = strictEqual;
444
+ exported.notStrictEqual = notStrictEqual;
445
+ exported.deepEqual = deepEqual;
446
+ exported.notDeepEqual = notDeepEqual;
447
+ exported.deepStrictEqual = deepStrictEqual;
448
+ exported.notDeepStrictEqual = notDeepStrictEqual;
449
+ exported.throws = throws;
450
+ exported.doesNotThrow = doesNotThrow;
451
+ exported.rejects = rejects;
452
+ exported.doesNotReject = doesNotReject;
453
+ exported.ifError = ifError;
454
+ exported.match = match;
455
+ exported.doesNotMatch = doesNotMatch;
456
+ exported.fail = fail;
457
+ exported.AssertionError = AssertionError;
458
+ /** assert/strict:equal 等同 strictEqual,deepEqual 等同 deepStrictEqual。 */
459
+ function strictAssert(value, message) {
460
+ assert(value, message);
461
+ }
462
+ const strict = strictAssert;
463
+ strict.ok = ok;
464
+ strict.equal = strictEqual;
465
+ strict.notEqual = notStrictEqual;
466
+ strict.strictEqual = strictEqual;
467
+ strict.notStrictEqual = notStrictEqual;
468
+ strict.deepEqual = deepStrictEqual;
469
+ strict.notDeepEqual = notDeepStrictEqual;
470
+ strict.deepStrictEqual = deepStrictEqual;
471
+ strict.notDeepStrictEqual = notDeepStrictEqual;
472
+ strict.throws = throws;
473
+ strict.doesNotThrow = doesNotThrow;
474
+ strict.rejects = rejects;
475
+ strict.doesNotReject = doesNotReject;
476
+ strict.ifError = ifError;
477
+ strict.match = match;
478
+ strict.doesNotMatch = doesNotMatch;
479
+ strict.fail = fail;
480
+ strict.AssertionError = AssertionError;
481
+ strict.strict = strict;
482
+ exported.strict = strict;
483
+ module.exports = exported;
@@ -0,0 +1,60 @@
1
+ export type BufferEncoding = 'utf8' | 'utf-8' | 'hex' | 'base64' | 'latin1' | 'binary' | 'ascii' | 'ucs2' | 'ucs-2' | 'utf16le' | 'utf-16le';
2
+ interface BufferJSON {
3
+ type: 'Buffer';
4
+ data: number[];
5
+ }
6
+ export declare class Buffer extends Uint8Array {
7
+ static from(value: string, encoding?: BufferEncoding): Buffer;
8
+ static from(value: ArrayLike<number> | Iterable<number>): Buffer;
9
+ static from(value: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
10
+ static alloc(size: number, fill?: number | string | Uint8Array, encoding?: BufferEncoding): Buffer;
11
+ static allocUnsafe(size: number): Buffer;
12
+ static allocUnsafeSlow(size: number): Buffer;
13
+ static isBuffer(value: unknown): value is Buffer;
14
+ static isEncoding(encoding: string): boolean;
15
+ static byteLength(value: string | Uint8Array | ArrayBuffer, encoding?: BufferEncoding): number;
16
+ static concat(list: readonly Uint8Array[], totalLength?: number): Buffer;
17
+ static compare(a: Uint8Array, b: Uint8Array): number;
18
+ toString(encoding?: BufferEncoding, start?: number, end?: number): string;
19
+ toJSON(): BufferJSON;
20
+ equals(other: Uint8Array): boolean;
21
+ compare(other: Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
22
+ copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
23
+ fill(value: number | string | Uint8Array, offset?: number, end?: number, encoding?: BufferEncoding): this;
24
+ indexOf(value: number | string | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
25
+ lastIndexOf(value: number | string | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
26
+ includes(value: number | string | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): boolean;
27
+ slice(start?: number, end?: number): Buffer;
28
+ subarray(start?: number, end?: number): Buffer;
29
+ write(value: string, offset?: number, length?: number, encoding?: BufferEncoding): number;
30
+ writeUInt8(value: number, offset?: number): number;
31
+ writeInt8(value: number, offset?: number): number;
32
+ writeUInt16LE(value: number, offset?: number): number;
33
+ writeUInt16BE(value: number, offset?: number): number;
34
+ writeUInt32LE(value: number, offset?: number): number;
35
+ writeUInt32BE(value: number, offset?: number): number;
36
+ writeInt16LE(value: number, offset?: number): number;
37
+ writeInt16BE(value: number, offset?: number): number;
38
+ writeInt32LE(value: number, offset?: number): number;
39
+ writeInt32BE(value: number, offset?: number): number;
40
+ readUInt8(offset?: number): number;
41
+ readInt8(offset?: number): number;
42
+ readUInt16LE(offset?: number): number;
43
+ readUInt16BE(offset?: number): number;
44
+ readUInt32LE(offset?: number): number;
45
+ readUInt32BE(offset?: number): number;
46
+ readInt16LE(offset?: number): number;
47
+ readInt16BE(offset?: number): number;
48
+ readInt32LE(offset?: number): number;
49
+ readInt32BE(offset?: number): number;
50
+ }
51
+ /** Node `buffer.constants` 的形状;MAX_STRING_LENGTH 与 V8 上限一致。 */
52
+ export declare const constants: {
53
+ MAX_LENGTH: number;
54
+ MAX_STRING_LENGTH: number;
55
+ };
56
+ export declare const kMaxLength: number;
57
+ export declare const INSPECT_MAX_BYTES = 50;
58
+ /** 把普通 Uint8Array 变成 Buffer 实例(不改内容、不拷贝)。 */
59
+ export declare function wrap(source: Uint8Array): Buffer;
60
+ export default Buffer;