Skip to content

Commit 0853a62

Browse files
authored
fix: Backport bundler-safe optional module lookups (#2254)
1 parent d7035f9 commit 0853a62

11 files changed

Lines changed: 47 additions & 11 deletions

File tree

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"lib/base64": "1.1.2",
66
"lib/codegen": "2.0.5",
77
"lib/eventemitter": "1.1.0",
8-
"lib/fetch": "1.1.1",
8+
"lib/fetch": "1.1.0",
99
"lib/float": "1.0.2",
1010
"lib/inquire": "1.1.1",
1111
"lib/path": "1.1.2",

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2484,6 +2484,7 @@ export namespace util {
24842484
* Requires a module only if available.
24852485
* @param moduleName Module to require
24862486
* @returns Required module if available and not empty, otherwise `null`
2487+
* @deprecated Legacy optional require helper. Will be removed in a future release.
24872488
*/
24882489
function inquire(moduleName: string): object;
24892490

lib/fetch/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
module.exports = fetch;
33

44
var asPromise = require("@protobufjs/aspromise"),
5-
inquire = require("@protobufjs/inquire");
6-
7-
var fs = inquire("fs");
5+
fs = require("./util/fs");
86

97
/**
108
* Node-style callback as used by {@link util.fetch}.

lib/fetch/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
{
22
"name": "@protobufjs/fetch",
33
"description": "Fetches the contents of a file accross node and browsers.",
4-
"version": "1.1.1",
4+
"version": "1.1.0",
55
"author": "Daniel Wirtz <dcode+protobufjs@dcode.io>",
66
"repository": {
77
"type": "git",
88
"url": "https://github.com/dcodeIO/protobuf.js.git"
99
},
1010
"dependencies": {
11-
"@protobufjs/aspromise": "^1.1.1",
12-
"@protobufjs/inquire": "^1.1.0"
11+
"@protobufjs/aspromise": "^1.1.1"
1312
},
1413
"license": "BSD-3-Clause",
1514
"main": "index.js",
1615
"types": "index.d.ts",
16+
"browser": {
17+
"fs": false
18+
},
1719
"devDependencies": {
1820
"istanbul": "^0.4.5",
1921
"tape": "^5.0.0"
@@ -22,4 +24,4 @@
2224
"test": "tape tests/*.js",
2325
"coverage": "istanbul cover node_modules/tape/bin/tape tests/*.js"
2426
}
25-
}
27+
}

lib/fetch/util/fs.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

lib/inquire/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ export = inquire;
55
* @memberof util
66
* @param {string} moduleName Module to require
77
* @returns {?Object} Required module if available and not empty, otherwise `null`
8+
* @deprecated Legacy optional require helper. Will be removed in a future release.
89
*/
910
declare function inquire(moduleName: string): object;

lib/inquire/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = inquire;
66
* @memberof util
77
* @param {string} moduleName Module to require
88
* @returns {?Object} Required module if available and not empty, otherwise `null`
9+
* @deprecated Legacy optional require helper. Will be removed in a future release.
910
*/
1011
function inquire(moduleName) {
1112
try {

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
],
2828
"main": "index.js",
2929
"types": "index.d.ts",
30+
"browser": {
31+
"fs": false
32+
},
3033
"publishConfig": {
3134
"tag": "latest-7"
3235
},

src/util.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var reservedRe = util.patterns.reservedRe,
2323
* Node's fs module if available.
2424
* @type {Object.<string,*>}
2525
*/
26-
util.fs = util.inquire("fs");
26+
util.fs = require("./util/fs");
2727

2828
/**
2929
* Checks a recursion depth.

src/util/fs.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

0 commit comments

Comments
 (0)