@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.
Files changed (281) hide show
  1. package/dist/api.js +78 -23
  2. package/dist/{channel-DwygSth-.js → channel-C9mW5kaS.js} +2 -2
  3. package/dist/channel-plugin-api.js +1 -1
  4. package/dist/{channel.runtime-CrqKcXaU.js → channel.runtime-BgUhHAja.js} +3 -3
  5. package/dist/{drive-8o3Omlnd.js → drive-9UfpmY27.js} +15 -2
  6. package/dist/{monitor-_1eNsUVp.js → monitor-BayUOr_U.js} +1 -1
  7. package/dist/{monitor.account-BhoLA1Y0.js → monitor.account-DzZWj0ob.js} +92 -48
  8. package/dist/{send-B3kteMF8.js → send-BozRcrbz.js} +32 -24
  9. package/dist/setup-api.js +1 -1
  10. package/node_modules/@protobufjs/aspromise/LICENSE +26 -0
  11. package/node_modules/@protobufjs/aspromise/README.md +13 -0
  12. package/node_modules/{protobufjs/src/util/aspromise.d.ts → @protobufjs/aspromise/index.d.ts} +13 -13
  13. package/node_modules/{protobufjs/src/util/aspromise.js → @protobufjs/aspromise/index.js} +52 -52
  14. package/node_modules/@protobufjs/aspromise/package.json +21 -0
  15. package/node_modules/@protobufjs/aspromise/tests/index.js +130 -0
  16. package/node_modules/@protobufjs/base64/LICENSE +26 -0
  17. package/node_modules/@protobufjs/base64/README.md +19 -0
  18. package/node_modules/{protobufjs/src/util/base64.d.ts → @protobufjs/base64/index.d.ts} +32 -32
  19. package/node_modules/{protobufjs/src/util/base64.js → @protobufjs/base64/index.js} +139 -146
  20. package/node_modules/@protobufjs/base64/package.json +21 -0
  21. package/node_modules/@protobufjs/base64/tests/index.js +46 -0
  22. package/node_modules/@protobufjs/codegen/LICENSE +26 -0
  23. package/node_modules/@protobufjs/codegen/README.md +49 -0
  24. package/node_modules/{protobufjs/src/util/codegen.d.ts → @protobufjs/codegen/index.d.ts} +31 -31
  25. package/node_modules/{protobufjs/src/util/codegen.js → @protobufjs/codegen/index.js} +112 -113
  26. package/node_modules/@protobufjs/codegen/package.json +13 -0
  27. package/node_modules/@protobufjs/codegen/tests/index.js +13 -0
  28. package/node_modules/@protobufjs/eventemitter/CHANGELOG.md +8 -0
  29. package/node_modules/@protobufjs/eventemitter/LICENSE +26 -0
  30. package/node_modules/@protobufjs/eventemitter/README.md +22 -0
  31. package/node_modules/{protobufjs/src/util/eventemitter.d.ts → @protobufjs/eventemitter/index.d.ts} +45 -45
  32. package/node_modules/{protobufjs/src/util/eventemitter.js → @protobufjs/eventemitter/index.js} +86 -86
  33. package/node_modules/@protobufjs/eventemitter/package.json +21 -0
  34. package/node_modules/@protobufjs/eventemitter/tests/index.js +83 -0
  35. package/node_modules/@protobufjs/fetch/CHANGELOG.md +8 -0
  36. package/node_modules/@protobufjs/fetch/LICENSE +26 -0
  37. package/node_modules/@protobufjs/fetch/README.md +13 -0
  38. package/node_modules/{protobufjs/src/util/fetch.d.ts → @protobufjs/fetch/index.d.ts} +56 -56
  39. package/node_modules/{protobufjs/src/util/fetch.js → @protobufjs/fetch/index.js} +112 -112
  40. package/node_modules/@protobufjs/fetch/package.json +27 -0
  41. package/node_modules/@protobufjs/fetch/tests/data/file.txt +1 -0
  42. package/node_modules/@protobufjs/fetch/tests/index.js +158 -0
  43. package/node_modules/@protobufjs/fetch/util/fs.js +11 -0
  44. package/node_modules/@protobufjs/float/LICENSE +26 -0
  45. package/node_modules/@protobufjs/float/README.md +102 -0
  46. package/node_modules/@protobufjs/float/bench/index.js +87 -0
  47. package/node_modules/@protobufjs/float/bench/suite.js +46 -0
  48. package/node_modules/{protobufjs/src/util/float.js → @protobufjs/float/index.js} +335 -335
  49. package/node_modules/@protobufjs/float/package.json +26 -0
  50. package/node_modules/@protobufjs/float/tests/index.js +100 -0
  51. package/node_modules/@protobufjs/inquire/CHANGELOG.md +8 -0
  52. package/node_modules/@protobufjs/inquire/LICENSE +26 -0
  53. package/node_modules/@protobufjs/inquire/README.md +13 -0
  54. package/node_modules/{protobufjs/src/util/inquire.d.ts → @protobufjs/inquire/index.d.ts} +10 -10
  55. package/node_modules/{protobufjs/src/util/inquire.js → @protobufjs/inquire/index.js} +38 -38
  56. package/node_modules/@protobufjs/inquire/package.json +21 -0
  57. package/node_modules/@protobufjs/inquire/tests/data/array.js +1 -0
  58. package/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +1 -0
  59. package/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +1 -0
  60. package/node_modules/@protobufjs/inquire/tests/data/object.js +1 -0
  61. package/node_modules/@protobufjs/inquire/tests/index.js +20 -0
  62. package/node_modules/@protobufjs/path/LICENSE +26 -0
  63. package/node_modules/@protobufjs/path/README.md +19 -0
  64. package/node_modules/{protobufjs/src/util/path.d.ts → @protobufjs/path/index.d.ts} +22 -22
  65. package/node_modules/{protobufjs/src/util/path.js → @protobufjs/path/index.js} +65 -72
  66. package/node_modules/@protobufjs/path/package.json +21 -0
  67. package/node_modules/@protobufjs/path/tests/index.js +60 -0
  68. package/node_modules/@protobufjs/pool/.npmignore +3 -0
  69. package/node_modules/@protobufjs/pool/LICENSE +26 -0
  70. package/node_modules/@protobufjs/pool/README.md +13 -0
  71. package/node_modules/{protobufjs/src/util/pool.d.ts → @protobufjs/pool/index.d.ts} +32 -32
  72. package/node_modules/{protobufjs/src/util/pool.js → @protobufjs/pool/index.js} +48 -48
  73. package/node_modules/@protobufjs/pool/package.json +21 -0
  74. package/node_modules/@protobufjs/pool/tests/index.js +33 -0
  75. package/node_modules/@protobufjs/utf8/LICENSE +26 -0
  76. package/node_modules/@protobufjs/utf8/README.md +20 -0
  77. package/node_modules/{protobufjs/src/util/utf8.d.ts → @protobufjs/utf8/index.d.ts} +24 -24
  78. package/node_modules/{protobufjs/src/util/utf8.js → @protobufjs/utf8/index.js} +104 -130
  79. package/node_modules/@protobufjs/utf8/package.json +21 -0
  80. package/node_modules/@protobufjs/utf8/tests/data/surrogate_pair_bug.txt +207 -0
  81. package/node_modules/@protobufjs/utf8/tests/data/utf8.txt +216 -0
  82. package/node_modules/@protobufjs/utf8/tests/index.js +74 -0
  83. package/node_modules/@types/node/LICENSE +21 -0
  84. package/node_modules/@types/node/README.md +15 -0
  85. package/node_modules/@types/node/assert/strict.d.ts +59 -0
  86. package/node_modules/@types/node/assert.d.ts +950 -0
  87. package/node_modules/@types/node/async_hooks.d.ts +711 -0
  88. package/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  89. package/node_modules/@types/node/buffer.d.ts +1765 -0
  90. package/node_modules/@types/node/child_process.d.ts +1366 -0
  91. package/node_modules/@types/node/cluster.d.ts +432 -0
  92. package/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  93. package/node_modules/@types/node/console.d.ts +93 -0
  94. package/node_modules/@types/node/constants.d.ts +14 -0
  95. package/node_modules/@types/node/crypto.d.ts +4058 -0
  96. package/node_modules/@types/node/dgram.d.ts +537 -0
  97. package/node_modules/@types/node/diagnostics_channel.d.ts +552 -0
  98. package/node_modules/@types/node/dns/promises.d.ts +497 -0
  99. package/node_modules/@types/node/dns.d.ts +876 -0
  100. package/node_modules/@types/node/domain.d.ts +150 -0
  101. package/node_modules/@types/node/events.d.ts +1008 -0
  102. package/node_modules/@types/node/fs/promises.d.ts +1468 -0
  103. package/node_modules/@types/node/fs.d.ts +4780 -0
  104. package/node_modules/@types/node/globals.d.ts +150 -0
  105. package/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  106. package/node_modules/@types/node/http.d.ts +2147 -0
  107. package/node_modules/@types/node/http2.d.ts +2485 -0
  108. package/node_modules/@types/node/https.d.ts +400 -0
  109. package/node_modules/@types/node/index.d.ts +117 -0
  110. package/node_modules/@types/node/inspector/promises.d.ts +35 -0
  111. package/node_modules/@types/node/inspector.d.ts +264 -0
  112. package/node_modules/@types/node/inspector.generated.d.ts +4406 -0
  113. package/node_modules/@types/node/module.d.ts +755 -0
  114. package/node_modules/@types/node/net.d.ts +970 -0
  115. package/node_modules/@types/node/os.d.ts +498 -0
  116. package/node_modules/@types/node/package.json +155 -0
  117. package/node_modules/@types/node/path/posix.d.ts +8 -0
  118. package/node_modules/@types/node/path/win32.d.ts +8 -0
  119. package/node_modules/@types/node/path.d.ts +178 -0
  120. package/node_modules/@types/node/perf_hooks.d.ts +612 -0
  121. package/node_modules/@types/node/process.d.ts +2204 -0
  122. package/node_modules/@types/node/punycode.d.ts +89 -0
  123. package/node_modules/@types/node/querystring.d.ts +139 -0
  124. package/node_modules/@types/node/quic.d.ts +897 -0
  125. package/node_modules/@types/node/readline/promises.d.ts +158 -0
  126. package/node_modules/@types/node/readline.d.ts +507 -0
  127. package/node_modules/@types/node/repl.d.ts +420 -0
  128. package/node_modules/@types/node/sea.d.ts +47 -0
  129. package/node_modules/@types/node/sqlite.d.ts +1068 -0
  130. package/node_modules/@types/node/stream/consumers.d.ts +114 -0
  131. package/node_modules/@types/node/stream/iter.d.ts +301 -0
  132. package/node_modules/@types/node/stream/promises.d.ts +211 -0
  133. package/node_modules/@types/node/stream/web.d.ts +300 -0
  134. package/node_modules/@types/node/stream.d.ts +1774 -0
  135. package/node_modules/@types/node/string_decoder.d.ts +27 -0
  136. package/node_modules/@types/node/test/reporters.d.ts +59 -0
  137. package/node_modules/@types/node/test.d.ts +2279 -0
  138. package/node_modules/@types/node/timers/promises.d.ts +93 -0
  139. package/node_modules/@types/node/timers.d.ts +149 -0
  140. package/node_modules/@types/node/tls.d.ts +1193 -0
  141. package/node_modules/@types/node/trace_events.d.ts +103 -0
  142. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  143. package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  144. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  145. package/node_modules/@types/node/ts5.6/index.d.ts +119 -0
  146. package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  147. package/node_modules/@types/node/ts5.7/index.d.ts +119 -0
  148. package/node_modules/@types/node/tty.d.ts +225 -0
  149. package/node_modules/@types/node/url.d.ts +556 -0
  150. package/node_modules/@types/node/util/types.d.ts +558 -0
  151. package/node_modules/@types/node/util.d.ts +1677 -0
  152. package/node_modules/@types/node/v8.d.ts +980 -0
  153. package/node_modules/@types/node/vm.d.ts +1136 -0
  154. package/node_modules/@types/node/wasi.d.ts +131 -0
  155. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  156. package/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  157. package/node_modules/@types/node/web-globals/console.d.ts +9 -0
  158. package/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  159. package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  160. package/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  161. package/node_modules/@types/node/web-globals/events.d.ts +106 -0
  162. package/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  163. package/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  164. package/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  165. package/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  166. package/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  167. package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  168. package/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  169. package/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  170. package/node_modules/@types/node/web-globals/url.d.ts +24 -0
  171. package/node_modules/@types/node/worker_threads.d.ts +671 -0
  172. package/node_modules/@types/node/zlib/iter.d.ts +131 -0
  173. package/node_modules/@types/node/zlib.d.ts +589 -0
  174. package/node_modules/protobufjs/README.md +556 -263
  175. package/node_modules/protobufjs/dist/light/protobuf.js +1569 -1919
  176. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  177. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  178. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  179. package/node_modules/protobufjs/dist/minimal/protobuf.js +906 -1132
  180. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
  181. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  182. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
  183. package/node_modules/protobufjs/dist/protobuf.js +1576 -1993
  184. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  185. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  186. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  187. package/node_modules/protobufjs/ext/descriptor/README.md +70 -3
  188. package/node_modules/protobufjs/ext/descriptor/index.d.ts +193 -0
  189. package/node_modules/protobufjs/ext/descriptor/index.js +1185 -1
  190. package/node_modules/protobufjs/ext/descriptor/test.js +54 -0
  191. package/node_modules/protobufjs/index.d.ts +720 -834
  192. package/node_modules/protobufjs/package.json +44 -20
  193. package/node_modules/protobufjs/src/converter.js +36 -60
  194. package/node_modules/protobufjs/src/decoder.js +53 -124
  195. package/node_modules/protobufjs/src/encoder.js +2 -10
  196. package/node_modules/protobufjs/src/enum.js +3 -8
  197. package/node_modules/protobufjs/src/field.js +11 -13
  198. package/node_modules/protobufjs/src/index-light.js +1 -1
  199. package/node_modules/protobufjs/src/mapfield.js +0 -1
  200. package/node_modules/protobufjs/src/message.js +11 -5
  201. package/node_modules/protobufjs/src/method.js +4 -5
  202. package/node_modules/protobufjs/src/namespace.js +3 -10
  203. package/node_modules/protobufjs/src/object.js +20 -20
  204. package/node_modules/protobufjs/src/oneof.js +0 -3
  205. package/node_modules/protobufjs/src/parse.js +16 -78
  206. package/node_modules/protobufjs/src/reader.js +31 -136
  207. package/node_modules/protobufjs/src/reader_buffer.js +3 -24
  208. package/node_modules/protobufjs/src/root.js +3 -7
  209. package/node_modules/protobufjs/src/roots.js +1 -1
  210. package/node_modules/protobufjs/src/service.js +6 -13
  211. package/node_modules/protobufjs/src/tokenize.js +1 -6
  212. package/node_modules/protobufjs/src/type.js +30 -44
  213. package/node_modules/protobufjs/src/typescript.jsdoc +15 -0
  214. package/node_modules/protobufjs/src/util/minimal.js +12 -36
  215. package/node_modules/protobufjs/src/util.js +17 -6
  216. package/node_modules/protobufjs/src/verifier.js +6 -6
  217. package/node_modules/protobufjs/src/wrappers.js +1 -0
  218. package/node_modules/protobufjs/src/writer.js +16 -42
  219. package/node_modules/protobufjs/src/writer_buffer.js +1 -18
  220. package/node_modules/protobufjs/tsconfig.json +5 -3
  221. package/node_modules/undici-types/LICENSE +21 -0
  222. package/node_modules/undici-types/README.md +6 -0
  223. package/node_modules/undici-types/agent.d.ts +32 -0
  224. package/node_modules/undici-types/api.d.ts +43 -0
  225. package/node_modules/undici-types/balanced-pool.d.ts +30 -0
  226. package/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  227. package/node_modules/undici-types/cache.d.ts +36 -0
  228. package/node_modules/undici-types/client-stats.d.ts +15 -0
  229. package/node_modules/undici-types/client.d.ts +123 -0
  230. package/node_modules/undici-types/connector.d.ts +36 -0
  231. package/node_modules/undici-types/content-type.d.ts +21 -0
  232. package/node_modules/undici-types/cookies.d.ts +30 -0
  233. package/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  234. package/node_modules/undici-types/dispatcher.d.ts +279 -0
  235. package/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  236. package/node_modules/undici-types/errors.d.ts +177 -0
  237. package/node_modules/undici-types/eventsource.d.ts +66 -0
  238. package/node_modules/undici-types/fetch.d.ts +211 -0
  239. package/node_modules/undici-types/formdata.d.ts +108 -0
  240. package/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  241. package/node_modules/undici-types/global-origin.d.ts +7 -0
  242. package/node_modules/undici-types/h2c-client.d.ts +73 -0
  243. package/node_modules/undici-types/handlers.d.ts +15 -0
  244. package/node_modules/undici-types/header.d.ts +160 -0
  245. package/node_modules/undici-types/index.d.ts +91 -0
  246. package/node_modules/undici-types/interceptors.d.ts +80 -0
  247. package/node_modules/undici-types/mock-agent.d.ts +68 -0
  248. package/node_modules/undici-types/mock-call-history.d.ts +111 -0
  249. package/node_modules/undici-types/mock-client.d.ts +27 -0
  250. package/node_modules/undici-types/mock-errors.d.ts +12 -0
  251. package/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  252. package/node_modules/undici-types/mock-pool.d.ts +27 -0
  253. package/node_modules/undici-types/package.json +55 -0
  254. package/node_modules/undici-types/patch.d.ts +29 -0
  255. package/node_modules/undici-types/pool-stats.d.ts +19 -0
  256. package/node_modules/undici-types/pool.d.ts +41 -0
  257. package/node_modules/undici-types/proxy-agent.d.ts +29 -0
  258. package/node_modules/undici-types/readable.d.ts +68 -0
  259. package/node_modules/undici-types/retry-agent.d.ts +8 -0
  260. package/node_modules/undici-types/retry-handler.d.ts +125 -0
  261. package/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  262. package/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  263. package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  264. package/node_modules/undici-types/util.d.ts +18 -0
  265. package/node_modules/undici-types/utility.d.ts +7 -0
  266. package/node_modules/undici-types/webidl.d.ts +347 -0
  267. package/node_modules/undici-types/websocket.d.ts +188 -0
  268. package/npm-shrinkwrap.json +95 -6
  269. package/package.json +4 -4
  270. package/skills/feishu-wiki/SKILL.md +10 -1
  271. package/node_modules/protobufjs/ext/README.md +0 -81
  272. package/node_modules/protobufjs/ext/descriptor.d.ts +0 -86
  273. package/node_modules/protobufjs/ext/descriptor.generated.d.ts +0 -409
  274. package/node_modules/protobufjs/ext/descriptor.js +0 -1266
  275. package/node_modules/protobufjs/ext/textformat.d.ts +0 -19
  276. package/node_modules/protobufjs/ext/textformat.generated.d.ts +0 -11
  277. package/node_modules/protobufjs/ext/textformat.js +0 -1235
  278. package/node_modules/protobufjs/google/protobuf/compiler/plugin.json +0 -126
  279. package/node_modules/protobufjs/google/protobuf/compiler/plugin.proto +0 -47
  280. package/node_modules/protobufjs/src/typescript.js +0 -25
  281. /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
+ [![npm](https://img.shields.io/npm/v/@protobufjs/fetch.svg)](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("./aspromise"),
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,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
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ var fs = null;
4
+ try {
5
+ fs = require(/* webpackIgnore: true */ "fs");
6
+ if (!fs || !fs.readFile || !fs.readFileSync)
7
+ fs = null;
8
+ } catch (e) {
9
+ // `fs` is unavailable in browsers and browser-like bundles.
10
+ }
11
+ module.exports = fs;