Skip to content

bug with const enum #798

@bluelovers

Description

@bluelovers

run .ts with ts-node

index.ts:29
		if (realpath === getCWD.EnumRealPath.FS)
                                       ^
TypeError: Cannot read property 'FS' of undefined
    at getCWD (index.ts:29:40)
    at Object.<anonymous> (index.ts:57:13)
    at Module._compile (internal/modules/cjs/loader.js:738:30)
    at Module.m._compile (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:414:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:749:10)
    at Object.require.extensions.(anonymous function) [as .ts] (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:417:12)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)

ts file

import fs = require('fs');
import path = require('path');

export function getCWD(cwd?: string, realpath?: boolean | getCWD.EnumRealPath, failback?: string | (() => string)): string
{
	if (notEmptyString(cwd))
	{
		cwd = cwd.trim();
	}
	else if (typeof failback === 'function')
	{
		cwd = failback();
	}
	else if (notEmptyString(failback))
	{
		cwd = failback;
	}
	else if (cwd == null)
	{
		return process.cwd()
	}
	else
	{
		cwd = undefined;
	}

	if (realpath && cwd != null)
	{
		if (realpath === getCWD.EnumRealPath.FS)
		{
			return fs.realpathSync(cwd);
		}

		return path.resolve(cwd);
	}

	return cwd
}

export declare namespace getCWD
{
	export const enum EnumRealPath
	{
		NONE = 0,
		FS = 1,
		PATH = 2
	}
}

export function notEmptyString(s: string)
{
	return typeof s === 'string' && s.trim() !== ''
}

export default exports as typeof import('./index');

console.log(getCWD(null, true, 'll'));

typescript output js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
function getCWD(cwd, realpath, failback) {
    if (notEmptyString(cwd)) {
        cwd = cwd.trim();
    }
    else if (typeof failback === 'function') {
        cwd = failback();
    }
    else if (notEmptyString(failback)) {
        cwd = failback;
    }
    else if (cwd == null) {
        return process.cwd();
    }
    else {
        cwd = undefined;
    }
    if (realpath && cwd != null) {
        if (realpath === 1 /* FS */) {
            return fs.realpathSync(cwd);
        }
        return path.resolve(cwd);
    }
    return cwd;
}
exports.getCWD = getCWD;
function notEmptyString(s) {
    return typeof s === 'string' && s.trim() !== '';
}
exports.notEmptyString = notEmptyString;
exports.default = exports;
console.log(getCWD(null, true, 'll'));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUEwQjtBQUMxQiw2QkFBOEI7QUFFOUIsU0FBZ0IsTUFBTSxDQUFDLEdBQVksRUFBRSxRQUF3QyxFQUFFLFFBQWtDO0lBRWhILElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUN2QjtRQUNDLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDakI7U0FDSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFDdkM7UUFDQyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7S0FDakI7U0FDSSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFDakM7UUFDQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0tBQ2Y7U0FDSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQ3BCO1FBQ0MsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7S0FDcEI7U0FFRDtRQUNDLEdBQUcsR0FBRyxTQUFTLENBQUM7S0FDaEI7SUFFRCxJQUFJLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxFQUMzQjtRQUNDLElBQUksUUFBUSxlQUEyQixFQUN2QztZQUNDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN6QjtJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ1gsQ0FBQztBQWxDRCx3QkFrQ0M7QUFZRCxTQUFnQixjQUFjLENBQUMsQ0FBUztJQUV2QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBQ2hELENBQUM7QUFIRCx3Q0FHQztBQUVELGtCQUFlLE9BQW1DLENBQUM7QUFFbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q1dEKGN3ZD86IHN0cmluZywgcmVhbHBhdGg/OiBib29sZWFuIHwgZ2V0Q1dELkVudW1SZWFsUGF0aCwgZmFpbGJhY2s/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSk6IHN0cmluZ1xue1xuXHRpZiAobm90RW1wdHlTdHJpbmcoY3dkKSlcblx0e1xuXHRcdGN3ZCA9IGN3ZC50cmltKCk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGZhaWxiYWNrID09PSAnZnVuY3Rpb24nKVxuXHR7XG5cdFx0Y3dkID0gZmFpbGJhY2soKTtcblx0fVxuXHRlbHNlIGlmIChub3RFbXB0eVN0cmluZyhmYWlsYmFjaykpXG5cdHtcblx0XHRjd2QgPSBmYWlsYmFjaztcblx0fVxuXHRlbHNlIGlmIChjd2QgPT0gbnVsbClcblx0e1xuXHRcdHJldHVybiBwcm9jZXNzLmN3ZCgpXG5cdH1cblx0ZWxzZVxuXHR7XG5cdFx0Y3dkID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHJlYWxwYXRoICYmIGN3ZCAhPSBudWxsKVxuXHR7XG5cdFx0aWYgKHJlYWxwYXRoID09PSBnZXRDV0QuRW51bVJlYWxQYXRoLkZTKVxuXHRcdHtcblx0XHRcdHJldHVybiBmcy5yZWFscGF0aFN5bmMoY3dkKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcGF0aC5yZXNvbHZlKGN3ZCk7XG5cdH1cblxuXHRyZXR1cm4gY3dkXG59XG5cbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSBnZXRDV0Rcbntcblx0ZXhwb3J0IGNvbnN0IGVudW0gRW51bVJlYWxQYXRoXG5cdHtcblx0XHROT05FID0gMCxcblx0XHRGUyA9IDEsXG5cdFx0UEFUSCA9IDJcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm90RW1wdHlTdHJpbmcoczogc3RyaW5nKVxue1xuXHRyZXR1cm4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpICE9PSAnJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBleHBvcnRzIGFzIHR5cGVvZiBpbXBvcnQoJy4vaW5kZXgnKTtcblxuY29uc29sZS5sb2coZ2V0Q1dEKG51bGwsIHRydWUsICdsbCcpKTtcbiJdfQ==

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions