From 69a68890c52528807d9fcc1f359c2432ed50bf15 Mon Sep 17 00:00:00 2001 From: MICHAEL JACKSON Date: Sat, 25 Nov 2017 13:54:39 -0800 Subject: [PATCH] A few more methods --- packages/unpkg/README.md | 2 ++ packages/unpkg/modules/index.js | 4 +++- .../__tests__/isBareModuleIdentifier-test.js | 17 ++++++++++------- .../__tests__/isLocalModuleIdentifier-test.js | 19 +++++++++++++++++++ .../isRemoteModuleIdentifier-test.js | 19 +++++++++++++++++++ .../modules/utils/isBareModuleIdentifier.js | 9 +++------ .../modules/utils/isLocalModuleIdentifier.js | 7 +++++++ .../modules/utils/isRemoteModuleIdentifier.js | 10 ++++++++++ 8 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 packages/unpkg/modules/utils/__tests__/isLocalModuleIdentifier-test.js create mode 100644 packages/unpkg/modules/utils/__tests__/isRemoteModuleIdentifier-test.js create mode 100644 packages/unpkg/modules/utils/isLocalModuleIdentifier.js create mode 100644 packages/unpkg/modules/utils/isRemoteModuleIdentifier.js diff --git a/packages/unpkg/README.md b/packages/unpkg/README.md index 644df75..948892e 100644 --- a/packages/unpkg/README.md +++ b/packages/unpkg/README.md @@ -1 +1,3 @@ The JavaScript API for [https://unpkg.com](unpkg). + +** Work in progress! ** diff --git a/packages/unpkg/modules/index.js b/packages/unpkg/modules/index.js index 0f98fe4..6b5c4af 100644 --- a/packages/unpkg/modules/index.js +++ b/packages/unpkg/modules/index.js @@ -1,2 +1,4 @@ exports.isBareModuleIdentifier = require("./utils/isBareModuleIdentifier") -exports.parseModuleIdentifier = require("./utils/parseModuleIdentifier") +exports.isLocalModuleIdentifier = require("./utils/isLocalModuleIdentifier") +exports.isRemoteModuleIdentifier = require("./utils/isRemoteModuleIdentifier") +exports.parseBareModuleIdentifier = require("./utils/parseBareModuleIdentifier") diff --git a/packages/unpkg/modules/utils/__tests__/isBareModuleIdentifier-test.js b/packages/unpkg/modules/utils/__tests__/isBareModuleIdentifier-test.js index efc11fb..0fe46cb 100644 --- a/packages/unpkg/modules/utils/__tests__/isBareModuleIdentifier-test.js +++ b/packages/unpkg/modules/utils/__tests__/isBareModuleIdentifier-test.js @@ -1,16 +1,19 @@ const isBareModuleIdentifier = require("../isBareModuleIdentifier") describe("isBareModuleIdentifier", () => { + it("returns false for local module identifiers", () => { + expect(isBareModuleIdentifier("/absolute-path")).toBe(false) + expect(isBareModuleIdentifier("./relative-path")).toBe(false) + }) + + it("returns false for remote module identifiers", () => { + expect(isBareModuleIdentifier("https://www.example.com/script.js")).toBe(false) + expect(isBareModuleIdentifier("//www.example.com/script.js")).toBe(false) + }) + it("returns true for bare module identifiers", () => { expect(isBareModuleIdentifier("react")).toBe(true) expect(isBareModuleIdentifier("react-dom")).toBe(true) expect(isBareModuleIdentifier("react-dom/server")).toBe(true) }) - - it("returns false for non-bare module identifiers", () => { - expect(isBareModuleIdentifier("/absolute-path")).toBe(false) - expect(isBareModuleIdentifier("./relative-path")).toBe(false) - expect(isBareModuleIdentifier("//www.example.com/script.js")).toBe(false) - expect(isBareModuleIdentifier("https://www.example.com/script.js")).toBe(false) - }) }) diff --git a/packages/unpkg/modules/utils/__tests__/isLocalModuleIdentifier-test.js b/packages/unpkg/modules/utils/__tests__/isLocalModuleIdentifier-test.js new file mode 100644 index 0000000..a263e64 --- /dev/null +++ b/packages/unpkg/modules/utils/__tests__/isLocalModuleIdentifier-test.js @@ -0,0 +1,19 @@ +const isLocalModuleIdentifier = require("../isLocalModuleIdentifier") + +describe("isLocalModuleIdentifier", () => { + it("returns true for local module identifiers", () => { + expect(isLocalModuleIdentifier("/absolute-path")).toBe(true) + expect(isLocalModuleIdentifier("./relative-path")).toBe(true) + }) + + it("returns false for remote module identifiers", () => { + expect(isLocalModuleIdentifier("https://www.example.com/script.js")).toBe(false) + expect(isLocalModuleIdentifier("//www.example.com/script.js")).toBe(false) + }) + + it("returns false for bare module identifiers", () => { + expect(isLocalModuleIdentifier("react")).toBe(false) + expect(isLocalModuleIdentifier("react-dom")).toBe(false) + expect(isLocalModuleIdentifier("react-dom/server")).toBe(false) + }) +}) diff --git a/packages/unpkg/modules/utils/__tests__/isRemoteModuleIdentifier-test.js b/packages/unpkg/modules/utils/__tests__/isRemoteModuleIdentifier-test.js new file mode 100644 index 0000000..03377db --- /dev/null +++ b/packages/unpkg/modules/utils/__tests__/isRemoteModuleIdentifier-test.js @@ -0,0 +1,19 @@ +const isRemoteModuleIdentifier = require("../isRemoteModuleIdentifier") + +describe("isRemoteModuleIdentifier", () => { + it("returns false for local module identifiers", () => { + expect(isRemoteModuleIdentifier("/absolute-path")).toBe(false) + expect(isRemoteModuleIdentifier("./relative-path")).toBe(false) + }) + + it("returns true for remote module identifiers", () => { + expect(isRemoteModuleIdentifier("https://www.example.com/script.js")).toBe(true) + expect(isRemoteModuleIdentifier("//www.example.com/script.js")).toBe(true) + }) + + it("returns false for bare module identifiers", () => { + expect(isRemoteModuleIdentifier("react")).toBe(false) + expect(isRemoteModuleIdentifier("react-dom")).toBe(false) + expect(isRemoteModuleIdentifier("react-dom/server")).toBe(false) + }) +}) diff --git a/packages/unpkg/modules/utils/isBareModuleIdentifier.js b/packages/unpkg/modules/utils/isBareModuleIdentifier.js index ac9e65b..afe2b3a 100644 --- a/packages/unpkg/modules/utils/isBareModuleIdentifier.js +++ b/packages/unpkg/modules/utils/isBareModuleIdentifier.js @@ -1,11 +1,8 @@ -const URL = require("whatwg-url") +const isLocalModuleIdentifier = require("./isLocalModuleIdentifier") +const isRemoteModuleIdentifier = require("./isRemoteModuleIdentifier") function isBareModuleIdentifier(id) { - return !( - URL.parseURL(id) !== null || // fully qualified URL - id.substr(0, 2) === "//" || // URL w/out protocol - [".", "/"].includes(id.charAt(0)) - ) // local path + return !(isLocalModuleIdentifier(id) || isRemoteModuleIdentifier(id)) } module.exports = isBareModuleIdentifier diff --git a/packages/unpkg/modules/utils/isLocalModuleIdentifier.js b/packages/unpkg/modules/utils/isLocalModuleIdentifier.js new file mode 100644 index 0000000..0c84d73 --- /dev/null +++ b/packages/unpkg/modules/utils/isLocalModuleIdentifier.js @@ -0,0 +1,7 @@ +const isRemoteModuleIdentifier = require("./isRemoteModuleIdentifier") + +function isLocalModuleIdentifier(id) { + return [".", "/"].includes(id.charAt(0)) && !isRemoteModuleIdentifier(id) +} + +module.exports = isLocalModuleIdentifier diff --git a/packages/unpkg/modules/utils/isRemoteModuleIdentifier.js b/packages/unpkg/modules/utils/isRemoteModuleIdentifier.js new file mode 100644 index 0000000..954f35d --- /dev/null +++ b/packages/unpkg/modules/utils/isRemoteModuleIdentifier.js @@ -0,0 +1,10 @@ +const URL = require("whatwg-url") + +function isRemoteModuleIdentifier(id) { + // Fully-qualified URL or URL w/out protocol + return ( + URL.parseURL(id) !== null || (id.substr(0, 2) === "//" && URL.parseURL(`http:${id}`) !== null) + ) +} + +module.exports = isRemoteModuleIdentifier