diff --git a/.changeset/fast-spiders-decide.md b/.changeset/fast-spiders-decide.md new file mode 100644 index 00000000..77ad640f --- /dev/null +++ b/.changeset/fast-spiders-decide.md @@ -0,0 +1,7 @@ +--- +"@chialab/esbuild-plugin-meta-url": patch +"@chialab/esbuild-plugin-worker": patch +"@chialab/esbuild-plugin-html": patch +--- + +Remove node-resolve plugin dependency. diff --git a/packages/esbuild-plugin-html/lib/collectAssets.js b/packages/esbuild-plugin-html/lib/collectAssets.js index 18cfee51..bee9c755 100644 --- a/packages/esbuild-plugin-html/lib/collectAssets.js +++ b/packages/esbuild-plugin-html/lib/collectAssets.js @@ -1,4 +1,4 @@ -import { isRelativeUrl } from '@chialab/node-resolve'; +import { isRelativeUrl } from './utils.js'; /** * @param {import('cheerio').CheerioAPI} $ The cheerio selector. diff --git a/packages/esbuild-plugin-html/lib/collectIcons.js b/packages/esbuild-plugin-html/lib/collectIcons.js index 12b74f70..749c833b 100644 --- a/packages/esbuild-plugin-html/lib/collectIcons.js +++ b/packages/esbuild-plugin-html/lib/collectIcons.js @@ -1,9 +1,9 @@ import { Buffer } from 'buffer'; import path from 'path'; -import { isRelativeUrl } from '@chialab/node-resolve'; import { collectAsset } from './collectAssets.js'; import { generateIcon } from './generateIcon.js'; import Jimp from './generator.js'; +import { isRelativeUrl } from './utils.js'; /** * @typedef {Object} Icon diff --git a/packages/esbuild-plugin-html/lib/collectScreens.js b/packages/esbuild-plugin-html/lib/collectScreens.js index f9661315..a945a1bf 100644 --- a/packages/esbuild-plugin-html/lib/collectScreens.js +++ b/packages/esbuild-plugin-html/lib/collectScreens.js @@ -1,9 +1,9 @@ import { Buffer } from 'buffer'; import path from 'path'; -import { isRelativeUrl } from '@chialab/node-resolve'; import { collectAsset } from './collectAssets.js'; import { generateLaunch } from './generateLaunch.js'; import Jimp from './generator.js'; +import { isRelativeUrl } from './utils.js'; /** * @typedef {Object} Screen diff --git a/packages/esbuild-plugin-html/lib/collectScripts.js b/packages/esbuild-plugin-html/lib/collectScripts.js index 43c46922..564e02a9 100644 --- a/packages/esbuild-plugin-html/lib/collectScripts.js +++ b/packages/esbuild-plugin-html/lib/collectScripts.js @@ -1,5 +1,5 @@ import path from 'path'; -import { isRelativeUrl } from '@chialab/node-resolve'; +import { isRelativeUrl } from './utils.js'; /** * @param {import('cheerio').CheerioAPI} $ The cheerio selector. diff --git a/packages/esbuild-plugin-html/lib/collectStyles.js b/packages/esbuild-plugin-html/lib/collectStyles.js index 2311a4a5..593c4a64 100644 --- a/packages/esbuild-plugin-html/lib/collectStyles.js +++ b/packages/esbuild-plugin-html/lib/collectStyles.js @@ -1,5 +1,5 @@ import path from 'path'; -import { isRelativeUrl } from '@chialab/node-resolve'; +import { isRelativeUrl } from './utils.js'; /** * Collect and bundle each reference. diff --git a/packages/esbuild-plugin-html/lib/collectWebManifest.js b/packages/esbuild-plugin-html/lib/collectWebManifest.js index b9714543..8ad9a942 100644 --- a/packages/esbuild-plugin-html/lib/collectWebManifest.js +++ b/packages/esbuild-plugin-html/lib/collectWebManifest.js @@ -1,8 +1,8 @@ import { Buffer } from 'buffer'; import path from 'path'; -import { isRelativeUrl } from '@chialab/node-resolve'; import { generateIcon } from './generateIcon.js'; import Jimp from './generator.js'; +import { isRelativeUrl } from './utils.js'; const MANIFEST_ICONS = [ { diff --git a/packages/esbuild-plugin-html/lib/utils.js b/packages/esbuild-plugin-html/lib/utils.js new file mode 100644 index 00000000..283afa5d --- /dev/null +++ b/packages/esbuild-plugin-html/lib/utils.js @@ -0,0 +1,20 @@ +import { isAbsolute } from 'path'; + +/** + * Check if the given source is a relative url. + * @param {string | null | undefined} url The source to check. + */ +export function isRelativeUrl(url) { + if (url == null) { + return false; + } + if (isAbsolute(url)) { + return false; + } + try { + new URL(url); + return false; + } catch (err) { + return true; + } +} diff --git a/packages/esbuild-plugin-html/package.json b/packages/esbuild-plugin-html/package.json index c5f5b5ba..617b4500 100644 --- a/packages/esbuild-plugin-html/package.json +++ b/packages/esbuild-plugin-html/package.json @@ -33,8 +33,7 @@ "node": ">=18" }, "dependencies": { - "@chialab/esbuild-rna": "^0.18.1", - "@chialab/node-resolve": "^0.18.0" + "@chialab/esbuild-rna": "^0.18.1" }, "peerDependencies": { "htmlnano": "^2.0.0" diff --git a/packages/esbuild-plugin-html/tsconfig.json b/packages/esbuild-plugin-html/tsconfig.json index ce87fac9..8c8f493c 100644 --- a/packages/esbuild-plugin-html/tsconfig.json +++ b/packages/esbuild-plugin-html/tsconfig.json @@ -10,9 +10,6 @@ "references": [ { "path": "../esbuild-rna" - }, - { - "path": "../node-resolve" } ] } diff --git a/packages/esbuild-plugin-meta-url/lib/index.js b/packages/esbuild-plugin-meta-url/lib/index.js index 976d8c11..aa93ab14 100644 --- a/packages/esbuild-plugin-meta-url/lib/index.js +++ b/packages/esbuild-plugin-meta-url/lib/index.js @@ -4,9 +4,29 @@ import path from 'path'; import { fileURLToPath, pathToFileURL } from 'url'; import { useRna } from '@chialab/esbuild-rna'; import { getBlock, getIdentifierValue, getLocation, parse, TokenType, walk } from '@chialab/estransform'; -import { getSearchParam, isUrl } from '@chialab/node-resolve'; import mime from 'mime-types'; +/** + * Check if the given path is a valid url. + * @param {string} url + */ +function isUrl(url) { + try { + return !!new URL(url); + } catch (err) { + // + } + return false; +} + +/** + * Get hash param (if available) in the url. + * @param {string} source + */ +export function getHashParam(source) { + return new URL(source).searchParams.get('hash') || null; +} + /** * @param {import('@chialab/estransform').TokenProcessor} processor Token processor. * @returns {string|undefined} The path value. @@ -161,7 +181,7 @@ export default function ({ emit = true } = {}) { return; } - const id = getSearchParam(value, 'hash'); + const id = getHashParam(value); if (id && build.isEmittedPath(id)) { return; } diff --git a/packages/esbuild-plugin-meta-url/package.json b/packages/esbuild-plugin-meta-url/package.json index 186034fa..f28ba416 100644 --- a/packages/esbuild-plugin-meta-url/package.json +++ b/packages/esbuild-plugin-meta-url/package.json @@ -32,7 +32,6 @@ "dependencies": { "@chialab/esbuild-rna": "^0.18.1", "@chialab/estransform": "^0.18.0", - "@chialab/node-resolve": "^0.18.0", "mime-types": "^2.1.35" }, "devDependencies": { diff --git a/packages/esbuild-plugin-meta-url/tsconfig.json b/packages/esbuild-plugin-meta-url/tsconfig.json index 533da5f6..1dcce363 100644 --- a/packages/esbuild-plugin-meta-url/tsconfig.json +++ b/packages/esbuild-plugin-meta-url/tsconfig.json @@ -13,9 +13,6 @@ }, { "path": "../estransform" - }, - { - "path": "../node-resolve" } ] } diff --git a/packages/esbuild-plugin-worker/lib/index.js b/packages/esbuild-plugin-worker/lib/index.js index 1988b1ac..8b059932 100644 --- a/packages/esbuild-plugin-worker/lib/index.js +++ b/packages/esbuild-plugin-worker/lib/index.js @@ -1,9 +1,8 @@ import { Buffer } from 'buffer'; import path from 'path'; -import metaUrlPlugin from '@chialab/esbuild-plugin-meta-url'; +import metaUrlPlugin, { getHashParam } from '@chialab/esbuild-plugin-meta-url'; import { useRna } from '@chialab/esbuild-rna'; import { getBlock, getIdentifierValue, getLocation, parse, splitArgs, TokenType, walk } from '@chialab/estransform'; -import { getSearchParam } from '@chialab/node-resolve'; /** * @typedef {{ constructors?: string[], proxy?: boolean, emit?: boolean }} PluginOptions @@ -216,7 +215,7 @@ export default function ({ constructors = ['Worker', 'SharedWorker'], proxy = fa return; } - const id = getSearchParam(value, 'hash'); + const id = getHashParam(value); if (id && build.isEmittedPath(id)) { return; } diff --git a/packages/esbuild-plugin-worker/package.json b/packages/esbuild-plugin-worker/package.json index 1d30b22f..53e05685 100644 --- a/packages/esbuild-plugin-worker/package.json +++ b/packages/esbuild-plugin-worker/package.json @@ -26,8 +26,7 @@ "dependencies": { "@chialab/esbuild-plugin-meta-url": "^0.18.0", "@chialab/esbuild-rna": "^0.18.0", - "@chialab/estransform": "^0.18.0", - "@chialab/node-resolve": "^0.18.0" + "@chialab/estransform": "^0.18.0" }, "devDependencies": { "typescript": "^5.0.0" diff --git a/packages/esbuild-plugin-worker/tsconfig.json b/packages/esbuild-plugin-worker/tsconfig.json index 80691f88..cb83ee71 100644 --- a/packages/esbuild-plugin-worker/tsconfig.json +++ b/packages/esbuild-plugin-worker/tsconfig.json @@ -16,9 +16,6 @@ }, { "path": "../estransform" - }, - { - "path": "../node-resolve" } ] } diff --git a/yarn.lock b/yarn.lock index b053c765..d142f158 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1889,7 +1889,6 @@ __metadata: resolution: "@chialab/esbuild-plugin-html@workspace:packages/esbuild-plugin-html" dependencies: "@chialab/esbuild-rna": ^0.18.1 - "@chialab/node-resolve": ^0.18.0 "@jimp/custom": ^0.22.0 "@jimp/jpeg": ^0.22.0 "@jimp/plugin-resize": ^0.22.0 @@ -1925,7 +1924,6 @@ __metadata: dependencies: "@chialab/esbuild-rna": ^0.18.1 "@chialab/estransform": ^0.18.0 - "@chialab/node-resolve": ^0.18.0 "@types/mime-types": ^2.1.1 esbuild: ^0.19.0 mime-types: ^2.1.35 @@ -2003,7 +2001,6 @@ __metadata: "@chialab/esbuild-plugin-meta-url": ^0.18.0 "@chialab/esbuild-rna": ^0.18.0 "@chialab/estransform": ^0.18.0 - "@chialab/node-resolve": ^0.18.0 typescript: ^5.0.0 languageName: unknown linkType: soft