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.2.0

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,7 @@

# 0.2.0 (2018-11-27)
- **[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)

@@ -2,0 +8,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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBMEc7QUFDMUcsNERBQW1DO0FBQ25DLGdEQUEyQjtBQUMzQiw4Q0FBc0I7QUF5QnRCLGtCQUF5QixTQUFpQjtJQUN4QyxPQUFPLG9CQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUZELDRCQUVDO0FBRUQsb0JBQTJCLFNBQWlCO0lBQzFDLE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxrQkFBVyxFQUFFLG9CQUFhLEVBQUUsY0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRkQsZ0NBRUM7QUFFRCxzQkFBNkIsU0FBaUI7SUFDNUMsT0FBTyxLQUFLLENBQUMsU0FBUyxFQUFFLG9CQUFhLEVBQUUsc0JBQWUsRUFBRSxjQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFGRCxvQ0FFQztBQUVELGVBQ0UsU0FBaUIsRUFDakIsTUFBd0IsRUFDeEIsUUFBNEIsRUFDNUIsY0FBeUM7SUFFekMsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDN0IsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFNBQVM7WUFDVCxVQUFVLEVBQUUsS0FBSztZQUNqQixHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztLQUNIO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFZLElBQUksYUFBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQy9CLE9BQU8sRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFNBQVM7WUFDVCxVQUFVLEVBQUUsS0FBSztZQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDaEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1NBQzFCLENBQUM7S0FDSDtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO1lBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLEdBQUcsQ0FBQztTQUNYO0tBQ0Y7QUFDSCxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbVBvc2l4UGF0aCwgZnJvbVN5c1BhdGgsIGZyb21XaW5kb3dzUGF0aCwgdG9Qb3NpeFBhdGgsIHRvU3lzUGF0aCwgdG9XaW5kb3dzUGF0aCB9IGZyb20gXCJmdXJpXCI7XG5pbXBvcnQgaXNXaW5kb3dzIGZyb20gXCJpcy13aW5kb3dzXCI7XG5pbXBvcnQgc3lzUGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHVybCBmcm9tIFwidXJsXCI7XG5cbmV4cG9ydCB0eXBlIE1vZHVsZVR5cGUgPSBcImNqc1wiIHwgXCJlc21cIjtcblxuZXhwb3J0IHR5cGUgU2NyaXB0VXJsID0gRmlsZVNjcmlwdFVybCB8IEludGVybmFsU2NyaXB0VXJsO1xuXG4vKipcbiAqIFJlZ3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlU2NyaXB0VXJsIHtcbiAgaXNSZWd1bGFyRmlsZTogdHJ1ZTtcbiAgc2NyaXB0VXJsOiBzdHJpbmc7XG4gIG1vZHVsZVR5cGU6IE1vZHVsZVR5cGU7XG4gIHVybDogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgb3Igbm9uLWZpbGUgVVJMLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsU2NyaXB0VXJsIHtcbiAgaXNSZWd1bGFyRmlsZTogZmFsc2U7XG4gIHNjcmlwdFVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTeXMoc2NyaXB0VXJsOiBzdHJpbmcpOiBTY3JpcHRVcmwge1xuICByZXR1cm4gaXNXaW5kb3dzKCkgPyBwYXJzZVdpbmRvd3Moc2NyaXB0VXJsKSA6IHBhcnNlUG9zaXgoc2NyaXB0VXJsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUG9zaXgoc2NyaXB0VXJsOiBzdHJpbmcpOiBTY3JpcHRVcmwge1xuICByZXR1cm4gcGFyc2Uoc2NyaXB0VXJsLCB0b1Bvc2l4UGF0aCwgZnJvbVBvc2l4UGF0aCwgc3lzUGF0aC5wb3NpeC5pc0Fic29sdXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2luZG93cyhzY3JpcHRVcmw6IHN0cmluZyk6IFNjcmlwdFVybCB7XG4gIHJldHVybiBwYXJzZShzY3JpcHRVcmwsIHRvV2luZG93c1BhdGgsIGZyb21XaW5kb3dzUGF0aCwgc3lzUGF0aC53aW4zMi5pc0Fic29sdXRlKTtcbn1cblxuZnVuY3Rpb24gcGFyc2UoXG4gIHNjcmlwdFVybDogc3RyaW5nLFxuICB0b1BhdGg6IHR5cGVvZiB0b1N5c1BhdGgsXG4gIGZyb21QYXRoOiB0eXBlb2YgZnJvbVN5c1BhdGgsXG4gIGlzQWJzb2x1dGVQYXRoOiB0eXBlb2Ygc3lzUGF0aC5pc0Fic29sdXRlLFxuKTogU2NyaXB0VXJsIHtcbiAgaWYgKGlzQWJzb2x1dGVQYXRoKHNjcmlwdFVybCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNSZWd1bGFyRmlsZTogdHJ1ZSxcbiAgICAgIHNjcmlwdFVybCxcbiAgICAgIG1vZHVsZVR5cGU6IFwiY2pzXCIsXG4gICAgICB1cmw6IGZyb21QYXRoKHNjcmlwdFVybCkuaHJlZixcbiAgICAgIHBhdGg6IHNjcmlwdFVybCxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1cmxPYmo6IHVybC5VUkwgPSBuZXcgdXJsLlVSTChzY3JpcHRVcmwpO1xuICAgIGlmICh1cmxPYmoucHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgICAgcmV0dXJuIHtpc1JlZ3VsYXJGaWxlOiBmYWxzZSwgc2NyaXB0VXJsfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUmVndWxhckZpbGU6IHRydWUsXG4gICAgICBzY3JpcHRVcmwsXG4gICAgICBtb2R1bGVUeXBlOiBcImVzbVwiLFxuICAgICAgdXJsOiB1cmxPYmouaHJlZixcbiAgICAgIHBhdGg6IHRvUGF0aCh1cmxPYmouaHJlZiksXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5jb2RlID09PSBcIkVSUl9JTlZBTElEX1VSTFwiKSB7XG4gICAgICByZXR1cm4ge2lzUmVndWxhckZpbGU6IGZhbHNlLCBzY3JpcHRVcmx9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBNkQ7QUFDN0QsNERBQW1DO0FBdUNuQyxrQkFBeUIsR0FBVztJQUNsQyxPQUFPLG9CQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELDRCQUVDO0FBRUQsb0JBQTJCLEdBQVc7SUFDcEMsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLGtCQUFXLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRkQsZ0NBRUM7QUFFRCxzQkFBNkIsR0FBVztJQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsb0JBQWEsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFGRCxvQ0FFQztBQUVELGVBQ0UsR0FBVyxFQUNYLE1BQXdCO0lBRXhCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM3QixPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO0tBQ2xEO1NBQU07UUFDTCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQztLQUNoQztBQUNILENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b1Bvc2l4UGF0aCwgdG9TeXNQYXRoLCB0b1dpbmRvd3NQYXRoIH0gZnJvbSBcImZ1cmlcIjtcbmltcG9ydCBpc1dpbmRvd3MgZnJvbSBcImlzLXdpbmRvd3NcIjtcblxuZXhwb3J0IHR5cGUgUGFyc2VkU2NyaXB0VXJsID0gRmlsZVNjcmlwdFVybCB8IEludGVybmFsU2NyaXB0VXJsO1xuXG4vKipcbiAqIFJlZ3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlU2NyaXB0VXJsIHtcbiAgLyoqXG4gICAqIElucHV0IFVSTFxuICAgKi9cbiAgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGlzIGlzIGEgbm9uLWludGVybmFsIGBmaWxlOi8vYCBVUkwgKGFsd2F5cyBgdHJ1ZWApLlxuICAgKi9cbiAgaXNGaWxlVXJsOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBDb3JyZXNwb25kaW5nIGZpbGUgcGF0aC5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBvciBub24tZmlsZSBVUkwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxTY3JpcHRVcmwge1xuICAvKipcbiAgICogSW5wdXQgVVJMXG4gICAqL1xuICB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSBub24taW50ZXJuYWwgYGZpbGU6Ly9gIFVSTCAoYWx3YXlzIGBmYWxzZWApLlxuICAgKi9cbiAgaXNGaWxlVXJsOiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3lzKHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIGlzV2luZG93cygpID8gcGFyc2VXaW5kb3dzKHVybCkgOiBwYXJzZVBvc2l4KHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBvc2l4KHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIHBhcnNlKHVybCwgdG9Qb3NpeFBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaW5kb3dzKHVybDogc3RyaW5nKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgcmV0dXJuIHBhcnNlKHVybCwgdG9XaW5kb3dzUGF0aCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlKFxuICB1cmw6IHN0cmluZyxcbiAgdG9QYXRoOiB0eXBlb2YgdG9TeXNQYXRoLFxuKTogUGFyc2VkU2NyaXB0VXJsIHtcbiAgaWYgKHVybC5zdGFydHNXaXRoKFwiZmlsZTovL1wiKSkge1xuICAgIHJldHVybiB7dXJsLCBpc0ZpbGVVcmw6IHRydWUsIHBhdGg6IHRvUGF0aCh1cmwpfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge3VybCwgaXNGaWxlVXJsOiBmYWxzZX07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
{
"name": "node-script-url",
"version": "0.1.2",
"description": "Parser for Node's V8 script URL values",
"version": "0.2.0",
"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": "ea0d43c5bcd1058c815b587af98f0b3827bcee23"
"gitHead": "bbe9cf2e0a7a20b0c2a937a7ef97549f66b567a3"
}

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

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

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