@openclaw/feishu 2026.6.8-beta.2 → 2026.6.9-beta.1
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.
- package/dist/api.js +78 -23
- package/dist/{channel-DwygSth-.js → channel-C9mW5kaS.js} +2 -2
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-CrqKcXaU.js → channel.runtime-BgUhHAja.js} +3 -3
- package/dist/{drive-8o3Omlnd.js → drive-9UfpmY27.js} +15 -2
- package/dist/{monitor-_1eNsUVp.js → monitor-BayUOr_U.js} +1 -1
- package/dist/{monitor.account-BhoLA1Y0.js → monitor.account-DzZWj0ob.js} +92 -48
- package/dist/{send-B3kteMF8.js → send-BozRcrbz.js} +32 -24
- package/dist/setup-api.js +1 -1
- package/node_modules/@protobufjs/aspromise/LICENSE +26 -0
- package/node_modules/@protobufjs/aspromise/README.md +13 -0
- package/node_modules/{protobufjs/src/util/aspromise.d.ts → @protobufjs/aspromise/index.d.ts} +13 -13
- package/node_modules/{protobufjs/src/util/aspromise.js → @protobufjs/aspromise/index.js} +52 -52
- package/node_modules/@protobufjs/aspromise/package.json +21 -0
- package/node_modules/@protobufjs/aspromise/tests/index.js +130 -0
- package/node_modules/@protobufjs/base64/LICENSE +26 -0
- package/node_modules/@protobufjs/base64/README.md +19 -0
- package/node_modules/{protobufjs/src/util/base64.d.ts → @protobufjs/base64/index.d.ts} +32 -32
- package/node_modules/{protobufjs/src/util/base64.js → @protobufjs/base64/index.js} +139 -146
- package/node_modules/@protobufjs/base64/package.json +21 -0
- package/node_modules/@protobufjs/base64/tests/index.js +46 -0
- package/node_modules/@protobufjs/codegen/LICENSE +26 -0
- package/node_modules/@protobufjs/codegen/README.md +49 -0
- package/node_modules/{protobufjs/src/util/codegen.d.ts → @protobufjs/codegen/index.d.ts} +31 -31
- package/node_modules/{protobufjs/src/util/codegen.js → @protobufjs/codegen/index.js} +112 -113
- package/node_modules/@protobufjs/codegen/package.json +13 -0
- package/node_modules/@protobufjs/codegen/tests/index.js +13 -0
- package/node_modules/@protobufjs/eventemitter/CHANGELOG.md +8 -0
- package/node_modules/@protobufjs/eventemitter/LICENSE +26 -0
- package/node_modules/@protobufjs/eventemitter/README.md +22 -0
- package/node_modules/{protobufjs/src/util/eventemitter.d.ts → @protobufjs/eventemitter/index.d.ts} +45 -45
- package/node_modules/{protobufjs/src/util/eventemitter.js → @protobufjs/eventemitter/index.js} +86 -86
- package/node_modules/@protobufjs/eventemitter/package.json +21 -0
- package/node_modules/@protobufjs/eventemitter/tests/index.js +83 -0
- package/node_modules/@protobufjs/fetch/CHANGELOG.md +8 -0
- package/node_modules/@protobufjs/fetch/LICENSE +26 -0
- package/node_modules/@protobufjs/fetch/README.md +13 -0
- package/node_modules/{protobufjs/src/util/fetch.d.ts → @protobufjs/fetch/index.d.ts} +56 -56
- package/node_modules/{protobufjs/src/util/fetch.js → @protobufjs/fetch/index.js} +112 -112
- package/node_modules/@protobufjs/fetch/package.json +27 -0
- package/node_modules/@protobufjs/fetch/tests/data/file.txt +1 -0
- package/node_modules/@protobufjs/fetch/tests/index.js +158 -0
- package/node_modules/@protobufjs/fetch/util/fs.js +11 -0
- package/node_modules/@protobufjs/float/LICENSE +26 -0
- package/node_modules/@protobufjs/float/README.md +102 -0
- package/node_modules/@protobufjs/float/bench/index.js +87 -0
- package/node_modules/@protobufjs/float/bench/suite.js +46 -0
- package/node_modules/{protobufjs/src/util/float.js → @protobufjs/float/index.js} +335 -335
- package/node_modules/@protobufjs/float/package.json +26 -0
- package/node_modules/@protobufjs/float/tests/index.js +100 -0
- package/node_modules/@protobufjs/inquire/CHANGELOG.md +8 -0
- package/node_modules/@protobufjs/inquire/LICENSE +26 -0
- package/node_modules/@protobufjs/inquire/README.md +13 -0
- package/node_modules/{protobufjs/src/util/inquire.d.ts → @protobufjs/inquire/index.d.ts} +10 -10
- package/node_modules/{protobufjs/src/util/inquire.js → @protobufjs/inquire/index.js} +38 -38
- package/node_modules/@protobufjs/inquire/package.json +21 -0
- package/node_modules/@protobufjs/inquire/tests/data/array.js +1 -0
- package/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +1 -0
- package/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +1 -0
- package/node_modules/@protobufjs/inquire/tests/data/object.js +1 -0
- package/node_modules/@protobufjs/inquire/tests/index.js +20 -0
- package/node_modules/@protobufjs/path/LICENSE +26 -0
- package/node_modules/@protobufjs/path/README.md +19 -0
- package/node_modules/{protobufjs/src/util/path.d.ts → @protobufjs/path/index.d.ts} +22 -22
- package/node_modules/{protobufjs/src/util/path.js → @protobufjs/path/index.js} +65 -72
- package/node_modules/@protobufjs/path/package.json +21 -0
- package/node_modules/@protobufjs/path/tests/index.js +60 -0
- package/node_modules/@protobufjs/pool/.npmignore +3 -0
- package/node_modules/@protobufjs/pool/LICENSE +26 -0
- package/node_modules/@protobufjs/pool/README.md +13 -0
- package/node_modules/{protobufjs/src/util/pool.d.ts → @protobufjs/pool/index.d.ts} +32 -32
- package/node_modules/{protobufjs/src/util/pool.js → @protobufjs/pool/index.js} +48 -48
- package/node_modules/@protobufjs/pool/package.json +21 -0
- package/node_modules/@protobufjs/pool/tests/index.js +33 -0
- package/node_modules/@protobufjs/utf8/LICENSE +26 -0
- package/node_modules/@protobufjs/utf8/README.md +20 -0
- package/node_modules/{protobufjs/src/util/utf8.d.ts → @protobufjs/utf8/index.d.ts} +24 -24
- package/node_modules/{protobufjs/src/util/utf8.js → @protobufjs/utf8/index.js} +104 -130
- package/node_modules/@protobufjs/utf8/package.json +21 -0
- package/node_modules/@protobufjs/utf8/tests/data/surrogate_pair_bug.txt +207 -0
- package/node_modules/@protobufjs/utf8/tests/data/utf8.txt +216 -0
- package/node_modules/@protobufjs/utf8/tests/index.js +74 -0
- package/node_modules/@types/node/LICENSE +21 -0
- package/node_modules/@types/node/README.md +15 -0
- package/node_modules/@types/node/assert/strict.d.ts +59 -0
- package/node_modules/@types/node/assert.d.ts +950 -0
- package/node_modules/@types/node/async_hooks.d.ts +711 -0
- package/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/node_modules/@types/node/buffer.d.ts +1765 -0
- package/node_modules/@types/node/child_process.d.ts +1366 -0
- package/node_modules/@types/node/cluster.d.ts +432 -0
- package/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/node_modules/@types/node/console.d.ts +93 -0
- package/node_modules/@types/node/constants.d.ts +14 -0
- package/node_modules/@types/node/crypto.d.ts +4058 -0
- package/node_modules/@types/node/dgram.d.ts +537 -0
- package/node_modules/@types/node/diagnostics_channel.d.ts +552 -0
- package/node_modules/@types/node/dns/promises.d.ts +497 -0
- package/node_modules/@types/node/dns.d.ts +876 -0
- package/node_modules/@types/node/domain.d.ts +150 -0
- package/node_modules/@types/node/events.d.ts +1008 -0
- package/node_modules/@types/node/fs/promises.d.ts +1468 -0
- package/node_modules/@types/node/fs.d.ts +4780 -0
- package/node_modules/@types/node/globals.d.ts +150 -0
- package/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/node_modules/@types/node/http.d.ts +2147 -0
- package/node_modules/@types/node/http2.d.ts +2485 -0
- package/node_modules/@types/node/https.d.ts +400 -0
- package/node_modules/@types/node/index.d.ts +117 -0
- package/node_modules/@types/node/inspector/promises.d.ts +35 -0
- package/node_modules/@types/node/inspector.d.ts +264 -0
- package/node_modules/@types/node/inspector.generated.d.ts +4406 -0
- package/node_modules/@types/node/module.d.ts +755 -0
- package/node_modules/@types/node/net.d.ts +970 -0
- package/node_modules/@types/node/os.d.ts +498 -0
- package/node_modules/@types/node/package.json +155 -0
- package/node_modules/@types/node/path/posix.d.ts +8 -0
- package/node_modules/@types/node/path/win32.d.ts +8 -0
- package/node_modules/@types/node/path.d.ts +178 -0
- package/node_modules/@types/node/perf_hooks.d.ts +612 -0
- package/node_modules/@types/node/process.d.ts +2204 -0
- package/node_modules/@types/node/punycode.d.ts +89 -0
- package/node_modules/@types/node/querystring.d.ts +139 -0
- package/node_modules/@types/node/quic.d.ts +897 -0
- package/node_modules/@types/node/readline/promises.d.ts +158 -0
- package/node_modules/@types/node/readline.d.ts +507 -0
- package/node_modules/@types/node/repl.d.ts +420 -0
- package/node_modules/@types/node/sea.d.ts +47 -0
- package/node_modules/@types/node/sqlite.d.ts +1068 -0
- package/node_modules/@types/node/stream/consumers.d.ts +114 -0
- package/node_modules/@types/node/stream/iter.d.ts +301 -0
- package/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/node_modules/@types/node/stream/web.d.ts +300 -0
- package/node_modules/@types/node/stream.d.ts +1774 -0
- package/node_modules/@types/node/string_decoder.d.ts +27 -0
- package/node_modules/@types/node/test/reporters.d.ts +59 -0
- package/node_modules/@types/node/test.d.ts +2279 -0
- package/node_modules/@types/node/timers/promises.d.ts +93 -0
- package/node_modules/@types/node/timers.d.ts +149 -0
- package/node_modules/@types/node/tls.d.ts +1193 -0
- package/node_modules/@types/node/trace_events.d.ts +103 -0
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/node_modules/@types/node/ts5.6/index.d.ts +119 -0
- package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/node_modules/@types/node/ts5.7/index.d.ts +119 -0
- package/node_modules/@types/node/tty.d.ts +225 -0
- package/node_modules/@types/node/url.d.ts +556 -0
- package/node_modules/@types/node/util/types.d.ts +558 -0
- package/node_modules/@types/node/util.d.ts +1677 -0
- package/node_modules/@types/node/v8.d.ts +980 -0
- package/node_modules/@types/node/vm.d.ts +1136 -0
- package/node_modules/@types/node/wasi.d.ts +131 -0
- package/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/node_modules/@types/node/worker_threads.d.ts +671 -0
- package/node_modules/@types/node/zlib/iter.d.ts +131 -0
- package/node_modules/@types/node/zlib.d.ts +589 -0
- package/node_modules/protobufjs/README.md +556 -263
- package/node_modules/protobufjs/dist/light/protobuf.js +1569 -1919
- package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.js +906 -1132
- package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/dist/protobuf.js +1576 -1993
- package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/ext/descriptor/README.md +70 -3
- package/node_modules/protobufjs/ext/descriptor/index.d.ts +193 -0
- package/node_modules/protobufjs/ext/descriptor/index.js +1185 -1
- package/node_modules/protobufjs/ext/descriptor/test.js +54 -0
- package/node_modules/protobufjs/index.d.ts +720 -834
- package/node_modules/protobufjs/package.json +44 -20
- package/node_modules/protobufjs/src/converter.js +36 -60
- package/node_modules/protobufjs/src/decoder.js +53 -124
- package/node_modules/protobufjs/src/encoder.js +2 -10
- package/node_modules/protobufjs/src/enum.js +3 -8
- package/node_modules/protobufjs/src/field.js +11 -13
- package/node_modules/protobufjs/src/index-light.js +1 -1
- package/node_modules/protobufjs/src/mapfield.js +0 -1
- package/node_modules/protobufjs/src/message.js +11 -5
- package/node_modules/protobufjs/src/method.js +4 -5
- package/node_modules/protobufjs/src/namespace.js +3 -10
- package/node_modules/protobufjs/src/object.js +20 -20
- package/node_modules/protobufjs/src/oneof.js +0 -3
- package/node_modules/protobufjs/src/parse.js +16 -78
- package/node_modules/protobufjs/src/reader.js +31 -136
- package/node_modules/protobufjs/src/reader_buffer.js +3 -24
- package/node_modules/protobufjs/src/root.js +3 -7
- package/node_modules/protobufjs/src/roots.js +1 -1
- package/node_modules/protobufjs/src/service.js +6 -13
- package/node_modules/protobufjs/src/tokenize.js +1 -6
- package/node_modules/protobufjs/src/type.js +30 -44
- package/node_modules/protobufjs/src/typescript.jsdoc +15 -0
- package/node_modules/protobufjs/src/util/minimal.js +12 -36
- package/node_modules/protobufjs/src/util.js +17 -6
- package/node_modules/protobufjs/src/verifier.js +6 -6
- package/node_modules/protobufjs/src/wrappers.js +1 -0
- package/node_modules/protobufjs/src/writer.js +16 -42
- package/node_modules/protobufjs/src/writer_buffer.js +1 -18
- package/node_modules/protobufjs/tsconfig.json +5 -3
- package/node_modules/undici-types/LICENSE +21 -0
- package/node_modules/undici-types/README.md +6 -0
- package/node_modules/undici-types/agent.d.ts +32 -0
- package/node_modules/undici-types/api.d.ts +43 -0
- package/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/node_modules/undici-types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici-types/cache.d.ts +36 -0
- package/node_modules/undici-types/client-stats.d.ts +15 -0
- package/node_modules/undici-types/client.d.ts +123 -0
- package/node_modules/undici-types/connector.d.ts +36 -0
- package/node_modules/undici-types/content-type.d.ts +21 -0
- package/node_modules/undici-types/cookies.d.ts +30 -0
- package/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici-types/dispatcher.d.ts +279 -0
- package/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici-types/errors.d.ts +177 -0
- package/node_modules/undici-types/eventsource.d.ts +66 -0
- package/node_modules/undici-types/fetch.d.ts +211 -0
- package/node_modules/undici-types/formdata.d.ts +108 -0
- package/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici-types/global-origin.d.ts +7 -0
- package/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/node_modules/undici-types/handlers.d.ts +15 -0
- package/node_modules/undici-types/header.d.ts +160 -0
- package/node_modules/undici-types/index.d.ts +91 -0
- package/node_modules/undici-types/interceptors.d.ts +80 -0
- package/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/node_modules/undici-types/mock-client.d.ts +27 -0
- package/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/node_modules/undici-types/package.json +55 -0
- package/node_modules/undici-types/patch.d.ts +29 -0
- package/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/node_modules/undici-types/pool.d.ts +41 -0
- package/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/node_modules/undici-types/readable.d.ts +68 -0
- package/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/node_modules/undici-types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici-types/util.d.ts +18 -0
- package/node_modules/undici-types/utility.d.ts +7 -0
- package/node_modules/undici-types/webidl.d.ts +347 -0
- package/node_modules/undici-types/websocket.d.ts +188 -0
- package/npm-shrinkwrap.json +95 -6
- package/package.json +4 -4
- package/skills/feishu-wiki/SKILL.md +10 -1
- package/node_modules/protobufjs/ext/README.md +0 -81
- package/node_modules/protobufjs/ext/descriptor.d.ts +0 -86
- package/node_modules/protobufjs/ext/descriptor.generated.d.ts +0 -409
- package/node_modules/protobufjs/ext/descriptor.js +0 -1266
- package/node_modules/protobufjs/ext/textformat.d.ts +0 -19
- package/node_modules/protobufjs/ext/textformat.generated.d.ts +0 -11
- package/node_modules/protobufjs/ext/textformat.js +0 -1235
- package/node_modules/protobufjs/google/protobuf/compiler/plugin.json +0 -126
- package/node_modules/protobufjs/google/protobuf/compiler/plugin.proto +0 -47
- package/node_modules/protobufjs/src/typescript.js +0 -25
- /package/node_modules/{protobufjs/src/util/float.d.ts → @protobufjs/float/index.d.ts} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var tape = require("tape");
|
|
2
|
+
|
|
3
|
+
var EventEmitter = require("..");
|
|
4
|
+
|
|
5
|
+
tape.test("eventemitter", function(test) {
|
|
6
|
+
|
|
7
|
+
var ee = new EventEmitter();
|
|
8
|
+
var fn;
|
|
9
|
+
var ctx = {};
|
|
10
|
+
|
|
11
|
+
test.equal(Object.getPrototypeOf(ee._listeners), null, "should not inherit listener lookup keys");
|
|
12
|
+
|
|
13
|
+
test.doesNotThrow(function() {
|
|
14
|
+
ee.emit("a", 1);
|
|
15
|
+
ee.off();
|
|
16
|
+
ee.off("a");
|
|
17
|
+
ee.off("a", function() {});
|
|
18
|
+
}, "should not throw if no listeners are registered");
|
|
19
|
+
|
|
20
|
+
test.equal(ee.on("a", function(arg1) {
|
|
21
|
+
test.equal(this, ctx, "should be called with this = ctx");
|
|
22
|
+
test.equal(arg1, 1, "should be called with arg1 = 1");
|
|
23
|
+
}, ctx), ee, "should return itself when registering events");
|
|
24
|
+
ee.emit("a", 1);
|
|
25
|
+
|
|
26
|
+
ee.off("a");
|
|
27
|
+
test.same(Object.keys(ee._listeners), [ "a" ], "should keep the event key when calling off(evt)");
|
|
28
|
+
test.same(ee._listeners.a, [], "should remove all listeners of the respective event when calling off(evt)");
|
|
29
|
+
|
|
30
|
+
ee.off();
|
|
31
|
+
test.equal(Object.getPrototypeOf(ee._listeners), null, "should keep the listener table isolated when just calling off()");
|
|
32
|
+
test.same(Object.keys(ee._listeners), [], "should remove all listeners when just calling off()");
|
|
33
|
+
|
|
34
|
+
ee.on("a", fn = function(arg1) {
|
|
35
|
+
test.equal(this, ctx, "should be called with this = ctx");
|
|
36
|
+
test.equal(arg1, 1, "should be called with arg1 = 1");
|
|
37
|
+
}, ctx).emit("a", 1);
|
|
38
|
+
|
|
39
|
+
ee.off("a", fn);
|
|
40
|
+
test.same(Object.keys(ee._listeners), [ "a" ], "should keep the event key when calling off(evt, fn)");
|
|
41
|
+
test.same(ee._listeners.a, [], "should remove the exact listener when calling off(evt, fn)");
|
|
42
|
+
|
|
43
|
+
ee.on("a", function() {
|
|
44
|
+
test.equal(this, ee, "should be called with this = ee");
|
|
45
|
+
}).emit("a");
|
|
46
|
+
|
|
47
|
+
test.doesNotThrow(function() {
|
|
48
|
+
ee.off("a", fn);
|
|
49
|
+
}, "should not throw if no such listener is found");
|
|
50
|
+
|
|
51
|
+
test.test(test.name + " - special event names", function(test) {
|
|
52
|
+
var ee = new EventEmitter();
|
|
53
|
+
var calls = 0;
|
|
54
|
+
|
|
55
|
+
test.doesNotThrow(function() {
|
|
56
|
+
ee.off("__proto__", function() {});
|
|
57
|
+
}, "should not throw when removing an absent special event listener");
|
|
58
|
+
|
|
59
|
+
ee.on("__proto__", function(arg) {
|
|
60
|
+
++calls;
|
|
61
|
+
test.equal(arg, 1, "should pass arguments for __proto__ events");
|
|
62
|
+
});
|
|
63
|
+
ee.on("constructor", function(arg) {
|
|
64
|
+
++calls;
|
|
65
|
+
test.equal(arg, 2, "should pass arguments for constructor events");
|
|
66
|
+
});
|
|
67
|
+
ee.emit("__proto__", 1);
|
|
68
|
+
ee.emit("constructor", 2);
|
|
69
|
+
|
|
70
|
+
test.equal(calls, 2, "should dispatch special event names");
|
|
71
|
+
test.equal(Object.getPrototypeOf(ee._listeners), null, "should keep the listener table isolated");
|
|
72
|
+
test.ok(Object.prototype.hasOwnProperty.call(ee._listeners, "__proto__"), "should store __proto__ as an own event key");
|
|
73
|
+
test.ok(Object.prototype.hasOwnProperty.call(ee._listeners, "constructor"), "should store constructor as an own event key");
|
|
74
|
+
|
|
75
|
+
ee.off("__proto__");
|
|
76
|
+
ee.off("constructor");
|
|
77
|
+
test.same(ee._listeners.__proto__, [], "should clear __proto__ listeners");
|
|
78
|
+
test.same(ee._listeners.constructor, [], "should clear constructor listeners");
|
|
79
|
+
test.end();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test.end();
|
|
83
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.1.1](https://github.com/protobufjs/protobuf.js/compare/fetch-v1.1.0...fetch-v1.1.1) (2026-05-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* Backport bundler-safe optional module lookups ([#2254](https://github.com/protobufjs/protobuf.js/issues/2254)) ([0853a62](https://github.com/protobufjs/protobuf.js/commit/0853a625680f9247596b84ef48082b8f4e554797))
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Copyright (c) 2016, Daniel Wirtz All rights reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions are
|
|
5
|
+
met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright
|
|
8
|
+
notice, this list of conditions and the following disclaimer.
|
|
9
|
+
* Redistributions in binary form must reproduce the above copyright
|
|
10
|
+
notice, this list of conditions and the following disclaimer in the
|
|
11
|
+
documentation and/or other materials provided with the distribution.
|
|
12
|
+
* Neither the name of its author, nor the names of its contributors
|
|
13
|
+
may be used to endorse or promote products derived from this software
|
|
14
|
+
without specific prior written permission.
|
|
15
|
+
|
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
17
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
18
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
19
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
20
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
21
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
22
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
23
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
24
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@protobufjs/fetch
|
|
2
|
+
=================
|
|
3
|
+
[](https://www.npmjs.com/package/@protobufjs/fetch)
|
|
4
|
+
|
|
5
|
+
Fetches the contents of a file accross node and browsers.
|
|
6
|
+
|
|
7
|
+
API
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
* **fetch(path: `string`, [options: { binary: boolean } ], [callback: `function(error: ?Error, [contents: string])`]): `Promise<string|Uint8Array>|undefined`**
|
|
11
|
+
Fetches the contents of a file.
|
|
12
|
+
|
|
13
|
+
**License:** [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
export = fetch;
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Node-style callback as used by {@link util.fetch}.
|
|
5
|
-
* @typedef FetchCallback
|
|
6
|
-
* @type {function}
|
|
7
|
-
* @param {?Error} error Error, if any, otherwise `null`
|
|
8
|
-
* @param {string} [contents] File contents, if there hasn't been an error
|
|
9
|
-
* @returns {undefined}
|
|
10
|
-
*/
|
|
11
|
-
type FetchCallback = (error: Error, contents?: string) => void;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Options as used by {@link util.fetch}.
|
|
15
|
-
* @typedef IFetchOptions
|
|
16
|
-
* @type {Object}
|
|
17
|
-
* @property {boolean} [binary=false] Whether expecting a binary response
|
|
18
|
-
* @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
interface IFetchOptions {
|
|
22
|
-
binary?: boolean;
|
|
23
|
-
xhr?: boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Fetches the contents of a file.
|
|
28
|
-
* @memberof util
|
|
29
|
-
* @param {string} filename File path or url
|
|
30
|
-
* @param {IFetchOptions} options Fetch options
|
|
31
|
-
* @param {FetchCallback} callback Callback function
|
|
32
|
-
* @returns {undefined}
|
|
33
|
-
*/
|
|
34
|
-
declare function fetch(filename: string, options: IFetchOptions, callback: FetchCallback): void;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Fetches the contents of a file.
|
|
38
|
-
* @name util.fetch
|
|
39
|
-
* @function
|
|
40
|
-
* @param {string} path File path or url
|
|
41
|
-
* @param {FetchCallback} callback Callback function
|
|
42
|
-
* @returns {undefined}
|
|
43
|
-
* @variation 2
|
|
44
|
-
*/
|
|
45
|
-
declare function fetch(path: string, callback: FetchCallback): void;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Fetches the contents of a file.
|
|
49
|
-
* @name util.fetch
|
|
50
|
-
* @function
|
|
51
|
-
* @param {string} path File path or url
|
|
52
|
-
* @param {IFetchOptions} [options] Fetch options
|
|
53
|
-
* @returns {Promise<string|Uint8Array>} Promise
|
|
54
|
-
* @variation 3
|
|
55
|
-
*/
|
|
56
|
-
declare function fetch(path: string, options?: IFetchOptions): Promise<(string|Uint8Array)>;
|
|
1
|
+
export = fetch;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Node-style callback as used by {@link util.fetch}.
|
|
5
|
+
* @typedef FetchCallback
|
|
6
|
+
* @type {function}
|
|
7
|
+
* @param {?Error} error Error, if any, otherwise `null`
|
|
8
|
+
* @param {string} [contents] File contents, if there hasn't been an error
|
|
9
|
+
* @returns {undefined}
|
|
10
|
+
*/
|
|
11
|
+
type FetchCallback = (error: Error, contents?: string) => void;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Options as used by {@link util.fetch}.
|
|
15
|
+
* @typedef IFetchOptions
|
|
16
|
+
* @type {Object}
|
|
17
|
+
* @property {boolean} [binary=false] Whether expecting a binary response
|
|
18
|
+
* @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
interface IFetchOptions {
|
|
22
|
+
binary?: boolean;
|
|
23
|
+
xhr?: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Fetches the contents of a file.
|
|
28
|
+
* @memberof util
|
|
29
|
+
* @param {string} filename File path or url
|
|
30
|
+
* @param {IFetchOptions} options Fetch options
|
|
31
|
+
* @param {FetchCallback} callback Callback function
|
|
32
|
+
* @returns {undefined}
|
|
33
|
+
*/
|
|
34
|
+
declare function fetch(filename: string, options: IFetchOptions, callback: FetchCallback): void;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Fetches the contents of a file.
|
|
38
|
+
* @name util.fetch
|
|
39
|
+
* @function
|
|
40
|
+
* @param {string} path File path or url
|
|
41
|
+
* @param {FetchCallback} callback Callback function
|
|
42
|
+
* @returns {undefined}
|
|
43
|
+
* @variation 2
|
|
44
|
+
*/
|
|
45
|
+
declare function fetch(path: string, callback: FetchCallback): void;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Fetches the contents of a file.
|
|
49
|
+
* @name util.fetch
|
|
50
|
+
* @function
|
|
51
|
+
* @param {string} path File path or url
|
|
52
|
+
* @param {IFetchOptions} [options] Fetch options
|
|
53
|
+
* @returns {Promise<string|Uint8Array>} Promise
|
|
54
|
+
* @variation 3
|
|
55
|
+
*/
|
|
56
|
+
declare function fetch(path: string, options?: IFetchOptions): Promise<(string|Uint8Array)>;
|
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
module.exports = fetch;
|
|
3
|
-
|
|
4
|
-
var asPromise = require("
|
|
5
|
-
fs = require("./fs");
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Node-style callback as used by {@link util.fetch}.
|
|
9
|
-
* @typedef FetchCallback
|
|
10
|
-
* @type {function}
|
|
11
|
-
* @param {?Error} error Error, if any, otherwise `null`
|
|
12
|
-
* @param {string} [contents] File contents, if there hasn't been an error
|
|
13
|
-
* @returns {undefined}
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Options as used by {@link util.fetch}.
|
|
18
|
-
* @interface IFetchOptions
|
|
19
|
-
* @property {boolean} [binary=false] Whether expecting a binary response
|
|
20
|
-
* @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Fetches the contents of a file.
|
|
25
|
-
* @memberof util
|
|
26
|
-
* @param {string} filename File path or url
|
|
27
|
-
* @param {IFetchOptions} options Fetch options
|
|
28
|
-
* @param {FetchCallback} callback Callback function
|
|
29
|
-
* @returns {undefined}
|
|
30
|
-
*/
|
|
31
|
-
function fetch(filename, options, callback) {
|
|
32
|
-
if (typeof options === "function") {
|
|
33
|
-
callback = options;
|
|
34
|
-
options = {};
|
|
35
|
-
} else if (!options)
|
|
36
|
-
options = {};
|
|
37
|
-
|
|
38
|
-
if (!callback)
|
|
39
|
-
return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this
|
|
40
|
-
|
|
41
|
-
// if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.
|
|
42
|
-
if (!options.xhr && fs && fs.readFile)
|
|
43
|
-
return fs.readFile(filename, function fetchReadFileCallback(err, contents) {
|
|
44
|
-
return err && typeof XMLHttpRequest !== "undefined"
|
|
45
|
-
? fetch.xhr(filename, options, callback)
|
|
46
|
-
: err
|
|
47
|
-
? callback(err)
|
|
48
|
-
: callback(null, options.binary ? contents : contents.toString("utf8"));
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// use the XHR version otherwise.
|
|
52
|
-
return fetch.xhr(filename, options, callback);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Fetches the contents of a file.
|
|
57
|
-
* @name util.fetch
|
|
58
|
-
* @function
|
|
59
|
-
* @param {string} path File path or url
|
|
60
|
-
* @param {FetchCallback} callback Callback function
|
|
61
|
-
* @returns {undefined}
|
|
62
|
-
* @variation 2
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Fetches the contents of a file.
|
|
67
|
-
* @name util.fetch
|
|
68
|
-
* @function
|
|
69
|
-
* @param {string} path File path or url
|
|
70
|
-
* @param {IFetchOptions} [options] Fetch options
|
|
71
|
-
* @returns {Promise<string|Uint8Array>} Promise
|
|
72
|
-
* @variation 3
|
|
73
|
-
*/
|
|
74
|
-
|
|
75
|
-
/**/
|
|
76
|
-
fetch.xhr = function fetch_xhr(filename, options, callback) {
|
|
77
|
-
var xhr = new XMLHttpRequest();
|
|
78
|
-
xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {
|
|
79
|
-
|
|
80
|
-
if (xhr.readyState !== 4)
|
|
81
|
-
return undefined;
|
|
82
|
-
|
|
83
|
-
// local cors security errors return status 0 / empty string, too. afaik this cannot be
|
|
84
|
-
// reliably distinguished from an actually empty file for security reasons. feel free
|
|
85
|
-
// to send a pull request if you are aware of a solution.
|
|
86
|
-
if (xhr.status !== 0 && xhr.status !== 200)
|
|
87
|
-
return callback(Error("status " + xhr.status));
|
|
88
|
-
|
|
89
|
-
// if binary data is expected, make sure that some sort of array is returned, even if
|
|
90
|
-
// ArrayBuffers are not supported. the binary string fallback, however, is unsafe.
|
|
91
|
-
if (options.binary) {
|
|
92
|
-
var buffer = xhr.response;
|
|
93
|
-
if (!buffer) {
|
|
94
|
-
buffer = [];
|
|
95
|
-
for (var i = 0; i < xhr.responseText.length; ++i)
|
|
96
|
-
buffer.push(xhr.responseText.charCodeAt(i) & 255);
|
|
97
|
-
}
|
|
98
|
-
return callback(null, typeof Uint8Array !== "undefined" ? new Uint8Array(buffer) : buffer);
|
|
99
|
-
}
|
|
100
|
-
return callback(null, xhr.responseText);
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
if (options.binary) {
|
|
104
|
-
// ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers
|
|
105
|
-
if ("overrideMimeType" in xhr)
|
|
106
|
-
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
|
107
|
-
xhr.responseType = "arraybuffer";
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
xhr.open("GET", filename);
|
|
111
|
-
xhr.send();
|
|
112
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = fetch;
|
|
3
|
+
|
|
4
|
+
var asPromise = require("@protobufjs/aspromise"),
|
|
5
|
+
fs = require("./util/fs");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Node-style callback as used by {@link util.fetch}.
|
|
9
|
+
* @typedef FetchCallback
|
|
10
|
+
* @type {function}
|
|
11
|
+
* @param {?Error} error Error, if any, otherwise `null`
|
|
12
|
+
* @param {string} [contents] File contents, if there hasn't been an error
|
|
13
|
+
* @returns {undefined}
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Options as used by {@link util.fetch}.
|
|
18
|
+
* @interface IFetchOptions
|
|
19
|
+
* @property {boolean} [binary=false] Whether expecting a binary response
|
|
20
|
+
* @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Fetches the contents of a file.
|
|
25
|
+
* @memberof util
|
|
26
|
+
* @param {string} filename File path or url
|
|
27
|
+
* @param {IFetchOptions} options Fetch options
|
|
28
|
+
* @param {FetchCallback} callback Callback function
|
|
29
|
+
* @returns {undefined}
|
|
30
|
+
*/
|
|
31
|
+
function fetch(filename, options, callback) {
|
|
32
|
+
if (typeof options === "function") {
|
|
33
|
+
callback = options;
|
|
34
|
+
options = {};
|
|
35
|
+
} else if (!options)
|
|
36
|
+
options = {};
|
|
37
|
+
|
|
38
|
+
if (!callback)
|
|
39
|
+
return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this
|
|
40
|
+
|
|
41
|
+
// if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.
|
|
42
|
+
if (!options.xhr && fs && fs.readFile)
|
|
43
|
+
return fs.readFile(filename, function fetchReadFileCallback(err, contents) {
|
|
44
|
+
return err && typeof XMLHttpRequest !== "undefined"
|
|
45
|
+
? fetch.xhr(filename, options, callback)
|
|
46
|
+
: err
|
|
47
|
+
? callback(err)
|
|
48
|
+
: callback(null, options.binary ? contents : contents.toString("utf8"));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// use the XHR version otherwise.
|
|
52
|
+
return fetch.xhr(filename, options, callback);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Fetches the contents of a file.
|
|
57
|
+
* @name util.fetch
|
|
58
|
+
* @function
|
|
59
|
+
* @param {string} path File path or url
|
|
60
|
+
* @param {FetchCallback} callback Callback function
|
|
61
|
+
* @returns {undefined}
|
|
62
|
+
* @variation 2
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Fetches the contents of a file.
|
|
67
|
+
* @name util.fetch
|
|
68
|
+
* @function
|
|
69
|
+
* @param {string} path File path or url
|
|
70
|
+
* @param {IFetchOptions} [options] Fetch options
|
|
71
|
+
* @returns {Promise<string|Uint8Array>} Promise
|
|
72
|
+
* @variation 3
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
/**/
|
|
76
|
+
fetch.xhr = function fetch_xhr(filename, options, callback) {
|
|
77
|
+
var xhr = new XMLHttpRequest();
|
|
78
|
+
xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {
|
|
79
|
+
|
|
80
|
+
if (xhr.readyState !== 4)
|
|
81
|
+
return undefined;
|
|
82
|
+
|
|
83
|
+
// local cors security errors return status 0 / empty string, too. afaik this cannot be
|
|
84
|
+
// reliably distinguished from an actually empty file for security reasons. feel free
|
|
85
|
+
// to send a pull request if you are aware of a solution.
|
|
86
|
+
if (xhr.status !== 0 && xhr.status !== 200)
|
|
87
|
+
return callback(Error("status " + xhr.status));
|
|
88
|
+
|
|
89
|
+
// if binary data is expected, make sure that some sort of array is returned, even if
|
|
90
|
+
// ArrayBuffers are not supported. the binary string fallback, however, is unsafe.
|
|
91
|
+
if (options.binary) {
|
|
92
|
+
var buffer = xhr.response;
|
|
93
|
+
if (!buffer) {
|
|
94
|
+
buffer = [];
|
|
95
|
+
for (var i = 0; i < xhr.responseText.length; ++i)
|
|
96
|
+
buffer.push(xhr.responseText.charCodeAt(i) & 255);
|
|
97
|
+
}
|
|
98
|
+
return callback(null, typeof Uint8Array !== "undefined" ? new Uint8Array(buffer) : buffer);
|
|
99
|
+
}
|
|
100
|
+
return callback(null, xhr.responseText);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
if (options.binary) {
|
|
104
|
+
// ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers
|
|
105
|
+
if ("overrideMimeType" in xhr)
|
|
106
|
+
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
|
107
|
+
xhr.responseType = "arraybuffer";
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
xhr.open("GET", filename);
|
|
111
|
+
xhr.send();
|
|
112
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@protobufjs/fetch",
|
|
3
|
+
"description": "Fetches the contents of a file accross node and browsers.",
|
|
4
|
+
"version": "1.1.1",
|
|
5
|
+
"author": "Daniel Wirtz <dcode+protobufjs@dcode.io>",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/dcodeIO/protobuf.js.git"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@protobufjs/aspromise": "^1.1.1"
|
|
12
|
+
},
|
|
13
|
+
"license": "BSD-3-Clause",
|
|
14
|
+
"main": "index.js",
|
|
15
|
+
"types": "index.d.ts",
|
|
16
|
+
"browser": {
|
|
17
|
+
"fs": false
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"istanbul": "^0.4.5",
|
|
21
|
+
"tape": "^5.0.0"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"test": "tape tests/*.js",
|
|
25
|
+
"coverage": "istanbul cover node_modules/tape/bin/tape tests/*.js"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
file.txt
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
var tape = require("tape");
|
|
2
|
+
|
|
3
|
+
var fetch = require("..");
|
|
4
|
+
|
|
5
|
+
tape.test("fetch", function(test) {
|
|
6
|
+
|
|
7
|
+
if (typeof Promise !== "undefined")
|
|
8
|
+
test.test(test.name + " - promise", function(test) {
|
|
9
|
+
var promise = fetch("NOTFOUND");
|
|
10
|
+
test.plan(2);
|
|
11
|
+
test.ok(promise instanceof Promise, "should return a promise if callback has been omitted");
|
|
12
|
+
promise
|
|
13
|
+
.then(function() {
|
|
14
|
+
test.fail("should not resolve");
|
|
15
|
+
})
|
|
16
|
+
.catch(function(err) {
|
|
17
|
+
test.ok(err, "should reject with an error");
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test.test(test.name + " - node fs", function(test) {
|
|
22
|
+
|
|
23
|
+
test.test(test.name + " - string", function(test) {
|
|
24
|
+
test.plan(2);
|
|
25
|
+
fetch(require.resolve("./data/file.txt"), function(err, contents) {
|
|
26
|
+
test.notOk(err, "should not return an error");
|
|
27
|
+
test.equal(contents, "file.txt", "should return contents as a string");
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test.test(test.name + " - binary", function(test) {
|
|
32
|
+
test.plan(2);
|
|
33
|
+
fetch(require.resolve("./data/file.txt"), { binary: true }, function(err, contents) {
|
|
34
|
+
test.notOk(err, "should not return an error");
|
|
35
|
+
test.same(contents, new Buffer("file.txt", "utf8"), "should return contents as a Buffer");
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test.test(test.name + " - fallback", function(test) {
|
|
40
|
+
test.plan(2);
|
|
41
|
+
global.XMLHttpRequest = fakeXHR(0);
|
|
42
|
+
fetch("file.txt", function(err, contents) {
|
|
43
|
+
delete global.XMLHttpRequest;
|
|
44
|
+
test.notOk(err, "should not return an error");
|
|
45
|
+
test.same(contents, "file.txt", "should return contents as a string");
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test.end();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test.test(test.name + " - XMLHttpRequest", function(test) {
|
|
53
|
+
|
|
54
|
+
test.test(test.name + " - 404", function(test) {
|
|
55
|
+
global.XMLHttpRequest = fakeXHR(404);
|
|
56
|
+
fetch("file.txt", { xhr: true }, function(err) {
|
|
57
|
+
delete global.XMLHttpRequest;
|
|
58
|
+
test.ok(err, "should return an error");
|
|
59
|
+
test.end();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test.test(test.name + " - string", function(test) {
|
|
64
|
+
global.XMLHttpRequest = fakeXHR(0);
|
|
65
|
+
test.plan(2);
|
|
66
|
+
fetch("file.txt", { xhr: true }, function(err, contents) {
|
|
67
|
+
delete global.XMLHttpRequest;
|
|
68
|
+
test.notOk(err, "should not return an error");
|
|
69
|
+
test.equal(contents, "file.txt", "should return contents as a string");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test.test(test.name + " - binary", function(test) {
|
|
74
|
+
global.XMLHttpRequest = fakeXHR(200);
|
|
75
|
+
test.plan(2);
|
|
76
|
+
fetch("file.txt", { xhr: true, binary: true }, function(err, contents) {
|
|
77
|
+
delete global.XMLHttpRequest;
|
|
78
|
+
test.notOk(err, "should not return an error");
|
|
79
|
+
test.same(contents, new Uint8Array([0x66, 0x69, 0x6c, 0x65, 0x2e, 0x74, 0x78, 0x74]), "should return contents as an Uint8Array");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test.test(test.name + " - XMLHttpRequest (ancient)", function(test) {
|
|
86
|
+
|
|
87
|
+
test.test(test.name + " - string", function(test) {
|
|
88
|
+
global.XMLHttpRequest = fakeXHR(0, true);
|
|
89
|
+
test.plan(2);
|
|
90
|
+
fetch("file.txt", { xhr: true }, function(err, contents) {
|
|
91
|
+
delete global.XMLHttpRequest;
|
|
92
|
+
test.notOk(err, "should not return an error");
|
|
93
|
+
test.equal(contents, "file.txt", "should return contents as a string");
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test.test(test.name + " - binary", function(test) {
|
|
98
|
+
global.XMLHttpRequest = fakeXHR(200, true);
|
|
99
|
+
var U8 = global.Uint8Array;
|
|
100
|
+
delete global.Uint8Array;
|
|
101
|
+
test.plan(2);
|
|
102
|
+
fetch("file.txt", { xhr: true, binary: true }, function(err, contents) {
|
|
103
|
+
delete global.XMLHttpRequest;
|
|
104
|
+
global.Uint8Array = U8;
|
|
105
|
+
test.notOk(err, "should not return an error");
|
|
106
|
+
test.same(contents, [0x66, 0x69, 0x6c, 0x65, 0x2e, 0x74, 0x78, 0x74], "should return contents as an Array");
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
function fakeXHR(status, ancient) {
|
|
115
|
+
|
|
116
|
+
var UNSENT = 0,
|
|
117
|
+
OPENED = 1,
|
|
118
|
+
HEADERS_RECEIVED = 2,
|
|
119
|
+
LOADING = 3,
|
|
120
|
+
DONE = 4;
|
|
121
|
+
|
|
122
|
+
function XMLHttpRequest() {
|
|
123
|
+
this.status = 0;
|
|
124
|
+
this.readyState = UNSENT;
|
|
125
|
+
}
|
|
126
|
+
if (!ancient)
|
|
127
|
+
XMLHttpRequest.prototype.overrideMimeType = function(mimeType) {
|
|
128
|
+
this._mimeType = mimeType;
|
|
129
|
+
};
|
|
130
|
+
XMLHttpRequest.prototype.open = function open(method, path) {
|
|
131
|
+
this._method = method;
|
|
132
|
+
this._path = path;
|
|
133
|
+
this.readyState = OPENED;
|
|
134
|
+
};
|
|
135
|
+
XMLHttpRequest.prototype.send = function send() {
|
|
136
|
+
var self = this;
|
|
137
|
+
setTimeout(function() {
|
|
138
|
+
self.onreadystatechange(); // opened
|
|
139
|
+
self.readyState = HEADERS_RECEIVED;
|
|
140
|
+
self.onreadystatechange();
|
|
141
|
+
self.readyState = LOADING;
|
|
142
|
+
self.onreadystatechange();
|
|
143
|
+
self.readyState = DONE;
|
|
144
|
+
self.status = status;
|
|
145
|
+
if (self.responseType === "arraybuffer" && !ancient) {
|
|
146
|
+
var buf = new Buffer(self._path, "utf8");
|
|
147
|
+
var abuf = new ArrayBuffer(buf.length);
|
|
148
|
+
var view = new Uint8Array(abuf);
|
|
149
|
+
for (var i = 0; i < buf.length; ++i)
|
|
150
|
+
view[i] = buf[i];
|
|
151
|
+
self.response = abuf;
|
|
152
|
+
} else
|
|
153
|
+
self.responseText = self._path;
|
|
154
|
+
self.onreadystatechange();
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
return XMLHttpRequest;
|
|
158
|
+
}
|