@openclaw/feishu 2026.6.8 → 2026.6.9
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 +79 -24
- package/dist/{channel-DwygSth-.js → channel-DF8jqwhL.js} +4 -4
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-CrqKcXaU.js → channel.runtime-C4eAoxAR.js} +5 -5
- package/dist/{client-BhMNZBJD.js → client-BwgAJuvo.js} +14 -9
- package/dist/{drive-8o3Omlnd.js → drive-djUl8IRC.js} +16 -3
- package/dist/{monitor-_1eNsUVp.js → monitor-UZJ1bdoG.js} +2 -2
- package/dist/{monitor.account-BhoLA1Y0.js → monitor.account-Bc_8o_b6.js} +95 -51
- package/dist/{monitor.state-QV66eUNA.js → monitor.state-CGL1occz.js} +1 -1
- package/dist/{probe-BjKRV7em.js → probe-EyeJQb3C.js} +1 -1
- package/dist/{send-B3kteMF8.js → send-CMyK8JGr.js} +33 -25
- 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
package/node_modules/{protobufjs/src/util/eventemitter.js → @protobufjs/eventemitter/index.js}
RENAMED
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
module.exports = EventEmitter;
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Constructs a new event emitter instance.
|
|
6
|
-
* @classdesc A minimal event emitter.
|
|
7
|
-
* @memberof util
|
|
8
|
-
* @constructor
|
|
9
|
-
*/
|
|
10
|
-
function EventEmitter() {
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Registered listeners.
|
|
14
|
-
* @type {Object.<string,*>}
|
|
15
|
-
* @private
|
|
16
|
-
*/
|
|
17
|
-
this._listeners = Object.create(null);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Event listener as used by {@link util.EventEmitter}.
|
|
22
|
-
* @typedef EventEmitterListener
|
|
23
|
-
* @type {function}
|
|
24
|
-
* @param {...*} args Arguments
|
|
25
|
-
* @returns {undefined}
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Registers an event listener.
|
|
30
|
-
* @param {string} evt Event name
|
|
31
|
-
* @param {EventEmitterListener} fn Listener
|
|
32
|
-
* @param {*} [ctx] Listener context
|
|
33
|
-
* @returns {this} `this`
|
|
34
|
-
*/
|
|
35
|
-
EventEmitter.prototype.on = function on(evt, fn, ctx) {
|
|
36
|
-
(this._listeners[evt] || (this._listeners[evt] = [])).push({
|
|
37
|
-
fn : fn,
|
|
38
|
-
ctx : ctx || this
|
|
39
|
-
});
|
|
40
|
-
return this;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Removes an event listener or any matching listeners if arguments are omitted.
|
|
45
|
-
* @param {string} [evt] Event name. Removes all listeners if omitted.
|
|
46
|
-
* @param {EventEmitterListener} [fn] Listener to remove. Removes all listeners of `evt` if omitted.
|
|
47
|
-
* @returns {this} `this`
|
|
48
|
-
*/
|
|
49
|
-
EventEmitter.prototype.off = function off(evt, fn) {
|
|
50
|
-
if (evt === undefined)
|
|
51
|
-
this._listeners = Object.create(null);
|
|
52
|
-
else {
|
|
53
|
-
if (fn === undefined)
|
|
54
|
-
this._listeners[evt] = [];
|
|
55
|
-
else {
|
|
56
|
-
var listeners = this._listeners[evt];
|
|
57
|
-
if (!listeners)
|
|
58
|
-
return this;
|
|
59
|
-
for (var i = 0; i < listeners.length;)
|
|
60
|
-
if (listeners[i].fn === fn)
|
|
61
|
-
listeners.splice(i, 1);
|
|
62
|
-
else
|
|
63
|
-
++i;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return this;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Emits an event by calling its listeners with the specified arguments.
|
|
71
|
-
* @param {string} evt Event name
|
|
72
|
-
* @param {...*} args Arguments
|
|
73
|
-
* @returns {this} `this`
|
|
74
|
-
*/
|
|
75
|
-
EventEmitter.prototype.emit = function emit(evt) {
|
|
76
|
-
var listeners = this._listeners[evt];
|
|
77
|
-
if (listeners) {
|
|
78
|
-
var args = [],
|
|
79
|
-
i = 1;
|
|
80
|
-
for (; i < arguments.length;)
|
|
81
|
-
args.push(arguments[i++]);
|
|
82
|
-
for (i = 0; i < listeners.length;)
|
|
83
|
-
listeners[i].fn.apply(listeners[i++].ctx, args);
|
|
84
|
-
}
|
|
85
|
-
return this;
|
|
86
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = EventEmitter;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Constructs a new event emitter instance.
|
|
6
|
+
* @classdesc A minimal event emitter.
|
|
7
|
+
* @memberof util
|
|
8
|
+
* @constructor
|
|
9
|
+
*/
|
|
10
|
+
function EventEmitter() {
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Registered listeners.
|
|
14
|
+
* @type {Object.<string,*>}
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
this._listeners = Object.create(null);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Event listener as used by {@link util.EventEmitter}.
|
|
22
|
+
* @typedef EventEmitterListener
|
|
23
|
+
* @type {function}
|
|
24
|
+
* @param {...*} args Arguments
|
|
25
|
+
* @returns {undefined}
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Registers an event listener.
|
|
30
|
+
* @param {string} evt Event name
|
|
31
|
+
* @param {EventEmitterListener} fn Listener
|
|
32
|
+
* @param {*} [ctx] Listener context
|
|
33
|
+
* @returns {this} `this`
|
|
34
|
+
*/
|
|
35
|
+
EventEmitter.prototype.on = function on(evt, fn, ctx) {
|
|
36
|
+
(this._listeners[evt] || (this._listeners[evt] = [])).push({
|
|
37
|
+
fn : fn,
|
|
38
|
+
ctx : ctx || this
|
|
39
|
+
});
|
|
40
|
+
return this;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Removes an event listener or any matching listeners if arguments are omitted.
|
|
45
|
+
* @param {string} [evt] Event name. Removes all listeners if omitted.
|
|
46
|
+
* @param {EventEmitterListener} [fn] Listener to remove. Removes all listeners of `evt` if omitted.
|
|
47
|
+
* @returns {this} `this`
|
|
48
|
+
*/
|
|
49
|
+
EventEmitter.prototype.off = function off(evt, fn) {
|
|
50
|
+
if (evt === undefined)
|
|
51
|
+
this._listeners = Object.create(null);
|
|
52
|
+
else {
|
|
53
|
+
if (fn === undefined)
|
|
54
|
+
this._listeners[evt] = [];
|
|
55
|
+
else {
|
|
56
|
+
var listeners = this._listeners[evt];
|
|
57
|
+
if (!listeners)
|
|
58
|
+
return this;
|
|
59
|
+
for (var i = 0; i < listeners.length;)
|
|
60
|
+
if (listeners[i].fn === fn)
|
|
61
|
+
listeners.splice(i, 1);
|
|
62
|
+
else
|
|
63
|
+
++i;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return this;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Emits an event by calling its listeners with the specified arguments.
|
|
71
|
+
* @param {string} evt Event name
|
|
72
|
+
* @param {...*} args Arguments
|
|
73
|
+
* @returns {this} `this`
|
|
74
|
+
*/
|
|
75
|
+
EventEmitter.prototype.emit = function emit(evt) {
|
|
76
|
+
var listeners = this._listeners[evt];
|
|
77
|
+
if (listeners) {
|
|
78
|
+
var args = [],
|
|
79
|
+
i = 1;
|
|
80
|
+
for (; i < arguments.length;)
|
|
81
|
+
args.push(arguments[i++]);
|
|
82
|
+
for (i = 0; i < listeners.length;)
|
|
83
|
+
listeners[i].fn.apply(listeners[i++].ctx, args);
|
|
84
|
+
}
|
|
85
|
+
return this;
|
|
86
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@protobufjs/eventemitter",
|
|
3
|
+
"description": "A minimal event emitter.",
|
|
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
|
+
"license": "BSD-3-Clause",
|
|
11
|
+
"main": "index.js",
|
|
12
|
+
"types": "index.d.ts",
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"istanbul": "^0.4.5",
|
|
15
|
+
"tape": "^5.0.0"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "tape tests/*.js",
|
|
19
|
+
"coverage": "istanbul cover node_modules/tape/bin/tape tests/*.js"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -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
|
+
};
|