You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

node-script-url

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-script-url - npm Package Compare versions

Comparing version

to
0.1.2-build.21

84

_src/index.ts

@@ -1,10 +0,6 @@

import { fromPosixPath, fromSysPath, fromWindowsPath, toPosixPath, toSysPath, toWindowsPath } from "furi";
import { toPosixPath, toSysPath, toWindowsPath } from "furi";
import isWindows from "is-windows";
import sysPath from "path";
import url from "url";
export type ModuleType = "cjs" | "esm";
export type ParsedScriptUrl = FileScriptUrl | InternalScriptUrl;
export type ScriptUrl = FileScriptUrl | InternalScriptUrl;
/**

@@ -14,6 +10,15 @@ * Regular file.

export interface FileScriptUrl {
isRegularFile: true;
scriptUrl: string;
moduleType: ModuleType;
/**
* Input URL
*/
url: string;
/**
* Boolean indicating if this is a non-internal `file://` URL (always `true`).
*/
isFileUrl: true;
/**
* Corresponding file path.
*/
path: string;

@@ -26,53 +31,34 @@ }

export interface InternalScriptUrl {
isRegularFile: false;
scriptUrl: string;
/**
* Input URL
*/
url: string;
/**
* Boolean indicating if this is a non-internal `file://` URL (always `false`).
*/
isFileUrl: false;
}
export function parseSys(scriptUrl: string): ScriptUrl {
return isWindows ? parseWindows(scriptUrl) : parsePosix(scriptUrl);
export function parseSys(url: string): ParsedScriptUrl {
return isWindows() ? parseWindows(url) : parsePosix(url);
}
export function parsePosix(scriptUrl: string): ScriptUrl {
return parse(scriptUrl, toPosixPath, fromPosixPath, sysPath.posix.isAbsolute);
export function parsePosix(url: string): ParsedScriptUrl {
return parse(url, toPosixPath);
}
export function parseWindows(scriptUrl: string): ScriptUrl {
return parse(scriptUrl, toWindowsPath, fromWindowsPath, sysPath.win32.isAbsolute);
export function parseWindows(url: string): ParsedScriptUrl {
return parse(url, toWindowsPath);
}
function parse(
scriptUrl: string,
url: string,
toPath: typeof toSysPath,
fromPath: typeof fromSysPath,
isAbsolutePath: typeof sysPath.isAbsolute,
): ScriptUrl {
if (isAbsolutePath(scriptUrl)) {
return {
isRegularFile: true,
scriptUrl,
moduleType: "cjs",
url: fromPath(scriptUrl).href,
path: scriptUrl,
};
): ParsedScriptUrl {
if (url.startsWith("file://")) {
return {url, isFileUrl: true, path: toPath(url)};
} else {
return {url, isFileUrl: false};
}
try {
const urlObj: url.URL = new url.URL(scriptUrl);
if (urlObj.protocol !== "file:") {
return {isRegularFile: false, scriptUrl};
}
return {
isRegularFile: true,
scriptUrl,
moduleType: "esm",
url: urlObj.href,
path: toPath(urlObj.href),
};
} catch (err) {
if (err.code === "ERR_INVALID_URL") {
return {isRegularFile: false, scriptUrl};
} else {
throw err;
}
}
}

@@ -0,1 +1,11 @@

# Next
- **[Breaking change]** Update lib for Node 11. The new result only has
`url` (input), `isFileUrl` (boolean indicating a regular `file://` URL) and
an eventual `path`.
# 0.1.2 (2018-10-20)
- **[Fix]** Fix OS detection
# 0.1.1 (2018-10-18)

@@ -2,0 +12,0 @@

@@ -1,3 +0,2 @@

export declare type ModuleType = "cjs" | "esm";
export declare type ScriptUrl = FileScriptUrl | InternalScriptUrl;
export declare type ParsedScriptUrl = FileScriptUrl | InternalScriptUrl;
/**

@@ -7,6 +6,13 @@ * Regular file.

export interface FileScriptUrl {
isRegularFile: true;
scriptUrl: string;
moduleType: ModuleType;
/**
* Input URL
*/
url: string;
/**
* Boolean indicating if this is a non-internal `file://` URL (always `true`).
*/
isFileUrl: true;
/**
* Corresponding file path.
*/
path: string;

@@ -18,7 +24,13 @@ }

export interface InternalScriptUrl {
isRegularFile: false;
scriptUrl: string;
/**
* Input URL
*/
url: string;
/**
* Boolean indicating if this is a non-internal `file://` URL (always `false`).
*/
isFileUrl: false;
}
export declare function parseSys(scriptUrl: string): ScriptUrl;
export declare function parsePosix(scriptUrl: string): ScriptUrl;
export declare function parseWindows(scriptUrl: string): ScriptUrl;
export declare function parseSys(url: string): ParsedScriptUrl;
export declare function parsePosix(url: string): ParsedScriptUrl;
export declare function parseWindows(url: string): ParsedScriptUrl;

@@ -8,49 +8,23 @@ "use strict";

const is_windows_1 = __importDefault(require("is-windows"));
const path_1 = __importDefault(require("path"));
const url_1 = __importDefault(require("url"));
function parseSys(scriptUrl) {
return is_windows_1.default ? parseWindows(scriptUrl) : parsePosix(scriptUrl);
function parseSys(url) {
return is_windows_1.default() ? parseWindows(url) : parsePosix(url);
}
exports.parseSys = parseSys;
function parsePosix(scriptUrl) {
return parse(scriptUrl, furi_1.toPosixPath, furi_1.fromPosixPath, path_1.default.posix.isAbsolute);
function parsePosix(url) {
return parse(url, furi_1.toPosixPath);
}
exports.parsePosix = parsePosix;
function parseWindows(scriptUrl) {
return parse(scriptUrl, furi_1.toWindowsPath, furi_1.fromWindowsPath, path_1.default.win32.isAbsolute);
function parseWindows(url) {
return parse(url, furi_1.toWindowsPath);
}
exports.parseWindows = parseWindows;
function parse(scriptUrl, toPath, fromPath, isAbsolutePath) {
if (isAbsolutePath(scriptUrl)) {
return {
isRegularFile: true,
scriptUrl,
moduleType: "cjs",
url: fromPath(scriptUrl).href,
path: scriptUrl,
};
function parse(url, toPath) {
if (url.startsWith("file://")) {
return { url, isFileUrl: true, path: toPath(url) };
}
try {
const urlObj = new url_1.default.URL(scriptUrl);
if (urlObj.protocol !== "file:") {
return { isRegularFile: false, scriptUrl };
}
return {
isRegularFile: true,
scriptUrl,
moduleType: "esm",
url: urlObj.href,
path: toPath(urlObj.href),
};
else {
return { url, isFileUrl: false };
}
catch (err) {
if (err.code === "ERR_INVALID_URL") {
return { isRegularFile: false, scriptUrl };
}
else {
throw err;
}
}
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBMEc7QUFDMUcsNERBQW1DO0FBQ25DLGdEQUEyQjtBQUMzQiw4Q0FBc0I7QUF5QnRCLGtCQUF5QixTQUFpQjtJQUN4QyxPQUFPLG9CQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFGRCw0QkFFQztBQUVELG9CQUEyQixTQUFpQjtJQUMxQyxPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQVcsRUFBRSxvQkFBYSxFQUFFLGNBQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELGdDQUVDO0FBRUQsc0JBQTZCLFNBQWlCO0lBQzVDLE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBYSxFQUFFLHNCQUFlLEVBQUUsY0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBRkQsb0NBRUM7QUFFRCxlQUNFLFNBQWlCLEVBQ2pCLE1BQXdCLEVBQ3hCLFFBQTRCLEVBQzVCLGNBQXlDO0lBRXpDLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzdCLE9BQU87WUFDTCxhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTO1lBQ1QsVUFBVSxFQUFFLEtBQUs7WUFDakIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJO1lBQzdCLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUM7S0FDSDtJQUVELElBQUk7UUFDRixNQUFNLE1BQU0sR0FBWSxJQUFJLGFBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUMvQixPQUFPLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQztTQUMxQztRQUNELE9BQU87WUFDTCxhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTO1lBQ1QsVUFBVSxFQUFFLEtBQUs7WUFDakIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2hCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMxQixDQUFDO0tBQ0g7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtZQUNsQyxPQUFPLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxHQUFHLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21Qb3NpeFBhdGgsIGZyb21TeXNQYXRoLCBmcm9tV2luZG93c1BhdGgsIHRvUG9zaXhQYXRoLCB0b1N5c1BhdGgsIHRvV2luZG93c1BhdGggfSBmcm9tIFwiZnVyaVwiO1xuaW1wb3J0IGlzV2luZG93cyBmcm9tIFwiaXMtd2luZG93c1wiO1xuaW1wb3J0IHN5c1BhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB1cmwgZnJvbSBcInVybFwiO1xuXG5leHBvcnQgdHlwZSBNb2R1bGVUeXBlID0gXCJjanNcIiB8IFwiZXNtXCI7XG5cbmV4cG9ydCB0eXBlIFNjcmlwdFVybCA9IEZpbGVTY3JpcHRVcmwgfCBJbnRlcm5hbFNjcmlwdFVybDtcblxuLyoqXG4gKiBSZWd1bGFyIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNjcmlwdFVybCB7XG4gIGlzUmVndWxhckZpbGU6IHRydWU7XG4gIHNjcmlwdFVybDogc3RyaW5nO1xuICBtb2R1bGVUeXBlOiBNb2R1bGVUeXBlO1xuICB1cmw6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVybmFsIG9yIG5vbi1maWxlIFVSTC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFNjcmlwdFVybCB7XG4gIGlzUmVndWxhckZpbGU6IGZhbHNlO1xuICBzY3JpcHRVcmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3lzKHNjcmlwdFVybDogc3RyaW5nKTogU2NyaXB0VXJsIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHBhcnNlV2luZG93cyhzY3JpcHRVcmwpIDogcGFyc2VQb3NpeChzY3JpcHRVcmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3NpeChzY3JpcHRVcmw6IHN0cmluZyk6IFNjcmlwdFVybCB7XG4gIHJldHVybiBwYXJzZShzY3JpcHRVcmwsIHRvUG9zaXhQYXRoLCBmcm9tUG9zaXhQYXRoLCBzeXNQYXRoLnBvc2l4LmlzQWJzb2x1dGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaW5kb3dzKHNjcmlwdFVybDogc3RyaW5nKTogU2NyaXB0VXJsIHtcbiAgcmV0dXJuIHBhcnNlKHNjcmlwdFVybCwgdG9XaW5kb3dzUGF0aCwgZnJvbVdpbmRvd3NQYXRoLCBzeXNQYXRoLndpbjMyLmlzQWJzb2x1dGUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShcbiAgc2NyaXB0VXJsOiBzdHJpbmcsXG4gIHRvUGF0aDogdHlwZW9mIHRvU3lzUGF0aCxcbiAgZnJvbVBhdGg6IHR5cGVvZiBmcm9tU3lzUGF0aCxcbiAgaXNBYnNvbHV0ZVBhdGg6IHR5cGVvZiBzeXNQYXRoLmlzQWJzb2x1dGUsXG4pOiBTY3JpcHRVcmwge1xuICBpZiAoaXNBYnNvbHV0ZVBhdGgoc2NyaXB0VXJsKSkge1xuICAgIHJldHVybiB7XG4gICAgICBpc1JlZ3VsYXJGaWxlOiB0cnVlLFxuICAgICAgc2NyaXB0VXJsLFxuICAgICAgbW9kdWxlVHlwZTogXCJjanNcIixcbiAgICAgIHVybDogZnJvbVBhdGgoc2NyaXB0VXJsKS5ocmVmLFxuICAgICAgcGF0aDogc2NyaXB0VXJsLFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHVybE9iajogdXJsLlVSTCA9IG5ldyB1cmwuVVJMKHNjcmlwdFVybCk7XG4gICAgaWYgKHVybE9iai5wcm90b2NvbCAhPT0gXCJmaWxlOlwiKSB7XG4gICAgICByZXR1cm4ge2lzUmVndWxhckZpbGU6IGZhbHNlLCBzY3JpcHRVcmx9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNSZWd1bGFyRmlsZTogdHJ1ZSxcbiAgICAgIHNjcmlwdFVybCxcbiAgICAgIG1vZHVsZVR5cGU6IFwiZXNtXCIsXG4gICAgICB1cmw6IHVybE9iai5ocmVmLFxuICAgICAgcGF0aDogdG9QYXRoKHVybE9iai5ocmVmKSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyLmNvZGUgPT09IFwiRVJSX0lOVkFMSURfVVJMXCIpIHtcbiAgICAgIHJldHVybiB7aXNSZWd1bGFyRmlsZTogZmFsc2UsIHNjcmlwdFVybH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBNkQ7QUFDN0QsNERBQW1DO0FBdUNuQyxrQkFBeUIsR0FBVztJQUNsQyxPQUFPLG9CQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELDRCQUVDO0FBRUQsb0JBQTJCLEdBQVc7SUFDcEMsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLGtCQUFXLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRkQsZ0NBRUM7QUFFRCxzQkFBNkIsR0FBVztJQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsb0JBQWEsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFGRCxvQ0FFQztBQUVELGVBQ0UsR0FBVyxFQUNYLE1BQXdCO0lBRXhCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM3QixPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO0tBQ2xEO1NBQU07UUFDTCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQztLQUNoQztBQUNILENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b1Bvc2l4UGF0aCwgdG9TeXNQYXRoLCB0b1dpbmRvd3NQYXRoIH0gZnJvbSBcImZ1cmlcIjtcbmltcG9ydCBpc1dpbmRvd3MgZnJvbSBcImlzLXdpbmRvd3NcIjtcblxuZXhwb3J0IHR5cGUgUGFyc2VkU2NyaXB0VXJsID0gRmlsZVNjcmlwdFVybCB8IEludGVybmFsU2NyaXB0VXJsO1xuXG4vKipcbiAqIFJlZ3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlU2NyaXB0VXJsIHtcbiAgLyoqXG4gICAqIElucHV0IFVSTFxuICAgKi9cbiAgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGlzIGlzIGEgbm9uLWludGVybmFsIGBmaWxlOi8vYCBVUkwgKGFsd2F5cyBgdHJ1ZWApLlxuICAgKi9cbiAgaXNGaWxlVXJsOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBDb3JyZXNwb25kaW5nIGZpbGUgcGF0aC5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBvciBub24tZmlsZSBVUkwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxTY3JpcHRVcmwge1xuICAvKipcbiAgICogSW5wdXQgVVJMXG4gICAqL1xuICB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSBub24taW50ZXJuYWwgYGZpbGU6Ly9gIFVSTCAoYWx3YXlzIGBmYWxzZWApLlxuICAgKi9cbiAgaXNGaWxlVXJsOiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3lzKHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIGlzV2luZG93cygpID8gcGFyc2VXaW5kb3dzKHVybCkgOiBwYXJzZVBvc2l4KHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBvc2l4KHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIHBhcnNlKHVybCwgdG9Qb3NpeFBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaW5kb3dzKHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIHBhcnNlKHVybCwgdG9XaW5kb3dzUGF0aCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlKFxuICB1cmw6IHN0cmluZyxcbiAgdG9QYXRoOiB0eXBlb2YgdG9TeXNQYXRoLFxuKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgaWYgKHVybC5zdGFydHNXaXRoKFwiZmlsZTovL1wiKSkge1xuICAgIHJldHVybiB7dXJsLCBpc0ZpbGVVcmw6IHRydWUsIHBhdGg6IHRvUGF0aCh1cmwpfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge3VybCwgaXNGaWxlVXJsOiBmYWxzZX07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
{
"name": "node-script-url",
"version": "0.1.1",
"description": "Parser for Node's V8 script URL values",
"version": "0.1.2-build.21",
"description": "Parse Node script URLs",
"private": false,

@@ -20,2 +20,5 @@ "main": "index",

},
"engines": {
"node": ">=10.12.0"
},
"author": "Charles Samborski <demurgos@demurgos.net> (https://demurgos.net)",

@@ -56,3 +59,3 @@ "license": "MIT",

},
"gitHead": "bac1945b402e5bf029a32c5ee1f10d84073ce588"
"gitHead": "6796bc4213809e2018666c8135da95af0d31872b"
}

@@ -8,3 +8,3 @@ # node-script-url

Helpers for Node's script URLs.
Parse Node script URLs.

@@ -11,0 +11,0 @@ ## Installation