fs: unexpose internal constants
`EXTENSIONLESS_FORMAT_JAVASCRIPT` and `EXTENSIONLESS_FORMAT_WASM` are only used internally through binding `getFormatOfExtensionlessFile`. They should not be exposed publicly. PR-URL: https://github.com/nodejs/node/pull/58327 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: LiviaMedeiros <livia@cirno.name> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
This commit is contained in:
parent
b1d598744c
commit
a436f7b492
@ -7,7 +7,7 @@ const {
|
|||||||
const { getOptionValue } = require('internal/options');
|
const { getOptionValue } = require('internal/options');
|
||||||
const { getValidatedPath } = require('internal/fs/utils');
|
const { getValidatedPath } = require('internal/fs/utils');
|
||||||
const fsBindings = internalBinding('fs');
|
const fsBindings = internalBinding('fs');
|
||||||
const { fs: fsConstants } = internalBinding('constants');
|
const { internal: internalConstants } = internalBinding('constants');
|
||||||
|
|
||||||
const experimentalWasmModules = getOptionValue('--experimental-wasm-modules');
|
const experimentalWasmModules = getOptionValue('--experimental-wasm-modules');
|
||||||
const experimentalAddonModules = getOptionValue('--experimental-addon-modules');
|
const experimentalAddonModules = getOptionValue('--experimental-addon-modules');
|
||||||
@ -60,7 +60,7 @@ function getFormatOfExtensionlessFile(url) {
|
|||||||
if (!experimentalWasmModules) { return 'module'; }
|
if (!experimentalWasmModules) { return 'module'; }
|
||||||
const path = getValidatedPath(url);
|
const path = getValidatedPath(url);
|
||||||
switch (fsBindings.getFormatOfExtensionlessFile(path)) {
|
switch (fsBindings.getFormatOfExtensionlessFile(path)) {
|
||||||
case fsConstants.EXTENSIONLESS_FORMAT_WASM:
|
case internalConstants.EXTENSIONLESS_FORMAT_WASM:
|
||||||
return 'wasm';
|
return 'wasm';
|
||||||
default:
|
default:
|
||||||
return 'module';
|
return 'module';
|
||||||
|
@ -1041,7 +1041,7 @@ void DefineCryptoConstants(Local<Object> target) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefineSystemConstants(Local<Object> target) {
|
void DefineFsConstants(Local<Object> target) {
|
||||||
NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_DIR);
|
NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_DIR);
|
||||||
NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_JUNCTION);
|
NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_JUNCTION);
|
||||||
// file access modes
|
// file access modes
|
||||||
@ -1059,10 +1059,6 @@ void DefineSystemConstants(Local<Object> target) {
|
|||||||
NODE_DEFINE_CONSTANT(target, UV_DIRENT_CHAR);
|
NODE_DEFINE_CONSTANT(target, UV_DIRENT_CHAR);
|
||||||
NODE_DEFINE_CONSTANT(target, UV_DIRENT_BLOCK);
|
NODE_DEFINE_CONSTANT(target, UV_DIRENT_BLOCK);
|
||||||
|
|
||||||
// Define module specific constants
|
|
||||||
NODE_DEFINE_CONSTANT(target, EXTENSIONLESS_FORMAT_JAVASCRIPT);
|
|
||||||
NODE_DEFINE_CONSTANT(target, EXTENSIONLESS_FORMAT_WASM);
|
|
||||||
|
|
||||||
NODE_DEFINE_CONSTANT(target, S_IFMT);
|
NODE_DEFINE_CONSTANT(target, S_IFMT);
|
||||||
NODE_DEFINE_CONSTANT(target, S_IFREG);
|
NODE_DEFINE_CONSTANT(target, S_IFREG);
|
||||||
NODE_DEFINE_CONSTANT(target, S_IFDIR);
|
NODE_DEFINE_CONSTANT(target, S_IFDIR);
|
||||||
@ -1250,6 +1246,12 @@ void DefineDLOpenConstants(Local<Object> target) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DefineInternalConstants(Local<Object> target) {
|
||||||
|
// Define module specific constants
|
||||||
|
NODE_DEFINE_CONSTANT(target, EXTENSIONLESS_FORMAT_JAVASCRIPT);
|
||||||
|
NODE_DEFINE_CONSTANT(target, EXTENSIONLESS_FORMAT_WASM);
|
||||||
|
}
|
||||||
|
|
||||||
void DefineTraceConstants(Local<Object> target) {
|
void DefineTraceConstants(Local<Object> target) {
|
||||||
NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_BEGIN);
|
NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_BEGIN);
|
||||||
NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_END);
|
NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_END);
|
||||||
@ -1307,16 +1309,19 @@ void CreatePerContextProperties(Local<Object> target,
|
|||||||
Object::New(isolate, Null(isolate), nullptr, nullptr, 0);
|
Object::New(isolate, Null(isolate), nullptr, nullptr, 0);
|
||||||
Local<Object> trace_constants =
|
Local<Object> trace_constants =
|
||||||
Object::New(isolate, Null(isolate), nullptr, nullptr, 0);
|
Object::New(isolate, Null(isolate), nullptr, nullptr, 0);
|
||||||
|
Local<Object> internal_constants =
|
||||||
|
Object::New(isolate, Null(isolate), nullptr, nullptr, 0);
|
||||||
|
|
||||||
DefineErrnoConstants(err_constants);
|
DefineErrnoConstants(err_constants);
|
||||||
DefineWindowsErrorConstants(err_constants);
|
DefineWindowsErrorConstants(err_constants);
|
||||||
DefineSignalConstants(sig_constants);
|
DefineSignalConstants(sig_constants);
|
||||||
DefinePriorityConstants(priority_constants);
|
DefinePriorityConstants(priority_constants);
|
||||||
DefineSystemConstants(fs_constants);
|
DefineFsConstants(fs_constants);
|
||||||
DefineCryptoConstants(crypto_constants);
|
DefineCryptoConstants(crypto_constants);
|
||||||
DefineZlibConstants(zlib_constants);
|
DefineZlibConstants(zlib_constants);
|
||||||
DefineDLOpenConstants(dlopen_constants);
|
DefineDLOpenConstants(dlopen_constants);
|
||||||
DefineTraceConstants(trace_constants);
|
DefineTraceConstants(trace_constants);
|
||||||
|
DefineInternalConstants(internal_constants);
|
||||||
|
|
||||||
// Define libuv constants.
|
// Define libuv constants.
|
||||||
NODE_DEFINE_CONSTANT(os_constants, UV_UDP_REUSEADDR);
|
NODE_DEFINE_CONSTANT(os_constants, UV_UDP_REUSEADDR);
|
||||||
@ -1362,6 +1367,11 @@ void CreatePerContextProperties(Local<Object> target,
|
|||||||
FIXED_ONE_BYTE_STRING(isolate, "trace"),
|
FIXED_ONE_BYTE_STRING(isolate, "trace"),
|
||||||
trace_constants)
|
trace_constants)
|
||||||
.Check();
|
.Check();
|
||||||
|
target
|
||||||
|
->Set(env->context(),
|
||||||
|
FIXED_ONE_BYTE_STRING(isolate, "internal"),
|
||||||
|
internal_constants)
|
||||||
|
.Check();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace constants
|
} // namespace constants
|
||||||
|
@ -7,7 +7,7 @@ const constants = internalBinding('constants');
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
assert.deepStrictEqual(
|
assert.deepStrictEqual(
|
||||||
Object.keys(constants).sort(), ['crypto', 'fs', 'os', 'trace', 'zlib']
|
Object.keys(constants).sort(), ['crypto', 'fs', 'internal', 'os', 'trace', 'zlib']
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.deepStrictEqual(
|
assert.deepStrictEqual(
|
||||||
@ -28,6 +28,6 @@ function test(obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[
|
[
|
||||||
constants, constants.crypto, constants.fs, constants.os, constants.trace,
|
constants, constants.crypto, constants.fs, constants.internal, constants.os, constants.trace,
|
||||||
constants.zlib, constants.os.dlopen, constants.os.errno, constants.os.signals,
|
constants.zlib, constants.os.dlopen, constants.os.errno, constants.os.signals,
|
||||||
].forEach(test);
|
].forEach(test);
|
||||||
|
@ -6,3 +6,72 @@ const assert = require('assert');
|
|||||||
// Check if the two constants accepted by chmod() on Windows are defined.
|
// Check if the two constants accepted by chmod() on Windows are defined.
|
||||||
assert.notStrictEqual(fs.constants.S_IRUSR, undefined);
|
assert.notStrictEqual(fs.constants.S_IRUSR, undefined);
|
||||||
assert.notStrictEqual(fs.constants.S_IWUSR, undefined);
|
assert.notStrictEqual(fs.constants.S_IWUSR, undefined);
|
||||||
|
|
||||||
|
// Check null prototype.
|
||||||
|
assert.strictEqual(Object.getPrototypeOf(fs.constants), null);
|
||||||
|
|
||||||
|
const knownFsConstantNames = [
|
||||||
|
'UV_FS_SYMLINK_DIR',
|
||||||
|
'UV_FS_SYMLINK_JUNCTION',
|
||||||
|
'O_RDONLY',
|
||||||
|
'O_WRONLY',
|
||||||
|
'O_RDWR',
|
||||||
|
'UV_DIRENT_UNKNOWN',
|
||||||
|
'UV_DIRENT_FILE',
|
||||||
|
'UV_DIRENT_DIR',
|
||||||
|
'UV_DIRENT_LINK',
|
||||||
|
'UV_DIRENT_FIFO',
|
||||||
|
'UV_DIRENT_SOCKET',
|
||||||
|
'UV_DIRENT_CHAR',
|
||||||
|
'UV_DIRENT_BLOCK',
|
||||||
|
'S_IFMT',
|
||||||
|
'S_IFREG',
|
||||||
|
'S_IFDIR',
|
||||||
|
'S_IFCHR',
|
||||||
|
'S_IFBLK',
|
||||||
|
'S_IFIFO',
|
||||||
|
'S_IFLNK',
|
||||||
|
'S_IFSOCK',
|
||||||
|
'O_CREAT',
|
||||||
|
'O_EXCL',
|
||||||
|
'UV_FS_O_FILEMAP',
|
||||||
|
'O_NOCTTY',
|
||||||
|
'O_TRUNC',
|
||||||
|
'O_APPEND',
|
||||||
|
'O_DIRECTORY',
|
||||||
|
'O_EXCL',
|
||||||
|
'O_NOATIME',
|
||||||
|
'O_NOFOLLOW',
|
||||||
|
'O_SYNC',
|
||||||
|
'O_DSYNC',
|
||||||
|
'O_SYMLINK',
|
||||||
|
'O_DIRECT',
|
||||||
|
'O_NONBLOCK',
|
||||||
|
'S_IRWXU',
|
||||||
|
'S_IRUSR',
|
||||||
|
'S_IWUSR',
|
||||||
|
'S_IXUSR',
|
||||||
|
'S_IRWXG',
|
||||||
|
'S_IRGRP',
|
||||||
|
'S_IWGRP',
|
||||||
|
'S_IXGRP',
|
||||||
|
'S_IRWXO',
|
||||||
|
'S_IROTH',
|
||||||
|
'S_IWOTH',
|
||||||
|
'S_IXOTH',
|
||||||
|
'F_OK',
|
||||||
|
'R_OK',
|
||||||
|
'W_OK',
|
||||||
|
'X_OK',
|
||||||
|
'UV_FS_COPYFILE_EXCL',
|
||||||
|
'COPYFILE_EXCL',
|
||||||
|
'UV_FS_COPYFILE_FICLONE',
|
||||||
|
'COPYFILE_FICLONE',
|
||||||
|
'UV_FS_COPYFILE_FICLONE_FORCE',
|
||||||
|
'COPYFILE_FICLONE_FORCE',
|
||||||
|
];
|
||||||
|
const fsConstantNames = Object.keys(fs.constants);
|
||||||
|
const unknownFsConstantNames = fsConstantNames.filter((constant) => {
|
||||||
|
return !knownFsConstantNames.includes(constant);
|
||||||
|
});
|
||||||
|
assert.deepStrictEqual(unknownFsConstantNames, [], `Unknown fs.constants: ${unknownFsConstantNames.join(', ')}`);
|
||||||
|
6
typings/internalBinding/constants.d.ts
vendored
6
typings/internalBinding/constants.d.ts
vendored
@ -191,8 +191,6 @@ export interface ConstantsBinding {
|
|||||||
COPYFILE_FICLONE: 2;
|
COPYFILE_FICLONE: 2;
|
||||||
UV_FS_COPYFILE_FICLONE_FORCE: 4;
|
UV_FS_COPYFILE_FICLONE_FORCE: 4;
|
||||||
COPYFILE_FICLONE_FORCE: 4;
|
COPYFILE_FICLONE_FORCE: 4;
|
||||||
EXTENSIONLESS_FORMAT_JAVASCRIPT: 0;
|
|
||||||
EXTENSIONLESS_FORMAT_WASM: 1;
|
|
||||||
};
|
};
|
||||||
crypto: {
|
crypto: {
|
||||||
OPENSSL_VERSION_NUMBER: 269488319;
|
OPENSSL_VERSION_NUMBER: 269488319;
|
||||||
@ -389,4 +387,8 @@ export interface ConstantsBinding {
|
|||||||
TRACE_EVENT_PHASE_LEAVE_CONTEXT: 41;
|
TRACE_EVENT_PHASE_LEAVE_CONTEXT: 41;
|
||||||
TRACE_EVENT_PHASE_LINK_IDS: 61;
|
TRACE_EVENT_PHASE_LINK_IDS: 61;
|
||||||
};
|
};
|
||||||
|
internal: {
|
||||||
|
EXTENSIONLESS_FORMAT_JAVASCRIPT: 0;
|
||||||
|
EXTENSIONLESS_FORMAT_WASM: 1;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
2
typings/internalBinding/fs.d.ts
vendored
2
typings/internalBinding/fs.d.ts
vendored
@ -235,7 +235,7 @@ declare namespace InternalFSBinding {
|
|||||||
function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: undefined, ctx: FSSyncContext): number;
|
function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: undefined, ctx: FSSyncContext): number;
|
||||||
function writeString(fd: number, value: string, pos: unknown, encoding: unknown, usePromises: typeof kUsePromises): Promise<number>;
|
function writeString(fd: number, value: string, pos: unknown, encoding: unknown, usePromises: typeof kUsePromises): Promise<number>;
|
||||||
|
|
||||||
function getFormatOfExtensionlessFile(url: string): ConstantsBinding['fs'];
|
function getFormatOfExtensionlessFile(url: string): ConstantsBinding['internal'];
|
||||||
|
|
||||||
function writeFileUtf8(path: string, data: string, flag: number, mode: number): void;
|
function writeFileUtf8(path: string, data: string, flag: number, mode: number): void;
|
||||||
function writeFileUtf8(fd: number, data: string, flag: number, mode: number): void;
|
function writeFileUtf8(fd: number, data: string, flag: number, mode: number): void;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user